<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="qvtoperational"
    nsURI="http://www.schema.omg.org/spec/QVT/1.0/qvtoperational" nsPrefix="qvtoperational">
  <eClassifiers xsi:type="ecore:EClass" name="MappingBody" eSuperTypes="#//OperationBody">
    <eStructuralFeatures xsi:type="ecore:EReference" name="initSection" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="endSection" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Helper" eSuperTypes="#//ImperativeOperation">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" eType="ecore:EDataType emof.ecore#//Boolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ResolveExp" eSuperTypes="essentialocl.ecore#//CallExp">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="one" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInverse" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeferred" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="ecore:EClass essentialocl.ecore#//Variable"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="ecore:EClass essentialocl.ecore#//OclExpression"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ResolveInExp" eSuperTypes="#//ResolveExp">
    <eStructuralFeatures xsi:type="ecore:EReference" name="inMapping" eType="#//MappingOperation"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="OperationalTransformation" eSuperTypes="#//Module">
    <eStructuralFeatures xsi:type="ecore:EReference" name="intermediateClass" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Class"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="refined" eType="ecore:EClass qvtrelation.ecore#//RelationalTransformation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="intermediateProperty" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Property"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="modelParameter" upperBound="-1"
        eType="#//ModelParameter" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="relation" upperBound="-1"
        eType="ecore:EClass qvtrelation.ecore#//Relation" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MappingParameter" eSuperTypes="#//VarParameter">
    <eStructuralFeatures xsi:type="ecore:EReference" name="refinedDomain" eType="ecore:EClass qvtrelation.ecore#//RelationDomain"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="extent" eType="#//ModelParameter"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MappingOperation" eSuperTypes="#//ImperativeOperation emof.ecore#//Operation emof.ecore#//NamedElement">
    <eStructuralFeatures xsi:type="ecore:EReference" name="disjunct" upperBound="-1"
        eType="#//MappingOperation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="refinedRelation" eType="ecore:EClass qvtrelation.ecore#//Relation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="merged" upperBound="-1"
        eType="#//MappingOperation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="inherited" upperBound="-1"
        eType="#//MappingOperation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="when" upperBound="-1" eType="ecore:EClass essentialocl.ecore#//OclExpression"
        containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="where" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="MappingCallExp" eSuperTypes="#//ImperativeCallExp">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStrict" eType="ecore:EDataType emof.ecore#//Boolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Constructor" eSuperTypes="#//ImperativeOperation"/>
  <eClassifiers xsi:type="ecore:EClass" name="ContextualProperty" eSuperTypes="emof.ecore#//Property">
    <eStructuralFeatures xsi:type="ecore:EReference" name="context" lowerBound="1"
        eType="ecore:EClass emof.ecore#//Class"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="overridden" eType="ecore:EClass emof.ecore#//Property"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="initExpression" eType="ecore:EClass essentialocl.ecore#//OclExpression"
        containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EntryOperation" eSuperTypes="#//ImperativeOperation"/>
  <eClassifiers xsi:type="ecore:EClass" name="ImperativeCallExp" eSuperTypes="essentialocl.ecore#//OperationCallExp">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isVirtual" eType="ecore:EDataType emof.ecore#//Boolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ImperativeOperation" eSuperTypes="emof.ecore#//Operation">
    <eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//VarParameter"
        containment="true" eOpposite="#//VarParameter/ctxOwner"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
        eType="#//VarParameter" containment="true" eOpposite="#//VarParameter/resOwner"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="overridden" eType="#//ImperativeOperation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//OperationBody"
        containment="true" eOpposite="#//OperationBody/operation"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBlackbox" eType="ecore:EDataType emof.ecore#//Boolean"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="DirectionKind">
    <eLiterals name="in"/>
    <eLiterals name="inout" value="1"/>
    <eLiterals name="out" value="2"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//Module"/>
  <eClassifiers xsi:type="ecore:EClass" name="ModelParameter" eSuperTypes="#//VarParameter"/>
  <eClassifiers xsi:type="ecore:EClass" name="ModelType" eSuperTypes="emof.ecore#//Class emof.ecore#//URIExtent">
    <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Package"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="additionalCondition" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="conformanceKind" eType="ecore:EDataType emof.ecore#//String"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="Module" eSuperTypes="emof.ecore#//Class emof.ecore#//Package">
    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTag" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Tag" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="entry" eType="ecore:EClass emof.ecore#//Operation"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="configProperty" upperBound="-1"
        eType="ecore:EClass emof.ecore#//Property"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="moduleImport" upperBound="-1"
        eType="#//ModuleImport" containment="true" eOpposite="#//ModuleImport/module"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="usedModelType" upperBound="-1"
        eType="#//ModelType"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBlackbox" eType="ecore:EDataType emof.ecore#//Boolean"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedVariable" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//Variable" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ModuleImport" eSuperTypes="emof.ecore#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="binding" upperBound="-1"
        eType="#//ModelType"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="module" eType="#//Module"
        transient="true" eOpposite="#//Module/moduleImport"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="importedModule" lowerBound="1"
        eType="#//Module"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ImportKind"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EEnum" name="ImportKind">
    <eLiterals name="extension"/>
    <eLiterals name="access" value="1"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="VarParameter" eSuperTypes="emof.ecore#//Parameter essentialocl.ecore#//Variable">
    <eStructuralFeatures xsi:type="ecore:EReference" name="ctxOwner" eType="#//ImperativeOperation"
        transient="true" eOpposite="#//ImperativeOperation/context"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="resOwner" eType="#//ImperativeOperation"
        transient="true" eOpposite="#//ImperativeOperation/result"/>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//DirectionKind"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="OperationBody" eSuperTypes="emof.ecore#//Element">
    <eStructuralFeatures xsi:type="ecore:EReference" name="operation" eType="#//ImperativeOperation"
        transient="true" eOpposite="#//ImperativeOperation/body"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="content" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//OclExpression" containment="true"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" upperBound="-1"
        eType="ecore:EClass essentialocl.ecore#//Variable" containment="true"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ConstructorBody" eSuperTypes="#//OperationBody"/>
  <eClassifiers xsi:type="ecore:EClass" name="ObjectExp" eSuperTypes="imperativeocl.ecore#//InstantiationExp">
    <eStructuralFeatures xsi:type="ecore:EReference" name="referredObject" lowerBound="1"
        eType="ecore:EClass essentialocl.ecore#//Variable"/>
    <eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1" eType="#//ConstructorBody"
        containment="true"/>
  </eClassifiers>
</ecore:EPackage>
