<?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.eclipse.org/qvt/1.0.0/Operational"
    nsPrefix="qvtoperational">
  <eSubpackages name="expressions" nsURI="http://www.eclipse.org/qvt/1.0.0/Operational/Expressions"
      nsPrefix="qvtoperational.expr">
    <eClassifiers xsi:type="ecore:EClass" name="Constructor" eSuperTypes="#//expressions/ImperativeOperation">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitConstructor(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/Constructor/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/Constructor/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/Constructor/accept/U"/>
        </eParameters>
      </eOperations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ConstructorBody" eSuperTypes="#//expressions/OperationBody">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitConstructorBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ConstructorBody/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ConstructorBody/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ConstructorBody/accept/U"/>
        </eParameters>
      </eOperations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ContextualProperty" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature #//expressions/VisitableASTNode">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitContextualProperty(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ContextualProperty/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ContextualProperty/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ContextualProperty/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="context" lowerBound="1"
          eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="initExpression" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="overridden" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
    </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="EntryOperation" eSuperTypes="#//expressions/ImperativeOperation">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitEntryOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/EntryOperation/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/EntryOperation/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/EntryOperation/accept/U"/>
        </eParameters>
      </eOperations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Helper" eSuperTypes="#//expressions/ImperativeOperation">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitHelper(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/Helper/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/Helper/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/Helper/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isQuery" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ImperativeCallExp" eSuperTypes="platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OperationCallExp platform:/plugin/org.eclipse.m2m.qvt.oml.ecore.imperativeocl/model/ImperativeOCL.ecore#//ImperativeExpression">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isVirtual" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"
          defaultValueLiteral="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ImperativeOperation" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EOperation #//expressions/VisitableASTNode">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitImperativeOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ImperativeOperation/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ImperativeOperation/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ImperativeOperation/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//expressions/OperationBody"
          containment="true" eOpposite="#//expressions/OperationBody/operation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//expressions/VarParameter"
          containment="true" eOpposite="#//expressions/VarParameter/ctxOwner"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBlackbox" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="overridden" eType="#//expressions/ImperativeOperation">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="overriding"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
          eType="#//expressions/VarParameter" containment="true" eOpposite="#//expressions/VarParameter/resOwner"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="ImportKind">
      <eLiterals name="extension"/>
      <eLiterals name="access" value="1"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Library" eSuperTypes="#//expressions/Module">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitLibrary(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/Library/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/Library/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/Library/accept/U"/>
        </eParameters>
      </eOperations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MappingBody" eSuperTypes="#//expressions/OperationBody">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/MappingBody/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/MappingBody/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/MappingBody/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="endSection" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="initSection" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MappingCallExp" eSuperTypes="#//expressions/ImperativeCallExp">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingCallExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/MappingCallExp/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/MappingCallExp/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/MappingCallExp/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStrict" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MappingOperation" eSuperTypes="#//expressions/ImperativeOperation">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/MappingOperation/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/MappingOperation/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/MappingOperation/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="disjunct" upperBound="-1"
          eType="#//expressions/MappingOperation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="inherited" upperBound="-1"
          eType="#//expressions/MappingOperation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="merged" upperBound="-1"
          eType="#//expressions/MappingOperation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="when" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="where" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="whereOwner"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MappingParameter" eSuperTypes="#//expressions/VarParameter">
      <eStructuralFeatures xsi:type="ecore:EReference" name="extent" eType="#//expressions/ModelParameter"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ModelParameter" eSuperTypes="#//expressions/VarParameter"/>
    <eClassifiers xsi:type="ecore:EClass" name="ModelType" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass #//expressions/VisitableASTNode">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModelType(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ModelType/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ModelType/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ModelType/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="additionalCondition"
          upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="conformanceKind" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" lowerBound="1"
          upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Module" eSuperTypes="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage #//expressions/VisitableASTNode">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModule(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/Module/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/Module/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/Module/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="configProperty" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="entry" eType="#//expressions/EntryOperation"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBlackbox" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"
          unsettable="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="moduleImport" upperBound="-1"
          eType="#//expressions/ModuleImport" containment="true" eOpposite="#//expressions/ModuleImport/module"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTag" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EAnnotation"
          containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
          <details key="body" value="owner"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedVariable" ordered="false"
          upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="usedModelType" upperBound="-1"
          eType="#//expressions/ModelType"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ModuleImport" eSuperTypes="#//expressions/VisitableASTNode platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModuleImport(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ModuleImport/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ModuleImport/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ModuleImport/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="binding" upperBound="-1"
          eType="#//expressions/ModelType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="importedModule" lowerBound="1"
          eType="#//expressions/Module"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//expressions/ImportKind"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="module" eType="#//expressions/Module"
          transient="true" eOpposite="#//expressions/Module/moduleImport"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ObjectExp" eSuperTypes="platform:/plugin/org.eclipse.m2m.qvt.oml.ecore.imperativeocl/model/ImperativeOCL.ecore#//InstantiationExp">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitObjectExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ObjectExp/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ObjectExp/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ObjectExp/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//expressions/ConstructorBody"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredObject" lowerBound="1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OperationBody" eSuperTypes="#//expressions/VisitableASTNode platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitOperationBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/OperationBody/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/OperationBody/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/OperationBody/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="content" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="operation" eType="#//expressions/ImperativeOperation"
          transient="true" eOpposite="#//expressions/ImperativeOperation/body"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="variable" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OperationalTransformation" eSuperTypes="#//expressions/Module">
      <eStructuralFeatures xsi:type="ecore:EReference" name="intermediateClass" upperBound="-1"
          eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="intermediateProperty"
          upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="modelParameter" upperBound="-1"
          eType="#//expressions/ModelParameter" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ResolveExp" eSuperTypes="platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/CallExp">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitResolveExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ResolveExp/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ResolveExp/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ResolveExp/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/OCLExpression"
          containment="true"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeferred" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="isInverse" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="one" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="ecore:EClass platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ResolveInExp" eSuperTypes="#//expressions/ResolveExp">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitResolveInExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/ResolveInExp/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/ResolveInExp/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/ResolveInExp/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="inMapping" eType="#//expressions/MappingOperation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VarParameter" eSuperTypes="platform:/plugin/org.eclipse.ocl.ecore/model/OCLEcore.ecore#//ecore/Variable platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EParameter">
      <eOperations name="accept">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="body" value="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitVarParameter(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);"/>
        </eAnnotations>
        <eGenericType eTypeParameter="#//expressions/VarParameter/accept/T"/>
        <eTypeParameters name="T"/>
        <eTypeParameters name="U">
          <eBounds eClassifier="ecore:EClass platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitor">
            <eTypeArguments eTypeParameter="#//expressions/VarParameter/accept/T"/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
            <eTypeArguments/>
          </eBounds>
        </eTypeParameters>
        <eParameters name="v">
          <eGenericType eTypeParameter="#//expressions/VarParameter/accept/U"/>
        </eParameters>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ctxOwner" eType="#//expressions/ImperativeOperation"
          transient="true" eOpposite="#//expressions/ImperativeOperation/context"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//expressions/DirectionKind"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="resOwner" eType="#//expressions/ImperativeOperation"
          transient="true" eOpposite="#//expressions/ImperativeOperation/result"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="VisitableASTNode" abstract="true"
        interface="true" eSuperTypes="platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/Visitable platform:/plugin/org.eclipse.ocl/model/OCL.ecore#//utilities/ASTNode"/>
  </eSubpackages>
</ecore:EPackage>
