blob: 86624f42416b97e47d15f5059ecf18d0eb33afa2 [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="EssentialOCL" name="EssentialOCL" nsURI="http://schema.omg.org/spec/QVT/20140401/EssentialOCL"
nsPrefix="essentialocl">
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.AnyType" name="AnyType"
eSuperTypes="EMOF.ecore#EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BagType" name="BagType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.BooleanLiteralExp" name="BooleanLiteralExp"
eSuperTypes="#EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.BooleanLiteralExp.booleanSymbol"
name="booleanSymbol" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.Boolean"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CallExp" name="CallExp"
abstract="true" eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CallExp.source"
name="source" eType="#EssentialOCL.OclExpression" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="appliedElement"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionItem" name="CollectionItem"
eSuperTypes="#EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionItem.item"
name="item" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collectionItem"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EEnum" xmi:id="EssentialOCL.CollectionKind" name="CollectionKind">
<eLiterals xmi:id="EssentialOCL.CollectionKind.Set" name="Set"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.OrderedSet" name="OrderedSet" value="1"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Bag" name="Bag" value="2"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Sequence" name="Sequence" value="3"/>
<eLiterals xmi:id="EssentialOCL.CollectionKind.Collection" name="Collection" value="4"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralExp"
name="CollectionLiteralExp" eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.CollectionLiteralExp.kind"
name="kind" eType="#EssentialOCL.CollectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralExp.part"
name="part" ordered="false" upperBound="-1" eType="#EssentialOCL.CollectionLiteralPart"
containment="true" resolveProxies="false" eOpposite="#EssentialOCL.CollectionLiteralPart.collectionLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionLiteralPart"
name="CollectionLiteralPart" abstract="true" eSuperTypes="EMOF.ecore#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionLiteralPart.collectionLiteralExp"
name="collectionLiteralExp" lowerBound="1" eType="#EssentialOCL.CollectionLiteralExp"
transient="true" resolveProxies="false" eOpposite="#EssentialOCL.CollectionLiteralExp.part"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionRange" name="CollectionRange"
eSuperTypes="#EssentialOCL.CollectionLiteralPart">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.first"
name="first" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="firstOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionRange.last"
name="last" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="lastOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.CollectionType" name="CollectionType"
eSuperTypes="EMOF.ecore#EMOF.DataType">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.CollectionType.elementType"
name="elementType" lowerBound="1" eType="ecore:EClass EMOF.ecore#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="collectionType"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.EnumLiteralExp" name="EnumLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.EnumLiteralExp.referredEnumLiteral"
name="referredEnumLiteral" eType="ecore:EClass EMOF.ecore#EMOF.EnumerationLiteral">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="literalExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.ExpressionInOcl" name="ExpressionInOcl"
eSuperTypes="EMOF.ecore#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.bodyExpression"
name="bodyExpression" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="topExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.contextVariable"
name="contextVariable" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="selfOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.generatedType"
name="generatedType" ordered="false" upperBound="-1" eType="ecore:EClass EMOF.ecore#EMOF.Type"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="owningExpression"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.parameterVariable"
name="parameterVariable" ordered="false" upperBound="-1" eType="#EssentialOCL.Variable"
containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="varOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.ExpressionInOcl.resultVariable"
name="resultVariable" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="resultOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.FeatureCallExp" name="FeatureCallExp"
abstract="true" eSuperTypes="#EssentialOCL.CallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IfExp" name="IfExp" eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.condition"
name="condition" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="ifOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.elseExpression"
name="elseExpression" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="elseOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IfExp.thenExpression"
name="thenExpression" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="thenOwner"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IntegerLiteralExp" name="IntegerLiteralExp"
eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.IntegerLiteralExp.integerSymbol"
name="integerSymbol" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.Integer"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidLiteralExp" name="InvalidLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.InvalidType" name="InvalidType"
eSuperTypes="EMOF.ecore#EMOF.Type"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IterateExp" name="IterateExp"
eSuperTypes="#EssentialOCL.LoopExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.IterateExp.result"
name="result" eType="#EssentialOCL.Variable" containment="true" resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="baseExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.IteratorExp" name="IteratorExp"
eSuperTypes="#EssentialOCL.LoopExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LetExp" name="LetExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.in"
name="in" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="letExp"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LetExp.variable"
name="variable" lowerBound="1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false" eOpposite="#EssentialOCL.Variable.letExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LiteralExp" name="LiteralExp"
abstract="true" eSuperTypes="#EssentialOCL.OclExpression"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.LoopExp" name="LoopExp"
abstract="true" eSuperTypes="#EssentialOCL.CallExp #EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.body"
name="body" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopBodyOwner"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.LoopExp.iterator"
name="iterator" upperBound="-1" eType="#EssentialOCL.Variable" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="loopExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NavigationCallExp" name="NavigationCallExp"
eSuperTypes="#EssentialOCL.FeatureCallExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NullLiteralExp" name="NullLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.NumericLiteralExp" name="NumericLiteralExp"
abstract="true" eSuperTypes="#EssentialOCL.PrimitiveLiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OclExpression" name="OclExpression"
abstract="true" eSuperTypes="EMOF.ecore#EMOF.TypedElement"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OperationCallExp" name="OperationCallExp"
eSuperTypes="#EssentialOCL.FeatureCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.argument"
name="argument" upperBound="-1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="parentCall"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.OperationCallExp.referredOperation"
name="referredOperation" eType="ecore:EClass EMOF.ecore#EMOF.Operation">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.OrderedSetType" name="OrderedSetType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PrimitiveLiteralExp"
name="PrimitiveLiteralExp" abstract="true" eSuperTypes="#EssentialOCL.LiteralExp"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.PropertyCallExp" name="PropertyCallExp"
eSuperTypes="#EssentialOCL.NavigationCallExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.PropertyCallExp.referredProperty"
name="referredProperty" eType="ecore:EClass EMOF.ecore#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.RealLiteralExp" name="RealLiteralExp"
eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.RealLiteralExp.realSymbol"
name="realSymbol" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.Real"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SequenceType" name="SequenceType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.SetType" name="SetType"
eSuperTypes="#EssentialOCL.CollectionType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.StringLiteralExp" name="StringLiteralExp"
eSuperTypes="#EssentialOCL.PrimitiveLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.StringLiteralExp.stringSymbol"
name="stringSymbol" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TemplateParameterType"
name="TemplateParameterType" eSuperTypes="EMOF.ecore#EMOF.Type">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.TemplateParameterType.specification"
name="specification" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.String"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralExp" name="TupleLiteralExp"
eSuperTypes="#EssentialOCL.LiteralExp">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralExp.part"
name="part" ordered="false" upperBound="-1" eType="#EssentialOCL.TupleLiteralPart"
containment="true" resolveProxies="false" eOpposite="#EssentialOCL.TupleLiteralPart.tupleLiteralExp"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleLiteralPart" name="TupleLiteralPart"
eSuperTypes="EMOF.ecore#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.attribute"
name="attribute" eType="ecore:EClass EMOF.ecore#EMOF.Property">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupleLiteralPart"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.tupleLiteralExp"
name="tupleLiteralExp" eType="#EssentialOCL.TupleLiteralExp" transient="true"
resolveProxies="false" eOpposite="#EssentialOCL.TupleLiteralExp.part"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TupleLiteralPart.value"
name="value" lowerBound="1" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="tupleLiteralPart"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TupleType" name="TupleType"
eSuperTypes="EMOF.ecore#EMOF.Class EMOF.ecore#EMOF.DataType"/>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.TypeExp" name="TypeExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.TypeExp.referredType"
name="referredType" eType="ecore:EClass EMOF.ecore#EMOF.Type">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="typeExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.UnlimitedNaturalExp"
name="UnlimitedNaturalExp" eSuperTypes="#EssentialOCL.NumericLiteralExp">
<eStructuralFeatures xsi:type="ecore:EAttribute" xmi:id="EssentialOCL.UnlimitedNaturalExp.symbol"
name="symbol" eType="ecore:EDataType PrimitiveTypes.ecore#PrimitiveTypes.UnlimitedNatural"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.Variable" name="Variable"
eSuperTypes="EMOF.ecore#EMOF.TypedElement">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.initExpression"
name="initExpression" eType="#EssentialOCL.OclExpression" containment="true"
resolveProxies="false">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="initializedElement"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.letExp"
name="letExp" eType="#EssentialOCL.LetExp" transient="true" resolveProxies="false"
eOpposite="#EssentialOCL.LetExp.variable"/>
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.Variable.representedParameter"
name="representedParameter" eType="ecore:EClass EMOF.ecore#EMOF.Parameter">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="variable"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VariableExp" name="VariableExp"
eSuperTypes="#EssentialOCL.OclExpression">
<eStructuralFeatures xsi:type="ecore:EReference" xmi:id="EssentialOCL.VariableExp.referredVariable"
name="referredVariable" eType="#EssentialOCL.Variable">
<eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName">
<details key="body" value="referringExp"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" xmi:id="EssentialOCL.VoidType" name="VoidType"
eSuperTypes="EMOF.ecore#EMOF.Type"/>
</ecore:EPackage>