blob: 6c6e24624165d8c7befc4fa6025cda51c544e934 [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<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" xmi:id="FlatQVT" name="FlatQVT" nsURI="http://schema.omg.org/spec/QVT/1.1/flatqvt.xml" nsPrefix="flatqvt">
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AltExp" name="AltExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AltExp.body" name="body" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AltExp.condition" name="condition" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altCondOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.AnyType" name="AnyType" eSuperTypes="EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Area" name="Area" abstract="true">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Area.bottomPattern" name="bottomPattern" lowerBound="1" eType="QVTCore.BottomPattern" containment="true" resolveProxies="false" eOpposite="QVTCore.BottomPattern.area"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Area.guardPattern" name="guardPattern" lowerBound="1" eType="QVTCore.GuardPattern" containment="true" resolveProxies="false" eOpposite="QVTCore.GuardPattern.area"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AssertExp" name="AssertExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssertExp.assertion" name="assertion" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assertOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssertExp.log" name="log" eType="ImperativeOCL.LogExp" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.AssertExp.severity" name="severity" eType="ImperativeOCL.SeverityKind" defaultValueLiteral="error"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.AssignExp" name="AssignExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.defaultValue" name="defaultValue" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="defaultOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.AssignExp.isReset" name="isReset" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.left" name="left" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="leftOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.AssignExp.value" name="value" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Assignment" name="Assignment" abstract="true" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Assignment.bottomPattern" name="bottomPattern" lowerBound="1" eType="QVTCore.BottomPattern" transient="true" resolveProxies="false" eOpposite="QVTCore.BottomPattern.assignment"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTCore.Assignment.isDefault" name="isDefault" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Assignment.value" name="value" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valueAssignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BagType" name="BagType" eSuperTypes="EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.BlockExp" name="BlockExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.BlockExp.body" name="body" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="blockOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Boolean" name="Boolean" instanceClassName="java.lang.Boolean"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BooleanLiteralExp" name="BooleanLiteralExp" eSuperTypes="EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.BooleanLiteralExp.booleanSymbol" name="booleanSymbol" eType="PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.BottomPattern" name="BottomPattern" eSuperTypes="QVTCore.CorePattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.area" name="area" lowerBound="1" eType="QVTCore.Area" transient="true" resolveProxies="false" eOpposite="QVTCore.Area.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.assignment" name="assignment" ordered="false" upperBound="-1" eType="QVTCore.Assignment" containment="true" resolveProxies="false" eOpposite="QVTCore.Assignment.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.enforcementOperation" name="enforcementOperation" ordered="false" upperBound="-1" eType="QVTCore.EnforcementOperation" containment="true" resolveProxies="false" eOpposite="QVTCore.EnforcementOperation.bottomPattern"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.BottomPattern.realizedVariable" name="realizedVariable" ordered="false" upperBound="-1" eType="QVTCore.RealizedVariable" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.BreakExp" name="BreakExp" eSuperTypes="ImperativeOCL.ImperativeExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CallExp" name="CallExp" abstract="true" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CallExp.source" name="source" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="appliedElement"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.CatchExp" name="CatchExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.CatchExp.body" name="body" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.CatchExp.exception" name="exception" upperBound="-1" eType="EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tryExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Class" name="Class" eSuperTypes="EMOF.Type">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Class.isAbstract" name="isAbstract" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.ownedAttribute" name="ownedAttribute" upperBound="-1" eType="EMOF.Property" containment="true" resolveProxies="false" eOpposite="EMOF.Property.class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.ownedOperation" name="ownedOperation" upperBound="-1" eType="EMOF.Operation" containment="true" resolveProxies="false" eOpposite="EMOF.Operation.class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Class.superClass" name="superClass" ordered="false" upperBound="-1" eType="EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionItem" name="CollectionItem" eSuperTypes="EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionItem.item" name="item" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="EssentialOCL.CollectionKind" name="CollectionKind">
<eLiterals xmi:id="EssentialOCL.CollectionKind.Set" name="Set"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.OrderedSet" name="OrderedSet" value="1"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Bag" name="Bag" value="2"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Sequence" name="Sequence" value="3"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Collection" name="Collection" value="4"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralExp" name="CollectionLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.CollectionLiteralExp.kind" name="kind" eType="EssentialOCL.CollectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralExp.part" name="part" ordered="false" upperBound="-1" eType="EssentialOCL.CollectionLiteralPart" containment="true" resolveProxies="false" eOpposite="EssentialOCL.CollectionLiteralPart.collectionLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralPart" name="CollectionLiteralPart" abstract="true" eSuperTypes="EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralPart.collectionLiteralExp" name="collectionLiteralExp" lowerBound="1" eType="EssentialOCL.CollectionLiteralExp" transient="true" resolveProxies="false" eOpposite="EssentialOCL.CollectionLiteralExp.part"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionRange" name="CollectionRange" eSuperTypes="EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.first" name="first" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="firstOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.last" name="last" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lastOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.CollectionTemplateExp" name="CollectionTemplateExp" eSuperTypes="QVTTemplate.TemplateExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.member" name="member" ordered="false" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="listContainer"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.referredCollectionType" name="referredCollectionType" lowerBound="1" eType="EssentialOCL.CollectionType"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.CollectionTemplateExp.rest" name="rest" eType="EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="matchingExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionType" name="CollectionType" eSuperTypes="EMOF.DataType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionType.elementType" name="elementType" lowerBound="1" eType="EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Comment" name="Comment" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Comment.annotatedElement" name="annotatedElement" ordered="false" upperBound="-1" eType="EMOF.NamedElement"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Comment.body" name="body" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ComputeExp" name="ComputeExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ComputeExp.body" name="body" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="computeOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ComputeExp.returnedElement" name="returnedElement" lowerBound="1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="computeOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Constructor" name="Constructor" eSuperTypes="QVTOperational.ImperativeOperation"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ConstructorBody" name="ConstructorBody" eSuperTypes="QVTOperational.OperationBody"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ContextualProperty" name="ContextualProperty" eSuperTypes="EMOF.Property">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.context" name="context" lowerBound="1" eType="EMOF.Class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.initExpression" name="initExpression" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ownerProperty"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ContextualProperty.overridden" name="overridden" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriding"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ContinueExp" name="ContinueExp" eSuperTypes="ImperativeOCL.ImperativeExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.CoreDomain" name="CoreDomain" eSuperTypes="QVTBase.Domain QVTCore.Area"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.CorePattern" name="CorePattern" eSuperTypes="QVTBase.Pattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.CorePattern.variable" name="variable" ordered="false" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.DataType" name="DataType" eSuperTypes="EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictLiteralExp" name="DictLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralExp.part" name="part" ordered="false" upperBound="-1" eType="ImperativeOCL.DictLiteralPart" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="partOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictLiteralPart" name="DictLiteralPart" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralPart.key" name="key" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="keyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictLiteralPart.value" name="value" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="valOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.DictionaryType" name="DictionaryType" eSuperTypes="EssentialOCL.CollectionType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.DictionaryType.keyType" name="keyType" eType="EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="keyDict"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTOperational.DirectionKind" name="DirectionKind">
<eLiterals xmi:id="QVTOperational.DirectionKind.in" name="in"/>
<eLiterals xmi:id="QVTOperational.DirectionKind.inout" name="inout" value="1"/>
<eLiterals xmi:id="QVTOperational.DirectionKind.out" name="out" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Domain" name="Domain" abstract="true" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTBase.Domain.isCheckable" name="isCheckable" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTBase.Domain.isEnforceable" name="isEnforceable" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Domain.rule" name="rule" lowerBound="1" eType="QVTBase.Rule" transient="true" resolveProxies="false" eOpposite="QVTBase.Rule.domain"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Domain.typedModel" name="typedModel" eType="QVTBase.TypedModel"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.DomainPattern" name="DomainPattern" eSuperTypes="QVTBase.Pattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.DomainPattern.templateExpression" name="templateExpression" eType="QVTTemplate.TemplateExp" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Element" name="Element" abstract="true" eSuperTypes="EMOF.Object">
<eOperations xmi:id="EMOF.Element.container" name="container" eType="EMOF.Element"/>
<eOperations xmi:id="EMOF.Element.equals" name="equals" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Element.equals.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.get" name="get" eType="EMOF.Object">
<eParameters xmi:id="EMOF.Element.get.property" name="property" eType="EMOF.Property"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.getMetaClass" name="getMetaClass" eType="EMOF.Class"/>
<eOperations xmi:id="EMOF.Element.isSet" name="isSet" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Element.isSet.property" name="property" eType="EMOF.Property"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.set" name="set">
<eParameters xmi:id="EMOF.Element.set.property" name="property" eType="EMOF.Property"/>
<eParameters xmi:id="EMOF.Element.set.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Element.unset" name="unset">
<eParameters xmi:id="EMOF.Element.unset.property" name="property" eType="EMOF.Property"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Element.ownedComment" name="ownedComment" ordered="false" upperBound="-1" eType="EMOF.Comment" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTCore.EnforcementMode" name="EnforcementMode">
<eLiterals xmi:id="QVTCore.EnforcementMode.Creation" name="Creation"/>
<eLiterals xmi:id="QVTCore.EnforcementMode.Deletion" name="Deletion" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.EnforcementOperation" name="EnforcementOperation" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.EnforcementOperation.bottomPattern" name="bottomPattern" eType="QVTCore.BottomPattern" transient="true" resolveProxies="false" eOpposite="QVTCore.BottomPattern.enforcementOperation"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTCore.EnforcementOperation.enforcementMode" name="enforcementMode" eType="QVTCore.EnforcementMode"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.EnforcementOperation.operationCallExp" name="operationCallExp" lowerBound="1" eType="EssentialOCL.OperationCallExp" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.EntryOperation" name="EntryOperation" eSuperTypes="QVTOperational.ImperativeOperation"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.EnumLiteralExp" name="EnumLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.EnumLiteralExp.referredEnumLiteral" name="referredEnumLiteral" eType="EMOF.EnumerationLiteral">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="literalExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Enumeration" name="Enumeration" eSuperTypes="EMOF.DataType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Enumeration.ownedLiteral" name="ownedLiteral" upperBound="-1" eType="EMOF.EnumerationLiteral" containment="true" resolveProxies="false" eOpposite="EMOF.EnumerationLiteral.enumeration"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.EnumerationLiteral" name="EnumerationLiteral" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.EnumerationLiteral.enumeration" name="enumeration" eType="EMOF.Enumeration" transient="true" resolveProxies="false" eOpposite="EMOF.Enumeration.ownedLiteral"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.ExpressionInOcl" name="ExpressionInOcl" eSuperTypes="EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.bodyExpression" name="bodyExpression" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="topExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.contextVariable" name="contextVariable" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="selfOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.generatedType" name="generatedType" ordered="false" upperBound="-1" eType="EMOF.Type" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.parameterVariable" name="parameterVariable" ordered="false" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="varOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.resultVariable" name="resultVariable" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resultOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Extent" name="Extent" eSuperTypes="EMOF.Object">
<eOperations xmi:id="EMOF.Extent.elements" name="elements" eType="EMOF.ReflectiveSequence"/>
<eOperations xmi:id="EMOF.Extent.useContainment" name="useContainment" eType="PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Factory" name="Factory" eSuperTypes="EMOF.Element">
<eOperations xmi:id="EMOF.Factory.convertToString" name="convertToString" eType="PrimitiveTypes.String">
<eParameters xmi:id="EMOF.Factory.convertToString.dataType" name="dataType" eType="EMOF.DataType"/>
<eParameters xmi:id="EMOF.Factory.convertToString.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.Factory.create" name="create" eType="EMOF.Element">
<eParameters xmi:id="EMOF.Factory.create.metaClass" name="metaClass" eType="EMOF.Class"/>
</eOperations>
<eOperations xmi:id="EMOF.Factory.createFromString" name="createFromString" eType="EMOF.Object">
<eParameters xmi:id="EMOF.Factory.createFromString.dataType" name="dataType" eType="EMOF.DataType"/>
<eParameters xmi:id="EMOF.Factory.createFromString.string" name="string" eType="PrimitiveTypes.String"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Factory.package" name="package" lowerBound="1" eType="EMOF.Package"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.FeatureCallExp" name="FeatureCallExp" abstract="true" eSuperTypes="EssentialOCL.CallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ForExp" name="ForExp" eSuperTypes="ImperativeOCL.ImperativeLoopExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Function" name="Function" eSuperTypes="EMOF.Operation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Function.queryExpression" name="queryExpression" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.FunctionParameter" name="FunctionParameter" eSuperTypes="EssentialOCL.Variable EMOF.Parameter"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.GuardPattern" name="GuardPattern" eSuperTypes="QVTCore.CorePattern">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.GuardPattern.area" name="area" lowerBound="1" eType="QVTCore.Area" transient="true" resolveProxies="false" eOpposite="QVTCore.Area.guardPattern"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Helper" name="Helper" eSuperTypes="QVTOperational.ImperativeOperation">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.Helper.isQuery" name="isQuery" eType="PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IfExp" name="IfExp" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.condition" name="condition" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ifOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.elseExpression" name="elseExpression" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elseOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.thenExpression" name="thenExpression" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="thenOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ImperativeCallExp" name="ImperativeCallExp" eSuperTypes="EssentialOCL.OperationCallExp ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ImperativeCallExp.isVirtual" name="isVirtual" eType="PrimitiveTypes.Boolean" defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeExpression" name="ImperativeExpression" abstract="true" eSuperTypes="EssentialOCL.OclExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeIterateExp" name="ImperativeIterateExp" eSuperTypes="ImperativeOCL.ImperativeLoopExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ImperativeIterateExp.target" name="target" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tgtOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ImperativeLoopExp" name="ImperativeLoopExp" abstract="true" eSuperTypes="EssentialOCL.LoopExp ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ImperativeLoopExp.condition" name="condition" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopCondOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ImperativeOperation" name="ImperativeOperation" eSuperTypes="EMOF.Operation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.body" name="body" eType="QVTOperational.OperationBody" containment="true" resolveProxies="false" eOpposite="QVTOperational.OperationBody.operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.context" name="context" eType="QVTOperational.VarParameter" containment="true" resolveProxies="false" eOpposite="QVTOperational.VarParameter.ctxOwner"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ImperativeOperation.isBlackbox" name="isBlackbox" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ImperativeOperation.overridden" name="overridden" eType="QVTOperational.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" xmi:id="QVTOperational.ImperativeOperation.result" name="result" upperBound="-1" eType="QVTOperational.VarParameter" containment="true" resolveProxies="false" eOpposite="QVTOperational.VarParameter.resOwner"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="QVTOperational.ImportKind" name="ImportKind">
<eLiterals xmi:id="QVTOperational.ImportKind.extension" name="extension"/>
<eLiterals xmi:id="QVTOperational.ImportKind.access" name="access" value="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.InstantiationExp" name="InstantiationExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.argument" name="argument" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="argOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.extent" name="extent" eType="EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.InstantiationExp.instantiatedClass" name="instantiatedClass" lowerBound="1" eType="EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Integer" name="Integer" instanceClassName="java.lang.Integer"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IntegerLiteralExp" name="IntegerLiteralExp" eSuperTypes="EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.IntegerLiteralExp.integerSymbol" name="integerSymbol" eType="PrimitiveTypes.Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidLiteralExp" name="InvalidLiteralExp" eSuperTypes="EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidType" name="InvalidType" eSuperTypes="EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IterateExp" name="IterateExp" eSuperTypes="EssentialOCL.LoopExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IterateExp.result" name="result" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="baseExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IteratorExp" name="IteratorExp" eSuperTypes="EssentialOCL.LoopExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.Key" name="Key" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.identifies" name="identifies" lowerBound="1" eType="EMOF.Class"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.oppositePart" name="oppositePart" ordered="false" upperBound="-1" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="oppositeKey"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.part" name="part" ordered="false" upperBound="-1" eType="EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Key.transformation" name="transformation" eType="QVTRelation.RelationalTransformation" transient="true" resolveProxies="false" eOpposite="QVTRelation.RelationalTransformation.ownedKey"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LetExp" name="LetExp" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.in" name="in" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.variable" name="variable" lowerBound="1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false" eOpposite="EssentialOCL.Variable.letExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Library" name="Library" eSuperTypes="QVTOperational.Module"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ListLiteralExp" name="ListLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ListLiteralExp.element" name="element" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elementOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ListType" name="ListType" eSuperTypes="EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LiteralExp" name="LiteralExp" abstract="true" eSuperTypes="EssentialOCL.OclExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.LogExp" name="LogExp" eSuperTypes="EssentialOCL.OperationCallExp ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.LogExp.condition" name="condition" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="logOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LoopExp" name="LoopExp" abstract="true" eSuperTypes="EssentialOCL.CallExp EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.body" name="body" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.iterator" name="iterator" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.Mapping" name="Mapping" eSuperTypes="QVTBase.Rule QVTCore.Area">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.context" name="context" eType="QVTCore.Mapping" transient="true" resolveProxies="false" eOpposite="QVTCore.Mapping.local"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.local" name="local" ordered="false" upperBound="-1" eType="QVTCore.Mapping" containment="true" resolveProxies="false" eOpposite="QVTCore.Mapping.context"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.refinement" name="refinement" ordered="false" upperBound="-1" eType="QVTCore.Mapping" eOpposite="QVTCore.Mapping.specification"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.Mapping.specification" name="specification" ordered="false" upperBound="-1" eType="QVTCore.Mapping" eOpposite="QVTCore.Mapping.refinement"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingBody" name="MappingBody" eSuperTypes="QVTOperational.OperationBody">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingBody.endSection" name="endSection" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="endOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingBody.initSection" name="initSection" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="initOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingCallExp" name="MappingCallExp" eSuperTypes="QVTOperational.ImperativeCallExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.MappingCallExp.isStrict" name="isStrict" eType="PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.MappingOperation" name="MappingOperation" eSuperTypes="QVTOperational.ImperativeOperation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.disjunct" name="disjunct" upperBound="-1" eType="QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="disjuncter"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.inherited" name="inherited" upperBound="-1" eType="QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="inheriting"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.merged" name="merged" upperBound="-1" eType="QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="merging"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.refinedRelation" name="refinedRelation" eType="QVTRelation.Relation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refiningOperation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.when" name="when" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whenOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingOperation.where" name="where" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<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" xmi:id="QVTOperational.MappingParameter" name="MappingParameter" eSuperTypes="QVTOperational.VarParameter">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingParameter.extent" name="extent" eType="QVTOperational.ModelParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.MappingParameter.referredDomain" name="referredDomain" eType="QVTRelation.RelationDomain">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringParameter"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModelParameter" name="ModelParameter" eSuperTypes="QVTOperational.VarParameter"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModelType" name="ModelType" eSuperTypes="EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModelType.additionalCondition" name="additionalCondition" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="condOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ModelType.conformanceKind" name="conformanceKind" eType="PrimitiveTypes.String" defaultValueLiteral="effective"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModelType.metamodel" name="metamodel" lowerBound="1" upperBound="-1" eType="EMOF.Package"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.Module" name="Module" eSuperTypes="EMOF.Class EMOF.Package">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.configProperty" name="configProperty" upperBound="-1" eType="EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.entry" name="entry" eType="QVTOperational.EntryOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="entryContext"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.Module.isBlackbox" name="isBlackbox" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.moduleImport" name="moduleImport" upperBound="-1" eType="QVTOperational.ModuleImport" containment="true" resolveProxies="false" eOpposite="QVTOperational.ModuleImport.module"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.ownedTag" name="ownedTag" upperBound="-1" eType="EMOF.Tag" containment="true" resolveProxies="false">
<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" xmi:id="QVTOperational.Module.ownedVariable" name="ownedVariable" ordered="false" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="variableOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.Module.usedModelType" name="usedModelType" upperBound="-1" eType="QVTOperational.ModelType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ModuleImport" name="ModuleImport" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.binding" name="binding" upperBound="-1" eType="QVTOperational.ModelType"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.importedModule" name="importedModule" lowerBound="1" eType="QVTOperational.Module">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="importingElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ModuleImport.kind" name="kind" eType="QVTOperational.ImportKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ModuleImport.module" name="module" eType="QVTOperational.Module" transient="true" resolveProxies="false" eOpposite="QVTOperational.Module.moduleImport"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.MultiplicityElement" name="MultiplicityElement" abstract="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.isOrdered" name="isOrdered" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.isUnique" name="isUnique" eType="PrimitiveTypes.Boolean" defaultValueLiteral="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.lower" name="lower" eType="PrimitiveTypes.Integer" defaultValueLiteral="1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.MultiplicityElement.upper" name="upper" eType="PrimitiveTypes.UnlimitedNatural" defaultValueLiteral="1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.NamedElement" name="NamedElement" abstract="true" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.NamedElement.name" name="name" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NavigationCallExp" name="NavigationCallExp" eSuperTypes="EssentialOCL.FeatureCallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NullLiteralExp" name="NullLiteralExp" eSuperTypes="EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NumericLiteralExp" name="NumericLiteralExp" abstract="true" eSuperTypes="EssentialOCL.PrimitiveLiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Object" name="Object"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ObjectExp" name="ObjectExp" eSuperTypes="ImperativeOCL.InstantiationExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ObjectExp.body" name="body" lowerBound="1" eType="QVTOperational.ConstructorBody" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ObjectExp.referredObject" name="referredObject" lowerBound="1" eType="EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.ObjectTemplateExp" name="ObjectTemplateExp" eSuperTypes="QVTTemplate.TemplateExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.ObjectTemplateExp.part" name="part" ordered="false" upperBound="-1" eType="QVTTemplate.PropertyTemplateItem" containment="true" resolveProxies="false" eOpposite="QVTTemplate.PropertyTemplateItem.objContainer"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.ObjectTemplateExp.referredClass" name="referredClass" lowerBound="1" eType="EMOF.Class"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OclExpression" name="OclExpression" abstract="true" eSuperTypes="EMOF.TypedElement"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Operation" name="Operation" eSuperTypes="EMOF.TypedElement EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.class" name="class" eType="EMOF.Class" transient="true" resolveProxies="false" eOpposite="EMOF.Class.ownedOperation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.ownedParameter" name="ownedParameter" upperBound="-1" eType="EMOF.Parameter" containment="true" resolveProxies="false" eOpposite="EMOF.Parameter.operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Operation.raisedException" name="raisedException" ordered="false" upperBound="-1" eType="EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.OperationBody" name="OperationBody" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.content" name="content" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="contentOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.operation" name="operation" eType="QVTOperational.ImperativeOperation" transient="true" resolveProxies="false" eOpposite="QVTOperational.ImperativeOperation.body"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationBody.variable" name="variable" ordered="false" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="opBody"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OperationCallExp" name="OperationCallExp" eSuperTypes="EssentialOCL.FeatureCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.argument" name="argument" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="parentCall"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.referredOperation" name="referredOperation" eType="EMOF.Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.OperationalTransformation" name="OperationalTransformation" eSuperTypes="QVTOperational.Module">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.intermediateClass" name="intermediateClass" upperBound="-1" eType="EMOF.Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.intermediateProperty" name="intermediateProperty" upperBound="-1" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tranfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.modelParameter" name="modelParameter" upperBound="-1" eType="QVTOperational.ModelParameter" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="module"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.refined" name="refined" eType="QVTRelation.RelationalTransformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refinement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.OperationalTransformation.relation" name="relation" upperBound="-1" eType="QVTRelation.Relation" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.OppositePropertyCallExp" name="OppositePropertyCallExp" eSuperTypes="EssentialOCL.PropertyCallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OrderedSetType" name="OrderedSetType" eSuperTypes="EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleLiteralExp" name="OrderedTupleLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleLiteralExp.part" name="part" upperBound="-1" eType="ImperativeOCL.OrderedTupleLiteralPart" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="partOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleLiteralPart" name="OrderedTupleLiteralPart" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleLiteralPart.value" name="value" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupValOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.OrderedTupleType" name="OrderedTupleType" eSuperTypes="EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.OrderedTupleType.elementType" name="elementType" upperBound="-1" eType="EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="eltTuple"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Package" name="Package" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.nestedPackage" name="nestedPackage" ordered="false" upperBound="-1" eType="EMOF.Package" containment="true" resolveProxies="false" eOpposite="EMOF.Package.nestingPackage"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.nestingPackage" name="nestingPackage" eType="EMOF.Package" transient="true" resolveProxies="false" eOpposite="EMOF.Package.nestedPackage"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Package.ownedType" name="ownedType" ordered="false" upperBound="-1" eType="EMOF.Type" containment="true" resolveProxies="false" eOpposite="EMOF.Type.package"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Package.uri" name="uri" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Parameter" name="Parameter" eSuperTypes="EMOF.TypedElement EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Parameter.operation" name="operation" eType="EMOF.Operation" transient="true" resolveProxies="false" eOpposite="EMOF.Operation.ownedParameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Pattern" name="Pattern" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Pattern.bindsTo" name="bindsTo" ordered="false" upperBound="-1" eType="EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Pattern.predicate" name="predicate" ordered="false" upperBound="-1" eType="QVTBase.Predicate" containment="true" resolveProxies="false" eOpposite="QVTBase.Predicate.pattern"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Predicate" name="Predicate" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Predicate.conditionExpression" name="conditionExpression" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Predicate.pattern" name="pattern" lowerBound="1" eType="QVTBase.Pattern" transient="true" resolveProxies="false" eOpposite="QVTBase.Pattern.predicate"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PrimitiveLiteralExp" name="PrimitiveLiteralExp" abstract="true" eSuperTypes="EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.PrimitiveType" name="PrimitiveType" eSuperTypes="EMOF.DataType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Property" name="Property" eSuperTypes="EMOF.TypedElement EMOF.MultiplicityElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Property.class" name="class" eType="EMOF.Class" transient="true" resolveProxies="false" eOpposite="EMOF.Class.ownedAttribute"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.default" name="default" eType="PrimitiveTypes.String"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isComposite" name="isComposite" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isDerived" name="isDerived" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isID" name="isID" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Property.isReadOnly" name="isReadOnly" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Property.opposite" name="opposite" eType="EMOF.Property"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.PropertyAssignment" name="PropertyAssignment" eSuperTypes="QVTCore.Assignment">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.PropertyAssignment.slotExpression" name="slotExpression" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="slotAssignment"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.PropertyAssignment.targetProperty" name="targetProperty" lowerBound="1" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PropertyCallExp" name="PropertyCallExp" eSuperTypes="EssentialOCL.NavigationCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.PropertyCallExp.referredProperty" name="referredProperty" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.PropertyTemplateItem" name="PropertyTemplateItem" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTTemplate.PropertyTemplateItem.isOpposite" name="isOpposite" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.objContainer" name="objContainer" lowerBound="1" eType="QVTTemplate.ObjectTemplateExp" transient="true" resolveProxies="false" eOpposite="QVTTemplate.ObjectTemplateExp.part"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.referredProperty" name="referredProperty" lowerBound="1" eType="EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="propertyItem"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.PropertyTemplateItem.value" name="value" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="propertyItem"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.RaiseExp" name="RaiseExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.RaiseExp.argument" name="argument" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.RaiseExp.exception" name="exception" lowerBound="1" eType="EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="raiseExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.Real" name="Real" instanceClassName="java.lang.Float"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.RealLiteralExp" name="RealLiteralExp" eSuperTypes="EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.RealLiteralExp.realSymbol" name="realSymbol" eType="PrimitiveTypes.Real"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.RealizedVariable" name="RealizedVariable" eSuperTypes="EssentialOCL.Variable"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.ReflectiveCollection" name="ReflectiveCollection" eSuperTypes="EMOF.Object">
<eOperations xmi:id="EMOF.ReflectiveCollection.add" name="add" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.add.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.addAll" name="addAll" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.addAll.objects" name="objects" eType="EMOF.ReflectiveSequence"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.clear" name="clear"/>
<eOperations xmi:id="EMOF.ReflectiveCollection.remove" name="remove" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.ReflectiveCollection.remove.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveCollection.size" name="size" eType="PrimitiveTypes.Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.ReflectiveSequence" name="ReflectiveSequence" eSuperTypes="EMOF.ReflectiveCollection">
<eOperations xmi:id="EMOF.ReflectiveSequence.add" name="add">
<eParameters xmi:id="EMOF.ReflectiveSequence.add.index" name="index" eType="PrimitiveTypes.Integer"/>
<eParameters xmi:id="EMOF.ReflectiveSequence.add.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.get" name="get" eType="EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.get.index" name="index" eType="PrimitiveTypes.Integer"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.remove" name="remove" eType="EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.remove.index" name="index" eType="PrimitiveTypes.Integer"/>
</eOperations>
<eOperations xmi:id="EMOF.ReflectiveSequence.set" name="set" eType="EMOF.Object">
<eParameters xmi:id="EMOF.ReflectiveSequence.set.index" name="index" eType="PrimitiveTypes.Integer"/>
<eParameters xmi:id="EMOF.ReflectiveSequence.set.object" name="object" eType="EMOF.Object"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.Relation" name="Relation" eSuperTypes="QVTBase.Rule">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTRelation.Relation.isTopLevel" name="isTopLevel" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.operationalImpl" name="operationalImpl" ordered="false" upperBound="-1" eType="QVTRelation.RelationImplementation" containment="true" resolveProxies="false" eOpposite="QVTRelation.RelationImplementation.relation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.variable" name="variable" ordered="false" upperBound="-1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.when" name="when" eType="QVTBase.Pattern" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whenOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.Relation.where" name="where" eType="QVTBase.Pattern" containment="true" resolveProxies="false">
<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" xmi:id="QVTRelation.RelationCallExp" name="RelationCallExp" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationCallExp.argument" name="argument" lowerBound="2" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationCallExp.referredRelation" name="referredRelation" lowerBound="1" eType="QVTRelation.Relation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationDomain" name="RelationDomain" eSuperTypes="QVTBase.Domain">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomain.defaultAssignment" name="defaultAssignment" ordered="false" upperBound="-1" eType="QVTRelation.RelationDomainAssignment" containment="true" resolveProxies="false">
<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" xmi:id="QVTRelation.RelationDomain.pattern" name="pattern" eType="QVTRelation.DomainPattern" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomain.rootVariable" name="rootVariable" lowerBound="1" eType="EssentialOCL.Variable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationDomainAssignment" name="RelationDomainAssignment" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomainAssignment.valueExp" name="valueExp" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainAssignment"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationDomainAssignment.variable" name="variable" lowerBound="1" eType="EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainAssignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationImplementation" name="RelationImplementation" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.impl" name="impl" lowerBound="1" eType="EMOF.Operation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.inDirectionOf" name="inDirectionOf" lowerBound="1" eType="QVTBase.TypedModel"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationImplementation.relation" name="relation" eType="QVTRelation.Relation" transient="true" resolveProxies="false" eOpposite="QVTRelation.Relation.operationalImpl"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTRelation.RelationalTransformation" name="RelationalTransformation" eSuperTypes="QVTBase.Transformation">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTRelation.RelationalTransformation.ownedKey" name="ownedKey" ordered="false" upperBound="-1" eType="QVTRelation.Key" containment="true" resolveProxies="false" eOpposite="QVTRelation.Key.transformation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ResolveExp" name="ResolveExp" eSuperTypes="EssentialOCL.CallExp ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveExp.condition" name="condition" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.isDeferred" name="isDeferred" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.isInverse" name="isInverse" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.ResolveExp.one" name="one" eType="PrimitiveTypes.Boolean"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveExp.target" name="target" eType="EssentialOCL.Variable" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.ResolveInExp" name="ResolveInExp" eSuperTypes="QVTOperational.ResolveExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.ResolveInExp.inMapping" name="inMapping" eType="QVTOperational.MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resolveExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.ReturnExp" name="ReturnExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.ReturnExp.value" name="value" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Rule" name="Rule" abstract="true" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.domain" name="domain" upperBound="-1" eType="QVTBase.Domain" containment="true" resolveProxies="false" eOpposite="QVTBase.Domain.rule"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.overrides" name="overrides" eType="QVTBase.Rule">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriden"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Rule.transformation" name="transformation" eType="QVTBase.Transformation" transient="true" resolveProxies="false" eOpposite="QVTBase.Transformation.rule"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SequenceType" name="SequenceType" eSuperTypes="EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SetType" name="SetType" eSuperTypes="EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="ImperativeOCL.SeverityKind" name="SeverityKind">
<eLiterals xmi:id="ImperativeOCL.SeverityKind.error" name="error"/>
<eLiterals xmi:id="ImperativeOCL.SeverityKind.warning" name="warning" value="1"/>
<eLiterals xmi:id="ImperativeOCL.SeverityKind.fatal" name="fatal" value="2"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.String" name="String" instanceClassName="java.lang.String"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.StringLiteralExp" name="StringLiteralExp" eSuperTypes="EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.StringLiteralExp.stringSymbol" name="stringSymbol" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.SwitchExp" name="SwitchExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.SwitchExp.alternativePart" name="alternativePart" upperBound="-1" eType="ImperativeOCL.AltExp" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="altOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.SwitchExp.elsePart" name="elsePart" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elsePartOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Tag" name="Tag" eSuperTypes="EMOF.Element">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Tag.element" name="element" ordered="false" upperBound="-1" eType="EMOF.Element"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Tag.name" name="name" eType="PrimitiveTypes.String"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EMOF.Tag.value" name="value" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTTemplate.TemplateExp" name="TemplateExp" abstract="true" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.TemplateExp.bindsTo" name="bindsTo" eType="EssentialOCL.Variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTTemplate.TemplateExp.where" name="where" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TemplateParameterType" name="TemplateParameterType" eSuperTypes="EMOF.Type">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.TemplateParameterType.specification" name="specification" eType="PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.Transformation" name="Transformation" eSuperTypes="EMOF.Class EMOF.Package">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.extends" name="extends" eType="QVTBase.Transformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extendedBy"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.modelParameter" name="modelParameter" upperBound="-1" eType="QVTBase.TypedModel" containment="true" resolveProxies="false" eOpposite="QVTBase.TypedModel.transformation"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.ownedTag" name="ownedTag" ordered="false" upperBound="-1" eType="EMOF.Tag" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.Transformation.rule" name="rule" ordered="false" upperBound="-1" eType="QVTBase.Rule" containment="true" resolveProxies="false" eOpposite="QVTBase.Rule.transformation"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.TryExp" name="TryExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.TryExp.exceptClause" name="exceptClause" upperBound="-1" eType="ImperativeOCL.CatchExp" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="exceptOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.TryExp.tryBody" name="tryBody" upperBound="-1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tryBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralExp" name="TupleLiteralExp" eSuperTypes="EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralExp.part" name="part" ordered="false" upperBound="-1" eType="EssentialOCL.TupleLiteralPart" containment="true" resolveProxies="false" eOpposite="EssentialOCL.TupleLiteralPart.tupleLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralPart" name="TupleLiteralPart" eSuperTypes="EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.attribute" name="attribute" eType="EMOF.Property"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.tupleLiteralExp" name="tupleLiteralExp" eType="EssentialOCL.TupleLiteralExp" transient="true" resolveProxies="false" eOpposite="EssentialOCL.TupleLiteralExp.part"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.value" name="value" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleType" name="TupleType" eSuperTypes="EMOF.Class EMOF.DataType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.Type" name="Type" abstract="true" eSuperTypes="EMOF.NamedElement">
<eOperations xmi:id="EMOF.Type.isInstance" name="isInstance" eType="PrimitiveTypes.Boolean">
<eParameters xmi:id="EMOF.Type.isInstance.object" name="object" eType="EMOF.Object"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.Type.package" name="package" eType="EMOF.Package" transient="true" resolveProxies="false" eOpposite="EMOF.Package.ownedType"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TypeExp" name="TypeExp" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TypeExp.referredType" name="referredType" eType="EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.TypedElement" name="TypedElement" abstract="true" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EMOF.TypedElement.type" name="type" eType="EMOF.Type"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTBase.TypedModel" name="TypedModel" eSuperTypes="EMOF.NamedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.dependsOn" name="dependsOn" ordered="false" upperBound="-1" eType="QVTBase.TypedModel">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="dependent"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.transformation" name="transformation" lowerBound="1" eType="QVTBase.Transformation" transient="true" resolveProxies="false" eOpposite="QVTBase.Transformation.modelParameter"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTBase.TypedModel.usedPackage" name="usedPackage" ordered="false" lowerBound="1" upperBound="-1" eType="EMOF.Package"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.Typedef" name="Typedef" eSuperTypes="EMOF.Class">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.Typedef.base" name="base" lowerBound="1" eType="EMOF.Type"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.Typedef.condition" name="condition" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EMOF.URIExtent" name="URIExtent" eSuperTypes="EMOF.Extent">
<eOperations xmi:id="EMOF.URIExtent.contextURI" name="contextURI" eType="PrimitiveTypes.String"/>
<eOperations xmi:id="EMOF.URIExtent.element" name="element" eType="EMOF.Element">
<eParameters xmi:id="EMOF.URIExtent.element.uri" name="uri" eType="PrimitiveTypes.String"/>
</eOperations>
<eOperations xmi:id="EMOF.URIExtent.uri" name="uri" eType="PrimitiveTypes.String">
<eParameters xmi:id="EMOF.URIExtent.uri.element" name="element" eType="EMOF.Element"/>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EDataType" xmi:id="PrimitiveTypes.UnlimitedNatural" name="UnlimitedNatural" instanceClassName="java.lang.Integer"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.UnlimitedNaturalExp" name="UnlimitedNaturalExp" eSuperTypes="EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.UnlimitedNaturalExp.symbol" name="symbol" eType="PrimitiveTypes.UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.UnlinkExp" name="UnlinkExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnlinkExp.item" name="item" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="itemUnlink"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnlinkExp.target" name="target" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tgtUnlink"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.UnpackExp" name="UnpackExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnpackExp.source" name="source" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.UnpackExp.targetVariable" name="targetVariable" lowerBound="1" upperBound="-1" eType="EssentialOCL.Variable"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTOperational.VarParameter" name="VarParameter" eSuperTypes="EssentialOCL.Variable EMOF.Parameter">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.VarParameter.ctxOwner" name="ctxOwner" eType="QVTOperational.ImperativeOperation" transient="true" resolveProxies="false" eOpposite="QVTOperational.ImperativeOperation.context"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="QVTOperational.VarParameter.kind" name="kind" eType="QVTOperational.DirectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTOperational.VarParameter.resOwner" name="resOwner" eType="QVTOperational.ImperativeOperation" transient="true" resolveProxies="false" eOpposite="QVTOperational.ImperativeOperation.result"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.Variable" name="Variable" eSuperTypes="EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.initExpression" name="initExpression" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="initializedElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.letExp" name="letExp" eType="EssentialOCL.LetExp" transient="true" resolveProxies="false" eOpposite="EssentialOCL.LetExp.variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.representedParameter" name="representedParameter" eType="EMOF.Parameter"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="QVTCore.VariableAssignment" name="VariableAssignment" eSuperTypes="QVTCore.Assignment">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="QVTCore.VariableAssignment.targetVariable" name="targetVariable" lowerBound="1" eType="EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VariableExp" name="VariableExp" eSuperTypes="EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.VariableExp.referredVariable" name="referredVariable" eType="EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.VariableInitExp" name="VariableInitExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.VariableInitExp.referredVariable" name="referredVariable" lowerBound="1" eType="EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="declaration"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="ImperativeOCL.VariableInitExp.withResult" name="withResult" eType="PrimitiveTypes.Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VoidType" name="VoidType" eSuperTypes="EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="ImperativeOCL.WhileExp" name="WhileExp" eSuperTypes="ImperativeOCL.ImperativeExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.WhileExp.body" name="body" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whileOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="ImperativeOCL.WhileExp.condition" name="condition" lowerBound="1" eType="EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="whileExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>