blob: b94f42b29ea92bc9eb0e69463f3854b85f8afab3 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="FlatQVT" nsURI="http://www.omg.org/spec/QVT/20140401/FlatQVT" nsPrefix="qvt">
<eClassifiers xmi:type="ecore:EClass" name="AltExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#//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="#//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="AnyType" eSuperTypes="#//Type"/>
<eClassifiers xmi:type="ecore:EClass" name="Area" abstract="true">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#//BottomPattern" containment="true" resolveProxies="false"
eOpposite="#//BottomPattern/area"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="guardPattern" lowerBound="1" eType="#//GuardPattern" containment="true" resolveProxies="false"
eOpposite="#//GuardPattern/area"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="AssertExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="assertion" lowerBound="1" eType="#//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="#//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="#//SeverityKind" defaultValueLiteral="error"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="AssignExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="defaultValue" eType="#//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="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="left" lowerBound="1" eType="#//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="#//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="Assignment" abstract="true" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#//BottomPattern" transient="true" resolveProxies="false"
eOpposite="#//BottomPattern/assignment"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isDefault" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#//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="BagType" eSuperTypes="#//CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="BlockExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" upperBound="-1" eType="#//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:EDataType" name="Boolean" instanceClassName="java.lang.Boolean"/>
<eClassifiers xmi:type="ecore:EClass" name="BooleanLiteralExp" eSuperTypes="#//PrimitiveLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="booleanSymbol" eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="BottomPattern" eSuperTypes="#//CorePattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="area" lowerBound="1" eType="#//Area" transient="true" resolveProxies="false"
eOpposite="#//Area/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="assignment" ordered="false" upperBound="-1" eType="#//Assignment" containment="true"
resolveProxies="false" eOpposite="#//Assignment/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="enforcementOperation" ordered="false" upperBound="-1" eType="#//EnforcementOperation"
containment="true" resolveProxies="false" eOpposite="#//EnforcementOperation/bottomPattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="realizedVariable" ordered="false" upperBound="-1" eType="#//RealizedVariable"
containment="true" resolveProxies="false" eOpposite="#//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="BreakExp" eSuperTypes="#//ImperativeExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="CallExp" abstract="true" eSuperTypes="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="source" eType="#//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="CatchExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" upperBound="-1" eType="#//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="#//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="#//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="Class" eSuperTypes="#//Type">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isAbstract" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedAttribute" upperBound="-1" eType="#//Property" containment="true" resolveProxies="false"
eOpposite="#//Property/class"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedOperation" upperBound="-1" eType="#//Operation" containment="true" resolveProxies="false"
eOpposite="#//Operation/class"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="superClass" ordered="false" upperBound="-1" eType="#//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="CollectionItem" eSuperTypes="#//CollectionLiteralPart">
<eStructuralFeatures xmi:type="ecore:EReference" name="item" lowerBound="1" eType="#//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="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="kind" eType="#//CollectionKind"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#//CollectionLiteralPart" containment="true"
resolveProxies="false" eOpposite="#//CollectionLiteralPart/collectionLiteralExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CollectionLiteralPart" abstract="true" eSuperTypes="#//TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="collectionLiteralExp" lowerBound="1" eType="#//CollectionLiteralExp" transient="true"
resolveProxies="false" eOpposite="#//CollectionLiteralExp/part"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="CollectionRange" eSuperTypes="#//CollectionLiteralPart">
<eStructuralFeatures xmi:type="ecore:EReference" name="first" lowerBound="1" eType="#//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="#//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="CollectionTemplateExp" eSuperTypes="#//TemplateExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="member" ordered="false" upperBound="-1" eType="#//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="#//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="#//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="CollectionType" eSuperTypes="#//DataType">
<eStructuralFeatures xmi:type="ecore:EReference" name="elementType" lowerBound="1" eType="#//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="Comment" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="annotatedElement" ordered="false" upperBound="-1" eType="#//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="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ComputeExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#//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="#//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="Constructor" eSuperTypes="#//ImperativeOperation"/>
<eClassifiers xmi:type="ecore:EClass" name="ConstructorBody" eSuperTypes="#//OperationBody"/>
<eClassifiers xmi:type="ecore:EClass" name="ContextualProperty" eSuperTypes="#//Property">
<eStructuralFeatures xmi:type="ecore:EReference" name="context" lowerBound="1" eType="#//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="#//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="#//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:EClass" name="ContinueExp" eSuperTypes="#//ImperativeExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="CoreDomain" eSuperTypes="#//Domain #//Area"/>
<eClassifiers xmi:type="ecore:EClass" name="CorePattern" eSuperTypes="#//Pattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#//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:EClass" name="DataType" eSuperTypes="#//Type"/>
<eClassifiers xmi:type="ecore:EClass" name="DictLiteralExp" eSuperTypes="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#//DictLiteralPart" containment="true"
resolveProxies="false" eOpposite="#//DictLiteralPart/partOwner"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="DictLiteralPart" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="key" lowerBound="1" eType="#//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="#//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="#//DictLiteralExp" eOpposite="#//DictLiteralExp/part"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="DictionaryType" eSuperTypes="#//CollectionType">
<eStructuralFeatures xmi:type="ecore:EReference" name="keyType" eType="#//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:EEnum" name="DirectionKind">
<eLiterals name="in"/>
<eLiterals name="inout" value="1"/>
<eLiterals name="out" value="2"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Domain" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isCheckable" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isEnforceable" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="rule" lowerBound="1" eType="#//Rule" transient="true" resolveProxies="false"
eOpposite="#//Rule/domain"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="typedModel" eType="#//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="DomainPattern" eSuperTypes="#//Pattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="relationDomain" lowerBound="1" eType="#//RelationDomain" eOpposite="#//RelationDomain/pattern"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="templateExpression" eType="#//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="Element" abstract="true" eSuperTypes="#//Object">
<eOperations name="container" eType="#//Element"/>
<eOperations name="equals" eType="#//Boolean">
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="get" eType="#//Object">
<eParameters name="property" eType="#//Property"/>
</eOperations>
<eOperations name="getMetaClass" eType="#//Class"/>
<eOperations name="isSet" eType="#//Boolean">
<eParameters name="property" eType="#//Property"/>
</eOperations>
<eOperations name="set">
<eParameters name="property" eType="#//Property"/>
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="unset">
<eParameters name="property" eType="#//Property"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedComment" ordered="false" upperBound="-1" eType="#//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:EEnum" name="EnforcementMode">
<eLiterals name="Creation"/>
<eLiterals name="Deletion" value="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EnforcementOperation" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#//BottomPattern" transient="true" resolveProxies="false"
eOpposite="#//BottomPattern/enforcementOperation"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="enforcementMode" eType="#//EnforcementMode"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="operationCallExp" lowerBound="1" eType="#//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="EntryOperation" eSuperTypes="#//ImperativeOperation"/>
<eClassifiers xmi:type="ecore:EClass" name="EnumLiteralExp" eSuperTypes="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredEnumLiteral" eType="#//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="Enumeration" eSuperTypes="#//DataType">
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedLiteral" upperBound="-1" eType="#//EnumerationLiteral" containment="true"
resolveProxies="false" eOpposite="#//EnumerationLiteral/enumeration"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="EnumerationLiteral" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="enumeration" eType="#//Enumeration" transient="true" resolveProxies="false"
eOpposite="#//Enumeration/ownedLiteral"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ExpressionInOcl" eSuperTypes="#//TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="bodyExpression" lowerBound="1" eType="#//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="#//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="#//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="#//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="#//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="Extent" eSuperTypes="#//Object">
<eOperations name="elements" eType="#//ReflectiveSequence"/>
<eOperations name="useContainment" eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Factory" eSuperTypes="#//Element">
<eOperations name="convertToString" eType="#//String">
<eParameters name="dataType" eType="#//DataType"/>
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="create" eType="#//Element">
<eParameters name="metaClass" eType="#//Class"/>
</eOperations>
<eOperations name="createFromString" eType="#//Object">
<eParameters name="dataType" eType="#//DataType"/>
<eParameters name="string" eType="#//String"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="package" lowerBound="1" eType="#//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="FeatureCallExp" abstract="true" eSuperTypes="#//CallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="ForExp" eSuperTypes="#//ImperativeLoopExp"/>
<eClassifiers xmi:type="ecore:EClass" name="Function" eSuperTypes="#//Operation">
<eStructuralFeatures xmi:type="ecore:EReference" name="queryExpression" eType="#//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="#//Variable #//Parameter"/>
<eClassifiers xmi:type="ecore:EClass" name="GuardPattern" eSuperTypes="#//CorePattern">
<eStructuralFeatures xmi:type="ecore:EReference" name="area" lowerBound="1" eType="#//Area" transient="true" resolveProxies="false"
eOpposite="#//Area/guardPattern"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Helper" eSuperTypes="#//ImperativeOperation">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isQuery" eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="IfExp" eSuperTypes="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" lowerBound="1" eType="#//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="#//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="#//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="ImperativeCallExp" eSuperTypes="#//OperationCallExp #//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isVirtual" eType="#//Boolean" defaultValueLiteral="true"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeExpression" abstract="true" eSuperTypes="#//OclExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="ImperativeIterateExp" eSuperTypes="#//ImperativeLoopExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="target" eType="#//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="#//LoopExp #//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#//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="ImperativeOperation" eSuperTypes="#//Operation">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" eType="#//OperationBody" containment="true" resolveProxies="false" eOpposite="#//OperationBody/operation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="context" eType="#//VarParameter" containment="true" resolveProxies="false"
eOpposite="#//VarParameter/ctxOwner"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isBlackbox" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="overridden" eType="#//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="#//VarParameter" containment="true" resolveProxies="false"
eOpposite="#//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="InstantiationExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" upperBound="-1" eType="#//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="#//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="#//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="#//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:EDataType" name="Integer" instanceClassName="java.lang.Integer"/>
<eClassifiers xmi:type="ecore:EClass" name="IntegerLiteralExp" eSuperTypes="#//NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="integerSymbol" eType="#//Integer"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="InvalidLiteralExp" eSuperTypes="#//LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="InvalidType" eSuperTypes="#//Type"/>
<eClassifiers xmi:type="ecore:EClass" name="IterateExp" eSuperTypes="#//LoopExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="result" eType="#//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="#//LoopExp"/>
<eClassifiers xmi:type="ecore:EClass" name="Key" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="identifies" lowerBound="1" eType="#//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="#//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="#//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="#//RelationalTransformation" transient="true" resolveProxies="false"
eOpposite="#//RelationalTransformation/ownedKey"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="LetExp" eSuperTypes="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="in" lowerBound="1" eType="#//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="#//Variable" containment="true" resolveProxies="false"
eOpposite="#//Variable/letExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Library" eSuperTypes="#//Module"/>
<eClassifiers xmi:type="ecore:EClass" name="ListLiteralExp" eSuperTypes="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" upperBound="-1" eType="#//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="#//CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="LiteralExp" abstract="true" eSuperTypes="#//OclExpression"/>
<eClassifiers xmi:type="ecore:EClass" name="LogExp" eSuperTypes="#//OperationCallExp #//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#//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="LoopExp" abstract="true" eSuperTypes="#//CallExp #//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#//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="#//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="Mapping" eSuperTypes="#//Rule #//Area">
<eStructuralFeatures xmi:type="ecore:EReference" name="context" eType="#//Mapping" transient="true" resolveProxies="false" eOpposite="#//Mapping/local"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="local" ordered="false" upperBound="-1" eType="#//Mapping" containment="true"
resolveProxies="false" eOpposite="#//Mapping/context"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="refinement" ordered="false" upperBound="-1" eType="#//Mapping" eOpposite="#//Mapping/specification"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="specification" ordered="false" upperBound="-1" eType="#//Mapping" eOpposite="#//Mapping/refinement"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="MappingBody" eSuperTypes="#//OperationBody">
<eStructuralFeatures xmi:type="ecore:EReference" name="endSection" upperBound="-1" eType="#//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="#//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="#//ImperativeCallExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isStrict" eType="#//Boolean"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="MappingOperation" eSuperTypes="#//ImperativeOperation">
<eStructuralFeatures xmi:type="ecore:EReference" name="disjunct" upperBound="-1" eType="#//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="#//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="#//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="#//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="#//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="#//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="#//VarParameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="extent" eType="#//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="#//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="#//VarParameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="module" lowerBound="1" eType="#//OperationalTransformation" eOpposite="#//OperationalTransformation/modelParameter"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ModelType" eSuperTypes="#//Class">
<eStructuralFeatures xmi:type="ecore:EReference" name="additionalCondition" upperBound="-1" eType="#//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="#//String" defaultValueLiteral="effective"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="metamodel" lowerBound="1" upperBound="-1" eType="#//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="#//Class #//Package">
<eStructuralFeatures xmi:type="ecore:EReference" name="configProperty" upperBound="-1" eType="#//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="#//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="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="moduleImport" upperBound="-1" eType="#//ModuleImport" containment="true" resolveProxies="false"
eOpposite="#//ModuleImport/module"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedTag" upperBound="-1" eType="#//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="#//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="#//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="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="binding" upperBound="-1" eType="#//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="#//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="#//ImportKind" defaultValueLiteral="access"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="module" eType="#//Module" transient="true" resolveProxies="false" eOpposite="#//Module/moduleImport"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="MultiplicityElement" abstract="true">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isOrdered" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isUnique" eType="#//Boolean" defaultValueLiteral="true"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="lower" eType="#//Integer" defaultValueLiteral="1"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="upper" eType="#//UnlimitedNatural" defaultValueLiteral="1"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="name" eType="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="NavigationCallExp" eSuperTypes="#//FeatureCallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="NullLiteralExp" eSuperTypes="#//LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="NumericLiteralExp" abstract="true" eSuperTypes="#//PrimitiveLiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="Object"/>
<eClassifiers xmi:type="ecore:EClass" name="ObjectExp" eSuperTypes="#//InstantiationExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#//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="#//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="ObjectTemplateExp" eSuperTypes="#//TemplateExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#//PropertyTemplateItem" containment="true"
resolveProxies="false" eOpposite="#//PropertyTemplateItem/objContainer"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredClass" lowerBound="1" eType="#//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="OclExpression" abstract="true" eSuperTypes="#//TypedElement"/>
<eClassifiers xmi:type="ecore:EClass" name="Operation" eSuperTypes="#//TypedElement #//MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="class" eType="#//Class" transient="true" resolveProxies="false" eOpposite="#//Class/ownedOperation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedParameter" upperBound="-1" eType="#//Parameter" containment="true" resolveProxies="false"
eOpposite="#//Parameter/operation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="raisedException" ordered="false" upperBound="-1" eType="#//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="OperationBody" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="content" upperBound="-1" eType="#//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="#//ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#//ImperativeOperation/body"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#//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="OperationCallExp" eSuperTypes="#//FeatureCallExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" upperBound="-1" eType="#//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="#//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="OperationalTransformation" eSuperTypes="#//Module">
<eStructuralFeatures xmi:type="ecore:EReference" name="intermediateClass" upperBound="-1" eType="#//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="#//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="#//ModelParameter" containment="true"
resolveProxies="false" eOpposite="#//ModelParameter/module"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="refined" eType="#//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="#//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="OppositePropertyCallExp" eSuperTypes="#//PropertyCallExp"/>
<eClassifiers xmi:type="ecore:EClass" name="OrderedSetType" eSuperTypes="#//CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="Package" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="nestedPackage" ordered="false" upperBound="-1" eType="#//Package" containment="true"
resolveProxies="false" eOpposite="#//Package/nestingPackage"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="nestingPackage" eType="#//Package" transient="true" resolveProxies="false"
eOpposite="#//Package/nestedPackage"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedType" ordered="false" upperBound="-1" eType="#//Type" containment="true"
resolveProxies="false" eOpposite="#//Type/package"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="uri" eType="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement #//MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="operation" eType="#//Operation" transient="true" resolveProxies="false" eOpposite="#//Operation/ownedParameter"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Pattern" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="bindsTo" ordered="false" upperBound="-1" eType="#//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="#//Predicate" containment="true"
resolveProxies="false" eOpposite="#//Predicate/pattern"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Predicate" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="conditionExpression" lowerBound="1" eType="#//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="#//Pattern" transient="true" resolveProxies="false"
eOpposite="#//Pattern/predicate"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="PrimitiveLiteralExp" abstract="true" eSuperTypes="#//LiteralExp"/>
<eClassifiers xmi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType"/>
<eClassifiers xmi:type="ecore:EClass" name="Property" eSuperTypes="#//TypedElement #//MultiplicityElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="class" eType="#//Class" transient="true" resolveProxies="false" eOpposite="#//Class/ownedAttribute"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="default" eType="#//String"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isComposite" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isDerived" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isID" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isReadOnly" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="opposite" eType="#//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="PropertyAssignment" eSuperTypes="#//Assignment">
<eStructuralFeatures xmi:type="ecore:EReference" name="slotExpression" lowerBound="1" eType="#//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="#//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="PropertyCallExp" eSuperTypes="#//NavigationCallExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredProperty" eType="#//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="PropertyTemplateItem" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isOpposite" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="objContainer" lowerBound="1" eType="#//ObjectTemplateExp" transient="true"
resolveProxies="false" eOpposite="#//ObjectTemplateExp/part"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="referredProperty" lowerBound="1" eType="#//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="#//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="RaiseExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" eType="#//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="#//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:EDataType" name="Real" instanceClassName="java.lang.Float"/>
<eClassifiers xmi:type="ecore:EClass" name="RealLiteralExp" eSuperTypes="#//NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="realSymbol" eType="#//Real"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RealizedVariable" eSuperTypes="#//Variable">
<eStructuralFeatures xmi:type="ecore:EReference" name="bottomPattern" lowerBound="1" eType="#//BottomPattern" transient="true" resolveProxies="false"
eOpposite="#//BottomPattern/realizedVariable"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ReflectiveCollection" eSuperTypes="#//Object">
<eOperations name="add" eType="#//Boolean">
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="addAll" eType="#//Boolean">
<eParameters name="objects" eType="#//ReflectiveSequence"/>
</eOperations>
<eOperations name="clear"/>
<eOperations name="remove" eType="#//Boolean">
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="size" eType="#//Integer"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ReflectiveSequence" eSuperTypes="#//ReflectiveCollection">
<eOperations name="add">
<eParameters name="index" eType="#//Integer"/>
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eOperations name="get" eType="#//Object">
<eParameters name="index" eType="#//Integer"/>
</eOperations>
<eOperations name="remove" eType="#//Object">
<eParameters name="index" eType="#//Integer"/>
</eOperations>
<eOperations name="set" eType="#//Object">
<eParameters name="index" eType="#//Integer"/>
<eParameters name="object" eType="#//Object"/>
</eOperations>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Relation" eSuperTypes="#//Rule">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isTopLevel" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="operationalImpl" ordered="false" upperBound="-1" eType="#//RelationImplementation"
containment="true" resolveProxies="false" eOpposite="#//RelationImplementation/relation"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="#//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="#//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="#//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="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="argument" lowerBound="2" upperBound="-1" eType="#//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="#//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="#//Domain">
<eStructuralFeatures xmi:type="ecore:EReference" name="defaultAssignment" ordered="false" upperBound="-1" eType="#//RelationDomainAssignment"
containment="true" resolveProxies="false" eOpposite="#//RelationDomainAssignment/owner"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="pattern" upperBound="-1" eType="#//DomainPattern" containment="true" resolveProxies="false"
eOpposite="#//DomainPattern/relationDomain"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="rootVariable" lowerBound="1" upperBound="-1" eType="#//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="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//RelationDomain" eOpposite="#//RelationDomain/defaultAssignment"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="valueExp" lowerBound="1" eType="#//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="#//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="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="impl" lowerBound="1" eType="#//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="#//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="#//Relation" transient="true" resolveProxies="false"
eOpposite="#//Relation/operationalImpl"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="RelationalTransformation" eSuperTypes="#//Transformation">
<eStructuralFeatures xmi:type="ecore:EReference" name="ownedKey" ordered="false" upperBound="-1" eType="#//Key" containment="true"
resolveProxies="false" eOpposite="#//Key/transformation"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="ResolveExp" eSuperTypes="#//CallExp #//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="condition" eType="#//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="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isInverse" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="one" eType="#//Boolean"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="target" eType="#//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="#//ResolveExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="inMapping" eType="#//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="ReturnExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="value" eType="#//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:EClass" name="Rule" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="domain" upperBound="-1" eType="#//Domain" containment="true" resolveProxies="false"
eOpposite="#//Domain/rule"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="isAbstract" lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="overrides" eType="#//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="#//Transformation" transient="true" resolveProxies="false"
eOpposite="#//Transformation/rule"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="SequenceType" eSuperTypes="#//CollectionType"/>
<eClassifiers xmi:type="ecore:EClass" name="SetType" eSuperTypes="#//CollectionType"/>
<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:EDataType" name="String" instanceClassName="java.lang.String"/>
<eClassifiers xmi:type="ecore:EClass" name="StringLiteralExp" eSuperTypes="#//PrimitiveLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="stringSymbol" eType="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="SwitchExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="alternativePart" upperBound="-1" eType="#//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="#//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="Tag" eSuperTypes="#//Element">
<eStructuralFeatures xmi:type="ecore:EReference" name="element" ordered="false" upperBound="-1" eType="#//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="#//String"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="value" eType="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TemplateExp" abstract="true" eSuperTypes="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="bindsTo" eType="#//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="#//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 xmi:type="ecore:EClass" name="TemplateParameterType" eSuperTypes="#//Type">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="specification" eType="#//String"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Transformation" eSuperTypes="#//Class #//Package">
<eStructuralFeatures xmi:type="ecore:EReference" name="extends" eType="#//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="#//TypedModel" containment="true"
resolveProxies="false" eOpposite="#//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="#//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="#//Rule" containment="true" resolveProxies="false"
eOpposite="#//Rule/transformation"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TryExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="exceptClause" upperBound="-1" eType="#//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="#//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="TupleLiteralExp" eSuperTypes="#//LiteralExp">
<eStructuralFeatures xmi:type="ecore:EReference" name="part" ordered="false" upperBound="-1" eType="#//TupleLiteralPart" containment="true"
resolveProxies="false" eOpposite="#//TupleLiteralPart/tupleLiteralExp"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TupleLiteralPart" eSuperTypes="#//TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="attribute" eType="#//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="#//TupleLiteralExp" transient="true" resolveProxies="false"
eOpposite="#//TupleLiteralExp/part"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="value" lowerBound="1" eType="#//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="#//Class #//DataType"/>
<eClassifiers xmi:type="ecore:EClass" name="Type" abstract="true" eSuperTypes="#//NamedElement">
<eOperations name="isInstance" eType="#//Boolean">
<eParameters name="object" eType="#//Object"/>
</eOperations>
<eStructuralFeatures xmi:type="ecore:EReference" name="package" eType="#//Package" transient="true" resolveProxies="false" eOpposite="#//Package/ownedType"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="TypeExp" eSuperTypes="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredType" eType="#//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="TypedElement" abstract="true" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="type" eType="#//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="TypedModel" eSuperTypes="#//NamedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="dependsOn" ordered="false" upperBound="-1" eType="#//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="#//Transformation" transient="true" resolveProxies="false"
eOpposite="#//Transformation/modelParameter"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="usedPackage" ordered="false" lowerBound="1" upperBound="-1" eType="#//Package">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typedModel"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Typedef" eSuperTypes="#//Class">
<eStructuralFeatures xmi:type="ecore:EReference" name="base" lowerBound="1" eType="#//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="#//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="URIExtent" eSuperTypes="#//Extent">
<eOperations name="contextURI" eType="#//String"/>
<eOperations name="element" eType="#//Element">
<eParameters name="uri" eType="#//String"/>
</eOperations>
<eOperations name="uri" eType="#//String">
<eParameters name="element" eType="#//Element"/>
</eOperations>
</eClassifiers>
<eClassifiers xmi:type="ecore:EDataType" name="UnlimitedNatural" instanceClassName="java.lang.Integer"/>
<eClassifiers xmi:type="ecore:EClass" name="UnlimitedNaturalExp" eSuperTypes="#//NumericLiteralExp">
<eStructuralFeatures xmi:type="ecore:EAttribute" name="symbol" eType="#//UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="UnlinkExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="item" lowerBound="1" eType="#//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="#//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="VarParameter" eSuperTypes="#//Variable #//Parameter">
<eStructuralFeatures xmi:type="ecore:EReference" name="ctxOwner" eType="#//ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#//ImperativeOperation/context"/>
<eStructuralFeatures xmi:type="ecore:EAttribute" name="kind" eType="#//DirectionKind"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="resOwner" eType="#//ImperativeOperation" transient="true" resolveProxies="false"
eOpposite="#//ImperativeOperation/result"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="Variable" eSuperTypes="#//TypedElement">
<eStructuralFeatures xmi:type="ecore:EReference" name="initExpression" eType="#//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="#//LetExp" transient="true" resolveProxies="false" eOpposite="#//LetExp/variable"/>
<eStructuralFeatures xmi:type="ecore:EReference" name="representedParameter" eType="#//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="VariableAssignment" eSuperTypes="#//Assignment">
<eStructuralFeatures xmi:type="ecore:EReference" name="targetVariable" lowerBound="1" eType="#//Variable">
<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="VariableExp" eSuperTypes="#//OclExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredVariable" eType="#//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="VariableInitExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="referredVariable" lowerBound="1" eType="#//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="#//Boolean" defaultValueLiteral="false"/>
</eClassifiers>
<eClassifiers xmi:type="ecore:EClass" name="VoidType" eSuperTypes="#//Type"/>
<eClassifiers xmi:type="ecore:EClass" name="WhileExp" eSuperTypes="#//ImperativeExpression">
<eStructuralFeatures xmi:type="ecore:EReference" name="body" lowerBound="1" eType="#//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="#//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>