blob: 0ab99f991c54d9bdfab87cc98953b06f3f609bfe [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
<ecore:EPackage name="PrimitiveTypes" nsURI="http://www.omg.org/spec/QVT/20151201/PrimitiveTypes" nsPrefix="primitivetypes">
<eClassifiers xmi:type="ecore:EDataType" name="Boolean" instanceClassName="java.lang.Boolean"/>
<eClassifiers xmi:type="ecore:EDataType" name="Integer" instanceClassName="java.lang.Integer"/>
<eClassifiers xmi:type="ecore:EDataType" name="Real" instanceClassName="java.lang.Float"/>
<eClassifiers xmi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
<eClassifiers xmi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="java.lang.Integer"/>
</ecore:EPackage>
<ecore:EPackage name="EMOF" nsURI="http://www.omg.org/spec/QVT/20151201/EMOF" nsPrefix="emof">
<eClassifiers xmi:type="ecore:EClass" name="Class" eSuperTypes="#/1/Type">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isAbstract" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedAttribute" upperBound="-1" eType="#/1/Property" containment="true" resolveProxies="false"
eOpposite="#/1/Property/class"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedOperation" upperBound="-1" eType="#/1/Operation" containment="true"
resolveProxies="false" eOpposite="#/1/Operation/class"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="superClass" ordered="false" upperBound="-1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="class"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Comment" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="annotatedElement" ordered="false" upperBound="-1" eType="#/1/NamedElement">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="comment"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="body" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="DataType" eSuperTypes="#/1/Type"/>
<eClassifiers xmi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="#/1/Object">
<eOperations name="container" eType="#/1/Element"/>
<eOperations name="equals" eType="#/0/Boolean">
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="get" eType="#/1/Object">
<eParameters name="property" eType="#/1/Property"/>
</eOperations>
<eOperations name="getMetaClass" eType="#/1/Class"/>
<eOperations name="isSet" eType="#/0/Boolean">
<eParameters name="property" eType="#/1/Property"/>
</eOperations>
<eOperations name="set">
<eParameters name="property" eType="#/1/Property"/>
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="unset">
<eParameters name="property" eType="#/1/Property"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedComment" ordered="false" upperBound="-1" eType="#/1/Comment" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningElement"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Enumeration" eSuperTypes="#/1/DataType">
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedLiteral" upperBound="-1" eType="#/1/EnumerationLiteral" containment="true"
resolveProxies="false" eOpposite="#/1/EnumerationLiteral/enumeration"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EnumerationLiteral" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="enumeration" eType="#/1/Enumeration" transient="true" resolveProxies="false"
eOpposite="#/1/Enumeration/ownedLiteral"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Extent" eSuperTypes="#/1/Object">
<eOperations name="elements" eType="#/1/ReflectiveSequence"/>
<eOperations name="useContainment" eType="#/0/Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Factory" eSuperTypes="#/1/Element">
<eOperations name="convertToString" eType="#/0/String">
<eParameters name="dataType" eType="#/1/DataType"/>
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="create" eType="#/1/Element">
<eParameters name="metaClass" eType="#/1/Class"/>
</eOperations>
<eOperations name="createFromString" eType="#/1/Object">
<eParameters name="dataType" eType="#/1/DataType"/>
<eParameters name="string" eType="#/0/String"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="package" lowerBound="1" eType="#/1/Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="factory"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="MultiplicityElement" abstract="true">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isOrdered" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isUnique" eType="#/0/Boolean" defaultValueLiteral="true"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="lower" eType="#/0/Integer" defaultValueLiteral="1"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="upper" eType="#/0/UnlimitedNatural" defaultValueLiteral="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="name" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Object"/>
<eClassifiers xmi:type="ecore:EClass" name="Operation" eSuperTypes="#/1/TypedElement #/1/MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="class" eType="#/1/Class" transient="true" resolveProxies="false" eOpposite="#/1/Class/ownedOperation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedParameter" upperBound="-1" eType="#/1/Parameter" containment="true"
resolveProxies="false" eOpposite="#/1/Parameter/operation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="raisedException" ordered="false" upperBound="-1" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="operation"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Package" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="nestedPackage" ordered="false" upperBound="-1" eType="#/1/Package" containment="true"
resolveProxies="false" eOpposite="#/1/Package/nestingPackage"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="nestingPackage" eType="#/1/Package" transient="true" resolveProxies="false"
eOpposite="#/1/Package/nestedPackage"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedType" ordered="false" upperBound="-1" eType="#/1/Type" containment="true"
resolveProxies="false" eOpposite="#/1/Type/package"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="uri" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Parameter" eSuperTypes="#/1/TypedElement #/1/MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="operation" eType="#/1/Operation" transient="true" resolveProxies="false"
eOpposite="#/1/Operation/ownedParameter"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#/1/DataType"/>
<eClassifiers xmi:type="ecore:EClass" name="Property" eSuperTypes="#/1/TypedElement #/1/MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="class" eType="#/1/Class" transient="true" resolveProxies="false" eOpposite="#/1/Class/ownedAttribute"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="default" eType="#/0/String"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isComposite" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isDerived" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isID" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isReadOnly" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="opposite" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="property"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ReflectiveCollection" eSuperTypes="#/1/Object">
<eOperations name="add" eType="#/0/Boolean">
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="addAll" eType="#/0/Boolean">
<eParameters name="objects" eType="#/1/ReflectiveSequence"/>
</eOperations>
<eOperations name="clear"/>
<eOperations name="remove" eType="#/0/Boolean">
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="size" eType="#/0/Integer"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ReflectiveSequence" eSuperTypes="#/1/ReflectiveCollection">
<eOperations name="add">
<eParameters name="index" eType="#/0/Integer"/>
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eOperations name="get" eType="#/1/Object">
<eParameters name="index" eType="#/0/Integer"/>
</eOperations>
<eOperations name="remove" eType="#/1/Object">
<eParameters name="index" eType="#/0/Integer"/>
</eOperations>
<eOperations name="set" eType="#/1/Object">
<eParameters name="index" eType="#/0/Integer"/>
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Tag" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="element" ordered="false" upperBound="-1" eType="#/1/Element">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tag"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="name" eType="#/0/String"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="value" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#/1/NamedElement">
<eOperations name="isInstance" eType="#/0/Boolean">
<eParameters name="object" eType="#/1/Object"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="package" eType="#/1/Package" transient="true" resolveProxies="false" eOpposite="#/1/Package/ownedType"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TypedElement" abstract="true" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="type" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedElement"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="URIExtent" eSuperTypes="#/1/Extent">
<eOperations name="contextURI" eType="#/0/String"/>
<eOperations name="element" eType="#/1/Element">
<eParameters name="uri" eType="#/0/String"/>
</eOperations>
<eOperations name="uri" eType="#/0/String">
<eParameters name="element" eType="#/1/Element"/>
</eOperations>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage name="EssentialOCL" nsURI="http://www.omg.org/spec/QVT/20151201/EssentialOCL" nsPrefix="essentialocl">
<eClassifiers xmi:type="ecore:EClass" name="AnyType" eSuperTypes="#/1/Type"/>
<eClassifiers xmi:type="ecore:EClass" name="BagType" eSuperTypes="#/2/CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="BooleanLiteralExp" eSuperTypes="#/2/PrimitiveLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="booleanSymbol" eType="#/0/Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CallExp" abstract="true" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="source" eType="#/2/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 xmi:type="ecore:EClass" name="CollectionItem" eSuperTypes="#/2/CollectionLiteralPart">
<eStructuralFeatures xmi:type="ecore:EReference" name="item" lowerBound="1" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collectionItem"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" name="CollectionKind">
<eLiterals name="Set"/>
<eLiterals name="OrderedSet" value="1"/>
<eLiterals name="Bag" value="2"/>
<eLiterals name="Sequence" value="3"/>
<eLiterals name="Collection" value="4"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CollectionLiteralExp" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="kind" eType="#/2/CollectionKind"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#/2/CollectionLiteralPart" containment="true"
resolveProxies="false" eOpposite="#/2/CollectionLiteralPart/collectionLiteralExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CollectionLiteralPart" abstract="true" eSuperTypes="#/1/TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="collectionLiteralExp" lowerBound="1" eType="#/2/CollectionLiteralExp" transient="true"
resolveProxies="false" eOpposite="#/2/CollectionLiteralExp/part"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CollectionRange" eSuperTypes="#/2/CollectionLiteralPart">
<eStructuralFeatures xmi:type="ecore:EReference" name="first" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="last" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="CollectionType" eSuperTypes="#/1/DataType">
<eStructuralFeatures xmi:type="ecore:EReference" name="elementType" lowerBound="1" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collectionType"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EnumLiteralExp" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredEnumLiteral" eType="#/1/EnumerationLiteral">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="literalExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ExpressionInOcl" eSuperTypes="#/1/TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="bodyExpression" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="contextVariable" eType="#/2/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 xmi:type="ecore:EReference" name="generatedType" ordered="false" upperBound="-1" eType="#/1/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 xmi:type="ecore:EReference" name="parameterVariable" ordered="false" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="resultVariable" eType="#/2/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 xmi:type="ecore:EClass" name="FeatureCallExp" abstract="true" eSuperTypes="#/2/CallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="IfExp" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="elseExpression" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="thenExpression" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="IntegerLiteralExp" eSuperTypes="#/2/NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="integerSymbol" eType="#/0/Integer"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="InvalidLiteralExp" eSuperTypes="#/2/LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="InvalidType" eSuperTypes="#/1/Type"/>
<eClassifiers xmi:type="ecore:EClass" name="IterateExp" eSuperTypes="#/2/LoopExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="result" eType="#/2/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 xmi:type="ecore:EClass" name="IteratorExp" eSuperTypes="#/2/LoopExp"/>
<eClassifiers xmi:type="ecore:EClass" name="LetExp" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="in" lowerBound="1" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="letExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" lowerBound="1" eType="#/2/Variable" containment="true" resolveProxies="false"
eOpposite="#/2/Variable/letExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="LiteralExp" abstract="true" eSuperTypes="#/2/OclExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="LoopExp" abstract="true" eSuperTypes="#/2/CallExp #/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="iterator" upperBound="-1" eType="#/2/Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="NavigationCallExp" eSuperTypes="#/2/FeatureCallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="NullLiteralExp" eSuperTypes="#/2/LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="NumericLiteralExp" abstract="true" eSuperTypes="#/2/PrimitiveLiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="OclExpression" abstract="true" eSuperTypes="#/1/TypedElement"/>
<eClassifiers xmi:type="ecore:EClass" name="OperationCallExp" eSuperTypes="#/2/FeatureCallExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="referredOperation" eType="#/1/Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="OrderedSetType" eSuperTypes="#/2/CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="PrimitiveLiteralExp" abstract="true" eSuperTypes="#/2/LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="PropertyCallExp" eSuperTypes="#/2/NavigationCallExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredProperty" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RealLiteralExp" eSuperTypes="#/2/NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="realSymbol" eType="#/0/Real"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="SequenceType" eSuperTypes="#/2/CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="SetType" eSuperTypes="#/2/CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="StringLiteralExp" eSuperTypes="#/2/PrimitiveLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="stringSymbol" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TemplateParameterType" eSuperTypes="#/1/Type">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="specification" eType="#/0/String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TupleLiteralExp" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#/2/TupleLiteralPart" containment="true"
resolveProxies="false" eOpposite="#/2/TupleLiteralPart/tupleLiteralExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TupleLiteralPart" eSuperTypes="#/1/TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="attribute" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupleLiteralPart"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="tupleLiteralExp" eType="#/2/TupleLiteralExp" transient="true" resolveProxies="false"
eOpposite="#/2/TupleLiteralExp/part"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupleLiteralPart"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TupleType" eSuperTypes="#/1/Class #/1/DataType"/>
<eClassifiers xmi:type="ecore:EClass" name="TypeExp" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredType" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typeExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="UnlimitedNaturalExp" eSuperTypes="#/2/NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="symbol" eType="#/0/UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Variable" eSuperTypes="#/1/TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="initExpression" eType="#/2/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 xmi:type="ecore:EReference" name="letExp" eType="#/2/LetExp" transient="true" resolveProxies="false" eOpposite="#/2/LetExp/variable"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="representedParameter" eType="#/1/Parameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="variable"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="VariableExp" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredVariable" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="VoidType" eSuperTypes="#/1/Type"/>
</ecore:EPackage>
<ecore:EPackage name="QVTBase" nsURI="http://www.omg.org/spec/QVT/20151201/QVTBase" nsPrefix="qvtbase">
<eClassifiers xmi:type="ecore:EClass" name="Domain" abstract="true" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isCheckable" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isEnforceable" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="rule" lowerBound="1" eType="#/3/Rule" transient="true" resolveProxies="false"
eOpposite="#/3/Rule/domain"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="typedModel" eType="#/3/TypedModel">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domain"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Function" eSuperTypes="#/1/Operation">
<eStructuralFeatures xmi:type="ecore:EReference" name="queryExpression" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="function"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="FunctionParameter" eSuperTypes="#/2/Variable #/1/Parameter"/>
<eClassifiers xmi:type="ecore:EClass" name="Pattern" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bindsTo" ordered="false" upperBound="-1" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="pattern"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="predicate" ordered="false" upperBound="-1" eType="#/3/Predicate" containment="true"
resolveProxies="false" eOpposite="#/3/Predicate/pattern"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Predicate" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="conditionExpression" lowerBound="1" eType="#/2/OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="predicate"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="pattern" lowerBound="1" eType="#/3/Pattern" transient="true" resolveProxies="false"
eOpposite="#/3/Pattern/predicate"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Rule" abstract="true" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="domain" upperBound="-1" eType="#/3/Domain" containment="true" resolveProxies="false"
eOpposite="#/3/Domain/rule"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isAbstract" lowerBound="1" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="overrides" eType="#/3/Rule">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overridden"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="transformation" eType="#/3/Transformation" transient="true" resolveProxies="false"
eOpposite="#/3/Transformation/rule"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Transformation" eSuperTypes="#/1/Class #/1/Package">
<eStructuralFeatures xmi:type="ecore:EReference" name="extends" eType="#/3/Transformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="extendedBy"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="modelParameter" ordered="false" upperBound="-1" eType="#/3/TypedModel" containment="true"
resolveProxies="false" eOpposite="#/3/TypedModel/transformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transformation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedTag" ordered="false" upperBound="-1" eType="#/1/Tag" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transformation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="rule" ordered="false" upperBound="-1" eType="#/3/Rule" containment="true"
resolveProxies="false" eOpposite="#/3/Rule/transformation"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TypedModel" eSuperTypes="#/1/NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="dependsOn" ordered="false" upperBound="-1" eType="#/3/TypedModel">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="dependent"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="transformation" lowerBound="1" eType="#/3/Transformation" transient="true"
resolveProxies="false" eOpposite="#/3/Transformation/modelParameter"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="usedPackage" ordered="false" lowerBound="1" upperBound="-1" eType="#/1/Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedModel"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage name="QVTCore" nsURI="http://www.omg.org/spec/QVT/20151201/QVTCore" nsPrefix="qvtcore">
<eClassifiers xmi:type="ecore:EClass" name="Area" abstract="true">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#/4/BottomPattern" containment="true"
resolveProxies="false" eOpposite="#/4/BottomPattern/area"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="guardPattern" lowerBound="1" eType="#/4/GuardPattern" containment="true"
resolveProxies="false" eOpposite="#/4/GuardPattern/area"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Assignment" abstract="true" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#/4/BottomPattern" transient="true"
resolveProxies="false" eOpposite="#/4/BottomPattern/assignment"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isDefault" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="BottomPattern" eSuperTypes="#/4/CorePattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="area" lowerBound="1" eType="#/4/Area" transient="true" resolveProxies="false"
eOpposite="#/4/Area/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="assignment" ordered="false" upperBound="-1" eType="#/4/Assignment" containment="true"
resolveProxies="false" eOpposite="#/4/Assignment/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="enforcementOperation" ordered="false" upperBound="-1" eType="#/4/EnforcementOperation"
containment="true" resolveProxies="false" eOpposite="#/4/EnforcementOperation/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="realizedVariable" ordered="false" upperBound="-1" eType="#/4/RealizedVariable"
containment="true" resolveProxies="false" eOpposite="#/4/RealizedVariable/bottomPattern">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="bottomPattern"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CoreDomain" eSuperTypes="#/3/Domain #/4/Area"/>
<eClassifiers xmi:type="ecore:EClass" name="CorePattern" eSuperTypes="#/3/Pattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#/2/Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="corePattern"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" name="EnforcementMode">
<eLiterals name="Creation"/>
<eLiterals name="Deletion" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EnforcementOperation" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#/4/BottomPattern" transient="true"
resolveProxies="false" eOpposite="#/4/BottomPattern/enforcementOperation"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="enforcementMode" eType="#/4/EnforcementMode"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="operationCallExp" lowerBound="1" eType="#/2/OperationCallExp" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="enforcementOperation"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="GuardPattern" eSuperTypes="#/4/CorePattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="area" lowerBound="1" eType="#/4/Area" transient="true" resolveProxies="false"
eOpposite="#/4/Area/guardPattern"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Mapping" eSuperTypes="#/3/Rule #/4/Area">
<eStructuralFeatures xmi:type="ecore:EReference" name="context" eType="#/4/Mapping" transient="true" resolveProxies="false" eOpposite="#/4/Mapping/local"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="local" ordered="false" upperBound="-1" eType="#/4/Mapping" containment="true"
resolveProxies="false" eOpposite="#/4/Mapping/context"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="refinement" ordered="false" upperBound="-1" eType="#/4/Mapping" eOpposite="#/4/Mapping/specification"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="specification" ordered="false" upperBound="-1" eType="#/4/Mapping" eOpposite="#/4/Mapping/refinement"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="PropertyAssignment" eSuperTypes="#/4/Assignment">
<eStructuralFeatures xmi:type="ecore:EReference" name="slotExpression" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="targetProperty" lowerBound="1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RealizedVariable" eSuperTypes="#/2/Variable">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#/4/BottomPattern" transient="true"
resolveProxies="false" eOpposite="#/4/BottomPattern/realizedVariable"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="VariableAssignment" eSuperTypes="#/4/Assignment">
<eStructuralFeatures xmi:type="ecore:EReference" name="targetVariable" lowerBound="1" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage name="QVTTemplate" nsURI="http://www.omg.org/spec/QVT/20151201/QVTTemplate" nsPrefix="qvttemplate">
<eClassifiers xmi:type="ecore:EClass" name="CollectionTemplateExp" eSuperTypes="#/5/TemplateExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="member" ordered="false" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="referredCollectionType" lowerBound="1" eType="#/2/CollectionType">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collectionTemplateExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="rest" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="matchingExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ObjectTemplateExp" eSuperTypes="#/5/TemplateExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#/5/PropertyTemplateItem" containment="true"
resolveProxies="false" eOpposite="#/5/PropertyTemplateItem/objContainer"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredClass" lowerBound="1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectTemplateExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="PropertyTemplateItem" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isOpposite" eType="#/0/Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="objContainer" lowerBound="1" eType="#/5/ObjectTemplateExp" transient="true"
resolveProxies="false" eOpposite="#/5/ObjectTemplateExp/part"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredProperty" lowerBound="1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="propertyItem"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="TemplateExp" abstract="true" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="bindsTo" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="templateExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="where" eType="#/2/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>
</ecore:EPackage>
<ecore:EPackage name="QVTRelation" nsURI="http://www.omg.org/spec/QVT/20151201/QVTRelation" nsPrefix="qvtrelation">
<eClassifiers xmi:type="ecore:EClass" name="DomainPattern" eSuperTypes="#/3/Pattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="relationDomain" lowerBound="1" eType="#/6/RelationDomain" eOpposite="#/6/RelationDomain/pattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="templateExpression" eType="#/5/TemplateExp" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainPattern"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Key" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="identifies" lowerBound="1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="key"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="oppositePart" ordered="false" upperBound="-1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="oppKey"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="key"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="transformation" eType="#/6/RelationalTransformation" transient="true" resolveProxies="false"
eOpposite="#/6/RelationalTransformation/ownedKey"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="OppositePropertyCallExp" eSuperTypes="#/2/PropertyCallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="Relation" eSuperTypes="#/3/Rule">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isTopLevel" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="operationalImpl" ordered="false" upperBound="-1" eType="#/6/RelationImplementation"
containment="true" resolveProxies="false" eOpposite="#/6/RelationImplementation/relation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#/2/Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="when" eType="#/3/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 xmi:type="ecore:EReference" name="where" eType="#/3/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 xmi:type="ecore:EClass" name="RelationCallExp" eSuperTypes="#/2/OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" lowerBound="2" upperBound="-1" eType="#/2/OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationCallExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredRelation" lowerBound="1" eType="#/6/Relation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationCallExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RelationDomain" eSuperTypes="#/3/Domain">
<eStructuralFeatures xmi:type="ecore:EReference" name="defaultAssignment" ordered="false" upperBound="-1" eType="#/6/RelationDomainAssignment"
containment="true" resolveProxies="false" eOpposite="#/6/RelationDomainAssignment/owner"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="pattern" upperBound="-1" eType="#/6/DomainPattern" containment="true" resolveProxies="false"
eOpposite="#/6/DomainPattern/relationDomain"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="rootVariable" lowerBound="1" upperBound="-1" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationDomain"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RelationDomainAssignment" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="owner" lowerBound="1" eType="#/6/RelationDomain" eOpposite="#/6/RelationDomain/defaultAssignment"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="valueExp" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="variable" lowerBound="1" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="domainAssignment"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RelationImplementation" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="impl" lowerBound="1" eType="#/1/Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationImplementation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="inDirectionOf" lowerBound="1" eType="#/3/TypedModel">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="relationImplementation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="relation" lowerBound="1" eType="#/6/Relation" transient="true" resolveProxies="false"
eOpposite="#/6/Relation/operationalImpl"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RelationalTransformation" eSuperTypes="#/3/Transformation">
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedKey" ordered="false" upperBound="-1" eType="#/6/Key" containment="true"
resolveProxies="false" eOpposite="#/6/Key/transformation"/>
</eClassifiers>
</ecore:EPackage>
<ecore:EPackage name="ImperativeOCL" nsURI="http://www.omg.org/spec/QVT/20151201/ImperativeOCL" nsPrefix="imperativeocl">
<eClassifiers xmi:type="ecore:EClass" name="AltExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="condition" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="AssertExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="assertion" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="log" eType="#/7/LogExp" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="assertExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="severity" eType="#/7/SeverityKind" defaultValueLiteral="error"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="AssignExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="defaultValue" eType="#/2/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 xmi:type="ecore:EAttribute" name="isReset" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="left" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="value" upperBound="-1" eType="#/2/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 xmi:type="ecore:EClass" name="BlockExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" upperBound="-1" eType="#/2/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 xmi:type="ecore:EClass" name="BreakExp" eSuperTypes="#/7/ImperativeExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="CatchExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" upperBound="-1" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="catchExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="exception" lowerBound="1" upperBound="-1" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="catchExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="exceptionVariable" eType="#/2/Variable" containment="true">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="catchExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ComputeExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="returnedElement" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="ContinueExp" eSuperTypes="#/7/ImperativeExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="DictLiteralExp" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#/7/DictLiteralPart" containment="true"
resolveProxies="false" eOpposite="#/7/DictLiteralPart/partOwner"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="DictLiteralPart" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="key" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#/2/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>
<eStructuralFeatures xmi:type="ecore:EReference" name="partOwner" lowerBound="1" eType="#/7/DictLiteralExp" eOpposite="#/7/DictLiteralExp/part"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="DictionaryType" eSuperTypes="#/2/CollectionType">
<eStructuralFeatures xmi:type="ecore:EReference" name="keyType" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="keyDict"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ForExp" eSuperTypes="#/7/ImperativeLoopExp"/>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeExpression" abstract="true" eSuperTypes="#/2/OclExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeIterateExp" eSuperTypes="#/7/ImperativeLoopExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="target" eType="#/2/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 xmi:type="ecore:EClass" name="ImperativeLoopExp" abstract="true" eSuperTypes="#/2/LoopExp #/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#/2/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 xmi:type="ecore:EClass" name="InstantiationExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="extent" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="instantiationExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="instantiatedClass" lowerBound="1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="instantiationExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="initializationOperation" eType="#/1/Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="instantiationExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ListLiteralExp" eSuperTypes="#/2/LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" upperBound="-1" eType="#/2/CollectionLiteralPart" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="listLiteralExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ListType" eSuperTypes="#/2/CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="LogExp" eSuperTypes="#/2/OperationCallExp #/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#/2/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 xmi:type="ecore:EClass" name="RaiseExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="raiseExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="exception" lowerBound="1" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="raiseExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ReturnExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="value" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="returnExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" name="SeverityKind">
<eLiterals name="error"/>
<eLiterals name="warning" value="1"/>
<eLiterals name="fatal" value="2"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="SwitchExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="alternativePart" upperBound="-1" eType="#/7/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 xmi:type="ecore:EReference" name="elsePart" eType="#/2/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 xmi:type="ecore:EClass" name="TryExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="exceptClause" upperBound="-1" eType="#/7/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 xmi:type="ecore:EReference" name="tryBody" upperBound="-1" eType="#/2/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 xmi:type="ecore:EClass" name="Typedef" eSuperTypes="#/1/Class">
<eStructuralFeatures xmi:type="ecore:EReference" name="base" lowerBound="1" eType="#/1/Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedef"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedef"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="UnlinkExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="item" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="target" lowerBound="1" eType="#/2/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 xmi:type="ecore:EClass" name="VariableInitExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredVariable" lowerBound="1" eType="#/2/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 xmi:type="ecore:EAttribute" name="withResult" eType="#/0/Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="WhileExp" eSuperTypes="#/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#/2/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 xmi:type="ecore:EReference" name="condition" lowerBound="1" eType="#/2/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>
<ecore:EPackage name="QVTOperational" nsURI="http://www.omg.org/spec/QVT/20151201/QVTOperational" nsPrefix="qvtoperational">
<eClassifiers xmi:type="ecore:EClass" name="Constructor" eSuperTypes="#/8/ImperativeOperation"/>
<eClassifiers xmi:type="ecore:EClass" name="ConstructorBody" eSuperTypes="#/8/OperationBody"/>
<eClassifiers xmi:type="ecore:EClass" name="ContextualProperty" eSuperTypes="#/1/Property">
<eStructuralFeatures xmi:type="ecore:EReference" name="context" lowerBound="1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="contextualProperty"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="initExpression" eType="#/2/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 xmi:type="ecore:EReference" name="overridden" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriding"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" name="DirectionKind">
<eLiterals name="in"/>
<eLiterals name="inout" value="1"/>
<eLiterals name="out" value="2"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EntryOperation" eSuperTypes="#/8/ImperativeOperation"/>
<eClassifiers xmi:type="ecore:EClass" name="Helper" eSuperTypes="#/8/ImperativeOperation">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isQuery" eType="#/0/Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeCallExp" eSuperTypes="#/2/OperationCallExp #/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isVirtual" eType="#/0/Boolean" defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeOperation" eSuperTypes="#/1/Operation">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" eType="#/8/OperationBody" containment="true" resolveProxies="false"
eOpposite="#/8/OperationBody/operation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="context" eType="#/8/VarParameter" containment="true" resolveProxies="false"
eOpposite="#/8/VarParameter/ctxOwner"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isBlackbox" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="overridden" eType="#/8/ImperativeOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="overriding"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="result" upperBound="-1" eType="#/8/VarParameter" containment="true" resolveProxies="false"
eOpposite="#/8/VarParameter/resOwner"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EEnum" name="ImportKind">
<eLiterals name="extension"/>
<eLiterals name="access" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Library" eSuperTypes="#/8/Module"/>
<eClassifiers xmi:type="ecore:EClass" name="MappingBody" eSuperTypes="#/8/OperationBody">
<eStructuralFeatures xmi:type="ecore:EReference" name="endSection" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="initSection" upperBound="-1" eType="#/2/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 xmi:type="ecore:EClass" name="MappingCallExp" eSuperTypes="#/8/ImperativeCallExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isStrict" eType="#/0/Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="MappingOperation" eSuperTypes="#/8/ImperativeOperation">
<eStructuralFeatures xmi:type="ecore:EReference" name="disjunct" upperBound="-1" eType="#/8/MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="disjuncter"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="inherited" upperBound="-1" eType="#/8/MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="inheriting"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="merged" upperBound="-1" eType="#/8/MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="merging"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="refinedRelation" eType="#/6/Relation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refiningOperation"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="when" eType="#/2/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 xmi:type="ecore:EReference" name="where" eType="#/2/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 xmi:type="ecore:EClass" name="MappingParameter" eSuperTypes="#/8/VarParameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="extent" eType="#/8/ModelParameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="mappingParameter"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredDomain" eType="#/6/RelationDomain">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringParameter"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ModelParameter" eSuperTypes="#/8/VarParameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="module" lowerBound="1" eType="#/8/OperationalTransformation" eOpposite="#/8/OperationalTransformation/modelParameter"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ModelType" eSuperTypes="#/1/Class">
<eStructuralFeatures xmi:type="ecore:EReference" name="additionalCondition" upperBound="-1" eType="#/2/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 xmi:type="ecore:EAttribute" name="conformanceKind" eType="#/0/String" defaultValueLiteral="effective"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="metamodel" lowerBound="1" upperBound="-1" eType="#/1/Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="modelType"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Module" eSuperTypes="#/1/Class #/1/Package">
<eStructuralFeatures xmi:type="ecore:EReference" name="configProperty" upperBound="-1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="module"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="entry" eType="#/8/EntryOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="entryContext"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isBlackbox" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="moduleImport" upperBound="-1" eType="#/8/ModuleImport" containment="true"
resolveProxies="false" eOpposite="#/8/ModuleImport/module"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedTag" upperBound="-1" eType="#/1/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 xmi:type="ecore:EReference" name="ownedVariable" ordered="false" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="usedModelType" upperBound="-1" eType="#/8/ModelType">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="module"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ModuleImport" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="binding" upperBound="-1" eType="#/8/ModelType">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="moduleImport"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="importedModule" lowerBound="1" eType="#/8/Module">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="importingElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#/8/ImportKind" defaultValueLiteral="access"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="module" eType="#/8/Module" transient="true" resolveProxies="false" eOpposite="#/8/Module/moduleImport"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ObjectExp" eSuperTypes="#/7/InstantiationExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#/8/ConstructorBody" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredObject" lowerBound="1" eType="#/2/Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="objectExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="OperationBody" eSuperTypes="#/1/Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="content" upperBound="-1" eType="#/2/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 xmi:type="ecore:EReference" name="operation" eType="#/8/ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#/8/ImperativeOperation/body"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#/2/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 xmi:type="ecore:EClass" name="OperationalTransformation" eSuperTypes="#/8/Module">
<eStructuralFeatures xmi:type="ecore:EReference" name="intermediateClass" upperBound="-1" eType="#/1/Class">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="intermediateProperty" upperBound="-1" eType="#/1/Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="transfClient"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="modelParameter" upperBound="-1" eType="#/8/ModelParameter" containment="true"
resolveProxies="false" eOpposite="#/8/ModelParameter/module"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="refined" eType="#/6/RelationalTransformation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="refinement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EReference" name="relation" upperBound="-1" eType="#/6/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 xmi:type="ecore:EClass" name="ResolveExp" eSuperTypes="#/2/CallExp #/7/ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#/2/OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resolveExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isDeferred" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isInverse" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="one" eType="#/0/Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="target" eType="#/2/Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resolveExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ResolveInExp" eSuperTypes="#/8/ResolveExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="inMapping" eType="#/8/MappingOperation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resolveExpression"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="VarParameter" eSuperTypes="#/2/Variable #/1/Parameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="ctxOwner" eType="#/8/ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#/8/ImperativeOperation/context"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="kind" eType="#/8/DirectionKind"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="resOwner" eType="#/8/ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#/8/ImperativeOperation/result"/>
</eClassifiers>
</ecore:EPackage>
</xmi:XMI>