blob: e9db4004778d85c7239d60cf22b6f5b31fa6ee52 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="ocl" nsURI="http://www.eclipse.org/ocl/1.1.0/OCL" nsPrefix="ocl">
<eSubpackages name="types" nsURI="http://www.eclipse.org/ocl/1.1.0/OCL/Types" nsPrefix="ocl.types">
<eClassifiers xsi:type="ecore:EClass" name="AnyType">
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/AnyType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BagType">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="collection_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.name = 'Bag(' + self.elementType.name + ')'"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//types/CollectionType/collection_type_name"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</contents>
</eAnnotations>
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//types/CollectionType">
<eTypeArguments eTypeParameter="#//types/BagType/C"/>
<eTypeArguments eTypeParameter="#//types/BagType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionType">
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eOperations name="collection_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.name = 'Collection(' + self.elementType.name + ')'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="no_invalid_values" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self->forAll(not oclIsInvalid())"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="oclIterators" upperBound="-1">
<eGenericType eTypeParameter="#//types/CollectionType/O"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="elementType">
<eGenericType eTypeParameter="#//types/CollectionType/C"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1"
eType="#//expressions/CollectionKind" changeable="false" volatile="true"
transient="true"/>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/CollectionType/O"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/TypedASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ElementType"/>
<eClassifiers xsi:type="ecore:EClass" name="InvalidType">
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/InvalidType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageType">
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eTypeParameters name="P"/>
<eOperations name="exclusive_signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="referredOperation->size() + referredSignal->size() = 1"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="operation_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="referredOperation->size()=1 implies&#xA;Set{1..self.ownedAttribute->size()}->forAll(i | self.ownedAttribute.at(i).cmpSlots(&#xA;referredOperation.ownedParameter.asProperty()->at(i))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="signal_attributes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="referredSignal->size() = 1 implies&#xA;Set{1..self.ownedAttribute->size()}->forAll(i | self.ownedAttribute.asOrderedSet().at(i).cmpSlots(&#xA;referredSignal.ownedAttribute.asOrderedSet()->at(i))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="oclProperties" upperBound="-1">
<eGenericType eTypeParameter="#//types/MessageType/P"/>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredOperation">
<eGenericType eTypeParameter="#//types/MessageType/O"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredSignal">
<eGenericType eTypeParameter="#//types/MessageType/C"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/MessageType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OrderedSetType">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="collection_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.name = 'OrderedSet(' + self.elementType.name + ')'"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//types/CollectionType/collection_type_name"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</contents>
</eAnnotations>
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//types/CollectionType">
<eTypeArguments eTypeParameter="#//types/OrderedSetType/C"/>
<eTypeArguments eTypeParameter="#//types/OrderedSetType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveType">
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/PrimitiveType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SequenceType">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="collection_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.name = 'Sequence(' + self.elementType.name + ')'"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//types/CollectionType/collection_type_name"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</contents>
</eAnnotations>
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//types/CollectionType">
<eTypeArguments eTypeParameter="#//types/SequenceType/C"/>
<eTypeArguments eTypeParameter="#//types/SequenceType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SetType">
<eAnnotations source="duplicates">
<contents xsi:type="ecore:EOperation" name="collection_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.name = 'Set(' + self.elementType.name + ')'"/>
</eAnnotations>
<eAnnotations source="redefines" references="#//types/CollectionType/collection_type_name"/>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</contents>
</eAnnotations>
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//types/CollectionType">
<eTypeArguments eTypeParameter="#//types/SetType/C"/>
<eTypeArguments eTypeParameter="#//types/SetType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TemplateParameterType">
<eTypeParameters name="O"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="specification" ordered="false"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TupleType">
<eTypeParameters name="O"/>
<eTypeParameters name="P"/>
<eOperations name="tuple_type_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="name =&#xA;'Tuple('.concat (&#xA;Sequence{1..allProperties()->size()}->iterate (pn; s: String = '' |&#xA;let p: Property = allProperties()->at (pn) in (&#xA;s.concat (&#xA;(if (pn>1) then ',' else '' endif)&#xA;.concat (p.name).concat (': ')&#xA;.concat (p.type.name)&#xA;)&#xA;)&#xA;)&#xA;).concat (')')"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="part_names_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="true"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="features_only_properties" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="feature->forAll (f | f.oclIsTypeOf(Property))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="oclProperties" upperBound="-1">
<eGenericType eTypeParameter="#//types/TupleType/P"/>
</eOperations>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/TupleType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeType">
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredType" lowerBound="1">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="suppressedSetVisibility" value="true"/>
</eAnnotations>
<eGenericType eTypeParameter="#//types/TypeType/C"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/TypeType/O"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VoidType">
<eTypeParameters name="O"/>
<eGenericSuperTypes eClassifier="#//utilities/PredefinedType">
<eTypeArguments eTypeParameter="#//types/VoidType/O"/>
</eGenericSuperTypes>
</eClassifiers>
</eSubpackages>
<eSubpackages name="utilities" nsURI="http://www.eclipse.org/ocl/1.1.0/OCL/Utilities"
nsPrefix="ocl.util">
<eClassifiers xsi:type="ecore:EClass" name="ASTNode" abstract="true" interface="true">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="startPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
transient="true" defaultValueLiteral="-1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="endPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
transient="true" defaultValueLiteral="-1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallingASTNode" abstract="true" interface="true"
eSuperTypes="#//utilities/ASTNode">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyStartPosition"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
defaultValueLiteral="-1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyEndPosition"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" transient="true"
defaultValueLiteral="-1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypedASTNode" abstract="true" interface="true"
eSuperTypes="#//utilities/ASTNode">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="typeStartPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
transient="true" defaultValueLiteral="-1"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="typeEndPosition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
transient="true" defaultValueLiteral="-1"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Visitable" abstract="true" interface="true">
<eOperations name="accept">
<eGenericType eTypeParameter="#//utilities/Visitable/accept/T"/>
<eTypeParameters name="T"/>
<eTypeParameters name="U">
<eBounds eClassifier="#//utilities/Visitor">
<eTypeArguments eTypeParameter="#//utilities/Visitable/accept/T"/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
<eTypeArguments/>
</eBounds>
</eTypeParameters>
<eParameters name="v">
<eGenericType eTypeParameter="#//utilities/Visitable/accept/U"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Visitor" abstract="true" interface="true">
<eTypeParameters name="T"/>
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eTypeParameters name="P"/>
<eTypeParameters name="EL"/>
<eTypeParameters name="PM"/>
<eTypeParameters name="S"/>
<eTypeParameters name="COA"/>
<eTypeParameters name="SSA"/>
<eTypeParameters name="CT"/>
<eOperations name="visitVariableExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="variableExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/VariableExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitLetExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="letExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/LetExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitIfExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="ifExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/IfExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitTypeExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="typeExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/TypeExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitPropertyCallExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="callExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/PropertyCallExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/P"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitOperationCallExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="callExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/OperationCallExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/O"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitAssociationClassCallExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="callExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/AssociationClassCallExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/P"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitIteratorExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="callExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/IteratorExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitIterateExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="callExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/IterateExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitUnspecifiedValueExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="unspecExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/UnspecifiedValueExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitIntegerLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/IntegerLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitUnlimitedNaturalLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/UnlimitedNaturalLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitRealLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/RealLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitStringLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/StringLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitBooleanLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/BooleanLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitEnumLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/EnumLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/EL"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitCollectionLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/CollectionLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitCollectionItem">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="item" lowerBound="1">
<eGenericType eClassifier="#//expressions/CollectionItem">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitCollectionRange">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="range" lowerBound="1">
<eGenericType eClassifier="#//expressions/CollectionRange">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitTupleLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/TupleLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/P"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitTupleLiteralPart">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="part" lowerBound="1">
<eGenericType eClassifier="#//expressions/TupleLiteralPart">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/P"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitInvalidLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/InvalidLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitNullLiteralExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="literalExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/NullLiteralExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitStateExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="stateExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/StateExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/S"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitMessageExp">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="messageExp" lowerBound="1">
<eGenericType eClassifier="#//expressions/MessageExp">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/COA"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/SSA"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitVariable">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="variable" lowerBound="1">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitExpressionInOCL">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="expression" lowerBound="1">
<eGenericType eClassifier="#//utilities/ExpressionInOCL">
<eTypeArguments eTypeParameter="#//utilities/Visitor/C"/>
<eTypeArguments eTypeParameter="#//utilities/Visitor/PM"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="visitConstraint">
<eGenericType eTypeParameter="#//utilities/Visitor/T"/>
<eParameters name="constraint" lowerBound="1">
<eGenericType eTypeParameter="#//utilities/Visitor/CT"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" interface="true">
<eTypeParameters name="C"/>
<eOperations name="getName" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eOperations name="getType">
<eGenericType eTypeParameter="#//utilities/TypedElement/C"/>
</eOperations>
<eOperations name="setName" ordered="false" lowerBound="1">
<eParameters name="name" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</eOperations>
<eOperations name="setType" ordered="false" lowerBound="1">
<eParameters name="type" ordered="false" lowerBound="1">
<eGenericType eTypeParameter="#//utilities/TypedElement/C"/>
</eParameters>
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="ExpressionInOCL" abstract="true" interface="true"
eSuperTypes="#//utilities/Visitable">
<eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
<details key="name" value="ExpressionInOcl"/>
</eAnnotations>
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" lowerBound="1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="contextVariable" lowerBound="1"
containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/C"/>
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/PM"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="resultVariable" containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/C"/>
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/PM"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="parameterVariable" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/C"/>
<eTypeArguments eTypeParameter="#//utilities/ExpressionInOCL/PM"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="generatedType" ordered="false"
upperBound="-1" containment="true">
<eGenericType eTypeParameter="#//utilities/ExpressionInOCL/C"/>
</eStructuralFeatures>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PredefinedType" abstract="true" interface="true">
<eTypeParameters name="O"/>
<eOperations name="getName" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eOperations name="oclOperations" upperBound="-1">
<eGenericType eTypeParameter="#//utilities/PredefinedType/O"/>
</eOperations>
</eClassifiers>
</eSubpackages>
<eSubpackages name="expressions" nsURI="http://www.eclipse.org/ocl/1.1.0/OCL/Expressions"
nsPrefix="ocl.expr">
<eClassifiers xsi:type="ecore:EClass" name="AssociationClassCallExp">
<eTypeParameters name="C"/>
<eTypeParameters name="P"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredAssociationClass">
<eGenericType eTypeParameter="#//expressions/AssociationClassCallExp/C"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/NavigationCallExp">
<eTypeArguments eTypeParameter="#//expressions/AssociationClassCallExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/AssociationClassCallExp/P"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NavigationCallExp" abstract="true">
<eTypeParameters name="C"/>
<eTypeParameters name="P"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/NavigationCallExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="navigationSource">
<eGenericType eTypeParameter="#//expressions/NavigationCallExp/P"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/FeatureCallExp">
<eTypeArguments eTypeParameter="#//expressions/NavigationCallExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="FeatureCallExp" abstract="true">
<eTypeParameters name="C"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="markedPre" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eGenericSuperTypes eClassifier="#//expressions/CallExp">
<eTypeArguments eTypeParameter="#//expressions/FeatureCallExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CallExp" abstract="true">
<eTypeParameters name="C"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="source" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/CallExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/CallExp/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/CallingASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OCLExpression" abstract="true">
<eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
<details key="name" value="OclExpression"/>
</eAnnotations>
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//utilities/TypedElement">
<eTypeArguments eTypeParameter="#//expressions/OCLExpression/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/Visitable"/>
<eGenericSuperTypes eClassifier="#//utilities/ASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="BooleanLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="boolean_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type.name = 'Boolean'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject"/>
<eGenericSuperTypes eClassifier="#//expressions/PrimitiveLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/BooleanLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PrimitiveLiteralExp" abstract="true">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/PrimitiveLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LiteralExp" abstract="true">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/LiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionItem">
<eTypeParameters name="C"/>
<eOperations name="item_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = item.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="item" lowerBound="1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/CollectionItem/C"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/CollectionLiteralPart">
<eTypeArguments eTypeParameter="#//expressions/CollectionItem/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionLiteralPart" abstract="true">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//utilities/TypedElement">
<eTypeArguments eTypeParameter="#//expressions/CollectionLiteralPart/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/Visitable"/>
</eClassifiers>
<eClassifiers xsi: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 xsi:type="ecore:EClass" name="CollectionLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="no_collection_instances" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="kind &lt;> CollectionKind::Collection"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="set_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="kind = CollectionKind::Set implies type.oclIsKindOf(SetType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="sequence_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="kind = CollectionKind::Sequence implies type.oclIsKindOf(SequenceType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="bag_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="kind = CollectionKind::Bag implies type.oclIsKindOf(BagType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="element_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type.oclAsType(CollectionType).elementType = part->iterate(p; c : Classifier = OclVoid | c.commonSuperType(p.type))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//expressions/CollectionKind"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="part" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/CollectionLiteralPart">
<eTypeArguments eTypeParameter="#//expressions/CollectionLiteralExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="simpleRange" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
changeable="false" volatile="true" transient="true"/>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/CollectionLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="CollectionRange">
<eTypeParameters name="C"/>
<eOperations name="range_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = first.type.commonSuperType(last.type)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="first" lowerBound="1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/CollectionRange/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="last" lowerBound="1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/CollectionRange/C"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/CollectionLiteralPart">
<eTypeArguments eTypeParameter="#//expressions/CollectionRange/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="EnumLiteralExp">
<eTypeParameters name="C"/>
<eTypeParameters name="EL"/>
<eOperations name="enum_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type = referredEnumLiteral.enumeration"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredEnumLiteral">
<eGenericType eTypeParameter="#//expressions/EnumLiteralExp/EL"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/EnumLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IfExp">
<eTypeParameters name="C"/>
<eOperations name="boolean_condition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.condition.type.oclIsKindOf(PrimitiveType) and self.condition.type.name = 'Boolean'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="if_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type = thenExpression.type.commonSuperType(elseExpression.type)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="condition" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/IfExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="thenExpression" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/IfExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="elseExpression" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/IfExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/IfExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IntegerLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="integer_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type.name = 'Integer'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="integerSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="extendedIntegerSymbol"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"
defaultValueLiteral="0">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="suppressedGetVisibility" value="true"/>
<details key="suppressedSetVisibility" value="true"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="longSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"
volatile="true" transient="true" derived="true"/>
<eGenericSuperTypes eClassifier="#//expressions/NumericLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/IntegerLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NumericLiteralExp" abstract="true">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/PrimitiveLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/NumericLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnlimitedNaturalLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="natural_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type.name = 'UnlimitedNatural'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="integerSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EIntegerObject"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="unlimited" lowerBound="1"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
changeable="false" volatile="true" transient="true" derived="true"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="extendedIntegerSymbol"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"
defaultValueLiteral="0">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="suppressedGetVisibility" value="true"/>
<details key="suppressedSetVisibility" value="true"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="longSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELongObject"
volatile="true" transient="true" derived="true"/>
<eGenericSuperTypes eClassifier="#//expressions/NumericLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/UnlimitedNaturalLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="InvalidLiteralExp">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/InvalidLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IterateExp">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="iterate_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = result.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="body_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="body.type.conformsTo(result.type)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="result_init" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.result.initExpression->size() = 1"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="result" containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//expressions/IterateExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/IterateExp/PM"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/LoopExp">
<eTypeArguments eTypeParameter="#//expressions/IterateExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/IterateExp/PM"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LoopExp" abstract="true">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="source_collection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="source.type.oclIsKindOf(CollectionType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="loop_variable_init" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.iterator->forAll(initExpression->isEmpty())"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="loop_variable_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.iterator->forAll(type = source.type.oclAsType(CollectionType).elementType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="body" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/LoopExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="iterator" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//expressions/LoopExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/LoopExp/PM"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/CallExp">
<eTypeArguments eTypeParameter="#//expressions/LoopExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="Variable">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="init_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="initExpression->notEmpty() implies initExpression.type.conformsTo (type)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="initExpression" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/Variable/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="representedParameter">
<eGenericType eTypeParameter="#//expressions/Variable/PM"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//utilities/TypedElement">
<eTypeArguments eTypeParameter="#//expressions/Variable/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/Visitable"/>
<eGenericSuperTypes eClassifier="#//utilities/TypedASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="IteratorExp">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="boolean_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="name = 'exists' or name = 'forAll' or name = 'isUnique'&#xA;implies type.oclIsKindOf(PrimitiveType) and type.name = 'Boolean'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="collect_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="name = 'collect' implies&#xA;if source.type.oclIsKindOf(SequenceType) then&#xA;type = expression.type.collectionType->select(oclIsTypeOf(SequenceType))->first()&#xA;else&#xA;type = expression.type.collectionType->select(oclIsTypeOf(BagType))->first()&#xA;endif"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="select_reject_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="name = 'select' or name = 'reject' implies type = source.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="boolean_body_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="name = 'exists' or name = 'forAll' or name = 'select' or name = 'reject'&#xA;implies body.type.name = 'Boolean'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eGenericSuperTypes eClassifier="#//expressions/LoopExp">
<eTypeArguments eTypeParameter="#//expressions/IteratorExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/IteratorExp/PM"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="LetExp">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="let_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = in.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="in" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/LetExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="variable" containment="true">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//expressions/LetExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/LetExp/PM"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/LetExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="MessageExp">
<eTypeParameters name="C"/>
<eTypeParameters name="COA"/>
<eTypeParameters name="SSA"/>
<eOperations name="operation_arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="calledOperation->notEmpty() implies&#xA;argument->forall (a | a.type.conformsTo&#xA;(self.calledOperation.operation.ownedParameter->&#xA;select( kind = ParameterDirectionKind::in )&#xA;->at (argument->indexOf (a)).type))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="signal_arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="sentSignal->notEmpty() implies&#xA;argument->forall (a | a.type.conformsTo&#xA;(self.sentSignal.signal.ownedAttribute&#xA;->at (argument->indexOf (a)).type))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="target_defines_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="calledOperation->notEmpty() implies&#xA;target.type.allOperations()->includes(calledOperation.operation)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="has_operation_or_signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="calledOperation->size() + sentSignal->size() = 1"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="target_not_collection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="not target.type.oclIsKindOf(CollectionType)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="target" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/MessageExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/MessageExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="calledOperation" containment="true">
<eGenericType eTypeParameter="#//expressions/MessageExp/COA"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="sentSignal" containment="true">
<eGenericType eTypeParameter="#//expressions/MessageExp/SSA"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/MessageExp/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/CallingASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="NullLiteralExp">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/NullLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="OperationCallExp">
<eTypeParameters name="C"/>
<eTypeParameters name="O"/>
<eOperations name="arguments_conform" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="arguments->forall (a | a.type.conformsTo&#xA;(self.refParams->at (arguments->indexOf (a)).type))"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="argument_count" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="arguments->size() = refParams->size()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/OperationCallExp/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredOperation">
<eGenericType eTypeParameter="#//expressions/OperationCallExp/O"/>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="operationCode" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
volatile="true" transient="true"/>
<eGenericSuperTypes eClassifier="#//expressions/FeatureCallExp">
<eTypeArguments eTypeParameter="#//expressions/OperationCallExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="PropertyCallExp">
<eTypeParameters name="C"/>
<eTypeParameters name="P"/>
<eOperations name="property_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = referredProperty.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredProperty">
<eGenericType eTypeParameter="#//expressions/PropertyCallExp/P"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/NavigationCallExp">
<eTypeArguments eTypeParameter="#//expressions/PropertyCallExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/PropertyCallExp/P"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="RealLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="real_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type.name = 'Real'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="realSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDoubleObject"/>
<eGenericSuperTypes eClassifier="#//expressions/NumericLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/RealLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StateExp">
<eTypeParameters name="C"/>
<eTypeParameters name="S"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredState">
<eGenericType eTypeParameter="#//expressions/StateExp/S"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/StateExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="StringLiteralExp">
<eTypeParameters name="C"/>
<eOperations name="string_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="self.type.name = 'String'"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="stringSymbol" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
<eGenericSuperTypes eClassifier="#//expressions/PrimitiveLiteralExp">
<eTypeArguments eTypeParameter="#//expressions/StringLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TupleLiteralExp">
<eTypeParameters name="C"/>
<eTypeParameters name="P"/>
<eOperations name="tuple_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type.oclIsKindOf (TupleType)&#xA;and&#xA;part->forAll (tlep |&#xA;type.oclAsType (TupleType).allProperties()->exists (tp | tlep.attribute = tp))&#xA;and&#xA;part->size() = type.oclAsType (TupleType).allProperties()->size()"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eOperations name="parts_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="part->isUnique (attribute.name)"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="part" upperBound="-1"
containment="true">
<eGenericType eClassifier="#//expressions/TupleLiteralPart">
<eTypeArguments eTypeParameter="#//expressions/TupleLiteralExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/TupleLiteralExp/P"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/LiteralExp">
<eTypeArguments eTypeParameter="#//expressions/TupleLiteralExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TupleLiteralPart">
<eTypeParameters name="C"/>
<eTypeParameters name="P"/>
<eOperations name="value_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="attribute.type = value.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="value" containment="true">
<eGenericType eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/TupleLiteralPart/C"/>
</eGenericType>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EReference" name="attribute">
<eGenericType eTypeParameter="#//expressions/TupleLiteralPart/P"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//utilities/TypedElement">
<eTypeArguments eTypeParameter="#//expressions/TupleLiteralPart/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/Visitable"/>
<eGenericSuperTypes eClassifier="#//utilities/TypedASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="TypeExp">
<eTypeParameters name="C"/>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredType">
<eGenericType eTypeParameter="#//expressions/TypeExp/C"/>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/TypeExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UnspecifiedValueExp">
<eTypeParameters name="C"/>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/UnspecifiedValueExp/C"/>
</eGenericSuperTypes>
<eGenericSuperTypes eClassifier="#//utilities/TypedASTNode"/>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="VariableExp">
<eTypeParameters name="C"/>
<eTypeParameters name="PM"/>
<eOperations name="var_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="type = referredVariable.type"/>
</eAnnotations>
<eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The chain of diagnostics to which problems are to be appended."/>
</eAnnotations>
</eParameters>
<eParameters name="context">
<eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
<details key="documentation" value="The cache of context-specific information."/>
</eAnnotations>
<eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
<eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
</eGenericType>
</eParameters>
</eOperations>
<eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable">
<eGenericType eClassifier="#//expressions/Variable">
<eTypeArguments eTypeParameter="#//expressions/VariableExp/C"/>
<eTypeArguments eTypeParameter="#//expressions/VariableExp/PM"/>
</eGenericType>
</eStructuralFeatures>
<eGenericSuperTypes eClassifier="#//expressions/OCLExpression">
<eTypeArguments eTypeParameter="#//expressions/VariableExp/C"/>
</eGenericSuperTypes>
</eClassifiers>
</eSubpackages>
</ecore:EPackage>