<?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="data"
    nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data.ecore"
    nsPrefix="data">
  <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
    <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
  </eAnnotations>
  <eSubpackages name="classes" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/classes.ecore"
      nsPrefix="data.classes">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="BOs, BONodes, associations, regardless the association implementation (foreign keys, persistence structures, IDs, ...). Nodes have attributes that have types. Resulting is a datatype for the node that can be used, e.g., in the action language."/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="modelmanagement.ecore#//NamedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="UniquenessOnBothEndsMustBeTheSame" value="self.ends->forAll( e1, e2 : AssociationEnd |&#xD;&#xA;              e1 &lt;> e2 implies e1.type.unique = e2.type.unique)"/>
        <details key="AtMostOneCompositeEnd" value="self.ends->select(composite)->size() &lt; 2"/>
        <details key="AtLeastOneNavigableEnd" value="self.ends->select(ae:AssociationEnd | ae.navigable)->notEmpty()"/>
        <details key="AtMostOneEqualityContributionForTwoValueClasses" value="self.ends->select(contributesToEquality and type.clazz.valueType)->size() &lt; 2"/>
        <details key="AtMostOneOrderedEnd" value="self.ends->select(ae|ae.type.ordered)->size() &lt; 2"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="UniquenessOnBothEndsMustBeTheSame AtMostOneCompositeEnd AtLeastOneNavigableEnd AtMostOneEqualityContributionForTwoValueClasses AtMostOneOrderedEnd"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ends" lowerBound="2"
          upperBound="2" eType="#//classes/AssociationEnd" containment="true" eOpposite="#//classes/AssociationEnd/association"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="package_" lowerBound="1"
          eType="ecore:EClass modelmanagement.ecore#//Package" transient="true" eOpposite="modelmanagement.ecore#//Package/associations"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="timeDependency" eType="#//timedependency/TimeDependency"
          containment="true" eOpposite="#//timedependency/TimeDependency/association"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="abapAnnotation" eType="ecore:EClass abapmapping.ecore#//AbapAssociationImplementationAnnotation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Signature" abstract="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Defines an abstract callable operation or block signature with input parameter types, return type and exception / fault types. A signature may also be implemented by association navigation expressions or link set manipulation statements.&#xD;&#xA;&#xD;&#xA;The enforcement of side effect freeness is the SignatureImplementation subclasses' responsibility."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="OnlyTrailingOptionalParameters" value="self.input->forAll(p | p.defaultValue->notEmpty() implies Sequence{(self.input->indexOf(p)+1)..self.input->size()}->forAll(&#xD;&#xA;    i | self.input->at(i).defaultValue->notEmpty()))"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="OnlyTrailingOptionalParameters"/>
      </eAnnotations>
      <eOperations name="conformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self = s then&#xA;    true&#xA;  else&#xA;    self.conformsToExcluding(s, Sequence{}, Sequence{})&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eParameters name="s" ordered="false" unique="false" lowerBound="1" eType="#//classes/Signature"/>
      </eOperations>
      <eOperations name="conformsToExcluding" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if s = self then&#xA;    true&#xA;  else&#xA;    let nameConforms:Boolean = self.oclIsKindOf(MethodSignature) and s.oclIsKindOf(MethodSignature) &#xA;       implies s.oclAsType(MethodSignature).name = self.oclAsType(MethodSignature).name in&#xA;    nameConforms and&#xA;    (s.sideEffectFree implies self.sideEffectFree) and&#xA;    s.input->size() = self.input->size() and&#xA;    Sequence{1..self.input->size()}->&#xA;      forAll(i | s.input->at(i).getType().conformsToExcluding(self.input->at(i).getType(), excludingConforming, excludingTo)) and&#xA;    s.output->size() = self.output->size() and&#xA;    Sequence{1..self.output->size()}->&#xA;      forAll(i | self.output->asSequence()->at(i).conformsToExcluding(s.output->asSequence()->at(i), excludingConforming, excludingTo))&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."/>
        </eAnnotations>
        <eParameters name="s" ordered="false" unique="false" lowerBound="1" eType="#//classes/Signature"/>
        <eParameters name="excludingConforming" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
        <eParameters name="excludingTo" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="getNamedValuesInScope" ordered="false" upperBound="-1" eType="#//classes/NamedValue">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.getOwningClass().formalObjectParameters->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="For a signature, only the owning class's formal object parameters are in scope."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getOwningClass" ordered="false" unique="false" eType="#//classes/SapClass">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(MethodSignature) then&#xA;    let owner:SignatureOwner = self.oclAsType(MethodSignature).owner in&#xA;    if owner.oclIsKindOf(SapClass) then&#xA;      owner.oclAsType(SapClass)&#xA;    else&#xA;      null    -- e.g., TypeAdapter&#xA;    endif&#xA;  else&#xA;    self.oclAsType(FunctionSignature).getImplementedAnonymousFunctionExpression().getOwningClass()&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="sideEffectFree" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="If this flag is set, the signature's implementation must not use a link-modifying implementation on any object of an entity class. It is permissible for an implementation to create value objects. All signatures being called by an implementation must then also have this flag set.&#xD;&#xA;&#xD;&#xA;This flag is also relevant for conformance. A signature only conforms to one with this flag set if it also has this flag set.&#xD;&#xA;&#xD;&#xA;Note that activities that do not modify the link structure may still have side effects outside of the scope of this programming model, such as producing a log entry in some persistence layer about a query being executed. Such side effects that are outside of this programming model do not count as a side effect in the sense of this flag. In particular, they do not make the program's semantics depend on execution order of such signature implementations."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="faults" eType="#//classes/SapClass"
          eOpposite="#//classes/SapClass/signaturesWithFault"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="output" eType="#//classes/TypeDefinition"
          eOpposite="#//classes/TypeDefinition/signaturesWithOutput"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTypeDefinitions"
          eType="#//classes/TypeDefinition" containment="true" eOpposite="#//classes/TypeDefinition/ownerSignature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
          eType="#//classes/Parameter" containment="true" eOpposite="#//classes/Parameter/ownerSignature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="typeDefinition" upperBound="-1"
          eType="#//classes/FunctionSignatureTypeDefinition" eOpposite="#//classes/FunctionSignatureTypeDefinition/signature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="preconditions" upperBound="-1"
          eType="#//constraints/Constraint" containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml">
          <details key="Property.oppositeRoleName" value="preconditionForSignature"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="postconditions" upperBound="-1"
          eType="#//constraints/Constraint" containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml">
          <details key="Property.oppositeRoleName" value="postconditionForSignature"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="abapAnnotation" eType="ecore:EClass abapmapping.ecore#//AbapSignatureImplementationAnnotation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="AssociationEnd" eSuperTypes="modelmanagement.ecore#//NamedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ExposingClassesEqualOppositeEndsType" value="self.signatureImplementations.implements_.owner->forAll(c:SignatureOwner | c = self.otherEnd().type.clazz)"/>
        <details key="NoCompositionWithValueClass" value="self.composite implies self.association.ends.type->forAll(ctd:ClassTypeDefinition | not ctd.clazz.valueType)"/>
        <details key="EqualityContributionsMustBeExposedAndNavigable" value="self.contributesToEquality implies (self.otherEnd().signatureImplementations->notEmpty() and self.otherEnd().navigable)"/>
        <details key="EqualityContributingEndOnValueMustHaveUnlimitedUpperBounds"
            value="(self.type.clazz.valueType and self.contributesToEquality and&#xD;&#xA;   self.type.clazz.getAssociationEnds()->exists(ae |&#xD;&#xA;     ae &lt;> self and ae.contributesToEquality)) implies&#xD;&#xA;  self.type.isMany()"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ExposingClassesEqualOppositeEndsType NoCompositionWithValueClass EqualityContributionsMustBeExposedAndNavigable EqualityContributingEndOnValueMustHaveUnlimitedUpperBounds"/>
      </eAnnotations>
      <eOperations name="otherEnd" ordered="false" unique="false" lowerBound="1" eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="association.ends->select(ae|ae &lt;> self)->first()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="navigable" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Means that the association can be navigated in that direction towards this end. Note that non-navigability does not serve as a security-related feature. If all objects of the type at the other end can be enumerated and because the association has to be navigable in at least one direction, it will be possible to find out those objects on the other end that are linked to an instance which semantically implements navigation again, only potentially very slowly if the extent to enumerate is large."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="composite" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Expresses ownership that for entity-to-entity associations also implies delete propagation. Only one of the two association ends can be marked as composite. The end marked in this way attaches to the &quot;owning&quot; class whereas the otherEnd() attaches to the &quot;owned&quot; class.&#xD;&#xA;&#xD;&#xA;Composition cannot be used for value classes. Values cannot be owned, and values cannot own anything."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="contributesToEquality"
          ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="If true, this association end contributes to the equality of the exposing class. An equality-contributing association end must be exposed (maybe with private visibility) because it is relevant for the contract of that class.&#xD;&#xA;&#xD;&#xA;It is a questionable construct to have both ends contribute to equality if both classes are value classes because it would mean that values of either of the classes can be identified only in pairs. The equality definition would be recursive, and an implementation would have to understand this and cut short the recursion, comparing only all other equality-related association end values."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="association" lowerBound="1"
          eType="#//classes/Association" transient="true" eOpposite="#//classes/Association/ends"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="delegation" eType="#//classes/Delegation"
          containment="true" eOpposite="#//classes/Delegation/from"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="signatureImplementations"
          upperBound="-1" eType="#//classes/AssociationEndSignatureImplementation"
          eOpposite="#//classes/AssociationEndSignatureImplementation/end"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//classes/ClassTypeDefinition" containment="true" eOpposite="#//classes/ClassTypeDefinition/associationEnd"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="abapAnnotation" eType="ecore:EClass abapmapping.ecore#//AbapAssociationEndImplementationAnnotation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SapClass" eSuperTypes="#//classes/SignatureOwner behavioral.ecore#//events/EventProducer">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="OnlyValueClassesCanHaveObjectParameters" value="self.formalObjectParameters->notEmpty() implies self.valueType"/>
        <details key="OnlyObjectParameterizedClassesCanHaveConverter" value="self.converterBetweenParametrizations->notEmpty() implies self.formalObjectParameters->notEmpty()"/>
        <details key="OnlyTrailingOptionalParameters" value="self.formalObjectParameters->forAll(p | p.defaultValue->notEmpty() implies Sequence{(self.formalObjectParameters->indexOf(p)+1)..self.formalObjectParameters->size()}->forAll(&#xD;&#xA;    i | self.formalObjectParameters->at(i).defaultValue->notEmpty()))"/>
        <details key="NoRecursionForObjectParameters" value="true  --  TODO implement this"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="OnlyValueClassesCanHaveObjectParameters OnlyObjectParameterizedClassesCanHaveConverter OnlyTrailingOptionalParameters NoRecursionForObjectParameters"/>
      </eAnnotations>
      <eOperations name="isAbstract" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="not (self.allSignatures()->forAll(s:MethodSignature | not s.isAbstract()))"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="isParameterizedClassDefinition" ordered="false" unique="false"
          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.parameterization->notEmpty()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="conformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsUndefined() then&#xA;    false&#xA;  else&#xA;    self.conformsToExcluding(type, Sequence{}, Sequence{})&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="A class A conforms to a class B if they are the same or if there is a chain of (TypeAdapter_i, Class_i) pairs (0&lt;=i&lt;=n) where TypeAdapter_0 adapts A to Class_0, and where Class_n is B."/>
        </eAnnotations>
        <eParameters name="type" ordered="false" unique="false" lowerBound="1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="allSignatures" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.allSignaturesExcluding(Set{})"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Computes all locally-defined signatures plus those signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter, plus allSignatures() recursively of all classes to which this class delegates."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="delegatesTo" ordered="false" upperBound="-1" eType="#//classes/SapClass">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then&#xA;    self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.delegatesTo()&#xA;  else&#xA;    if self.oclIsKindOf(data::generics::FormalTypeParameter) then&#xA;      self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.delegatesTo())->flatten()->asSet()&#xA;    else&#xA;      -- TODO improve OCL impact analysis algorithm so that this doesn't kill performance:&#xA;      -- Set{}  -- use this for good performance&#xA;      self.getAssociationEnds().otherEnd()->select(delegation->notEmpty()).type.clazz->reject(c|c=self)->asSet()    -- currently bad performance&#xA;    endif&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="A class can delegate to another class via an attached association end that in turn has attached a Delegation element. The delegating class by this exposes all operations and association ends exposed by the delegate class (recursively). The semantics of such a delegation is that when invoked, the invocation will be forwarded to the delegate object transparently and recursively.&#xD;&#xA;&#xD;&#xA;Note, that TypeAdapter objects cannot delegate because they cannot have association ends attached to them. They can only expose association ends whose other end is attached to a class to which the TypeAdapter conforms."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="conformsToExcluding" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if oclIsUndefined() then&#xA;    false&#xA;  else&#xA;  if self = type then&#xA;   true&#xA;  else&#xA;    if Sequence{1..excludingConforming->size()}->exists(i|&#xA;        excludingConforming->asSequence()->at(i) = self and excludingTo->asSequence()->at(i) = type) then&#xA;     true&#xA;  else&#xA;    self.adapters->exists(a|a.to.conformsToExcluding(type, excludingConforming->including(self), excludingTo->including(type))) or&#xA;    (if self.oclIsKindOf(data::generics::FormalTypeParameter) then&#xA;        if self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->notEmpty() then&#xA;            self.oclAsType(data::generics::FormalTypeParameter).typeConstraint.conformsToExcluding(type, excludingConforming->including(self), excludingTo->including(type))&#xA;        else&#xA;            false&#xA;        endif&#xA;    else&#xA;        false&#xA;    endif)&#xA;  endif&#xA;  endif&#xA;endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."/>
        </eAnnotations>
        <eParameters name="type" ordered="false" unique="false" lowerBound="1" eType="#//classes/SapClass"/>
        <eParameters name="excludingConforming" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
        <eParameters name="excludingTo" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="signaturesWithDelegation" ordered="false" upperBound="-1"
          eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.signaturesWithDelegationExcluding(Set{})"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Signature declared directly by this class and those signatures obtained by delegation, recursively."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="delegatedSignatures" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.delegatesTo().signaturesWithDelegation()->flatten()->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Signatures obtained by delegation recursively."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="adaptedSignatures" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.adaptedSignaturesExcluding(Set{})"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Computes signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="adaptedSignaturesExcluding" ordered="false" upperBound="-1"
          eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if excluding->count(self)=0 then&#xA;    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then&#xA;      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.adaptedSignaturesExcluding(excluding->including(self))&#xA;    else&#xA;      if self.oclIsKindOf(data::generics::FormalTypeParameter) then&#xA;        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.adaptedSignaturesExcluding(excluding->including(self)))->flatten()->asSet()&#xA;      else&#xA;        self.adapters.allSignaturesExcluding(excluding->including(self))&#xA;          ->select(s | not self.ownedSignatures->exists(os | os.conformsTo(s)))&#xA;          ->flatten()->asSet()&#xA;      endif&#xA;    endif&#xA;  else&#xA;    Set{}&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Computes signatures offered by any type adapter adapting this class to another class, minus those signatures redefined in the local class"/>
        </eAnnotations>
        <eParameters name="excluding" ordered="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="allSignaturesExcluding" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if excluding->count(self)=0 then&#xA;    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then&#xA;      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.allSignaturesExcluding(excluding->including(self))&#xA;    else&#xA;      if self.oclIsKindOf(data::generics::FormalTypeParameter) then&#xA;        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.allSignaturesExcluding(excluding->including(self)))->flatten()->asSet()&#xA;      else&#xA;        self.signaturesWithDelegationExcluding(excluding)->union(self.adaptedSignaturesExcluding(excluding))&#xA;      endif&#xA;    endif&#xA;  else&#xA;    Set{}    &#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Computes all locally-defined signatures plus those signatures offered by any Class (directly, or by delegation or recursively by type adaptation) attached to this class as a type adapter, plus allSignatures() recursively of all classes to which this class delegates."/>
        </eAnnotations>
        <eParameters name="excluding" ordered="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="signaturesWithDelegationExcluding" ordered="false" upperBound="-1"
          eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if excluding->count(self)=0 then &#xA;    if self.oclIsKindOf(data::generics::ParameterizedClassInstantiation) then&#xA;      self.oclAsType(data::generics::ParameterizedClassInstantiation).parameterizedClass.signaturesWithDelegationExcluding(excluding->including(self))&#xA;    else&#xA;      if self.oclIsKindOf(data::generics::FormalTypeParameter) then&#xA;        self.oclAsType(data::generics::FormalTypeParameter).typeConstraint->collect(c:SapClass | c.signaturesWithDelegationExcluding(excluding->including(self)))->flatten()->asSet()&#xA;      else&#xA;        self.ownedSignatures->union(self.delegatesTo().signaturesWithDelegationExcluding(excluding->including(self)))->flatten()->asSet()&#xA;      endif&#xA;    endif&#xA;else&#xA;  Set{}&#xA;endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Signature declared directly by this class and those signatures obtained by delegation, recursively."/>
        </eAnnotations>
        <eParameters name="excluding" ordered="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="delegatedSignaturesExcluding" ordered="false" upperBound="-1"
          eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if excluding->count(self)=0 then&#xA;  self.delegatesTo().signaturesWithDelegationExcluding(excluding->including(self))->flatten()->asSet()&#xA;else&#xA;  Set{}&#xA;endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Signatures obtained by delegation recursively."/>
        </eAnnotations>
        <eParameters name="excluding" ordered="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="getConformingClasses" ordered="false" upperBound="-1" eType="#//classes/SapClass">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.adaptedBy.adapted.getConformingClasses()->including(self)->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getAssociationEnds" ordered="false" upperBound="-1" eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.elementsOfType->collect(associationEnd->asSet())->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Retrieves those association ends that use this class in their type definition."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getEqualityRelevantAssociationEnds" ordered="false" upperBound="-1"
          eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.getAssociationEnds()->select(ae|ae.contributesToEquality)"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Obtains all association ends that use this class in their type definition and that contribute to this class's equality, indicated by their contributesToEquality attribute being set to true."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getConformsToClasses" ordered="false" upperBound="-1" eType="#//classes/SapClass">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.adapters.to.getConformsToClasses()->including(self)->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Determines all classes to which this class conforms, directly and transitively, through chains of TypeAdapters. The result includes this class itself."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getConformsToAssociationEnds" ordered="false" upperBound="-1"
          eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.getConformsToClasses().getAssociationEnds()->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Determines all association ends to whose type this class conforms. This means that an instance of this class can be inserted on that respective end of the corresponding association. For example, if there is an association between Order and Item with ends &quot;order&quot; and &quot;items&quot; and there are classes SalesOrder and SalesOrderItem conforming to Order and Item, respectively, then the &quot;order&quot; end will be returned by this method when invoked on the SalesOrder class because SalesOrder conforms to Order and therefore a SalesOrder can be inserted into the association in role &quot;order.&quot;"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getConformsToCompositeParentAssociationEnds" ordered="false"
          upperBound="-1" eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.getConformsToClasses().getAssociationEnds()->select(ae|ae.composite)->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Like getConformsToAssociationEnds(), but selects only those association ends that are marked as composite."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getConformsToCompositeChildAssociationEnds" ordered="false"
          upperBound="-1" eType="#//classes/AssociationEnd">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.getConformsToClasses().getAssociationEnds()->select(ae|ae.otherEnd().composite)->asSet()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Like getConformsToAssociationEnds(), but selects only those association ends whose other ends are marked as composite."/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="subscription" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//events/Subscription" containment="true"
          eOpposite="behavioral.ecore#//events/Subscription/subscribingClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="samActions" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//status_and_action_old/SAMAction"
          containment="true" eOpposite="behavioral.ecore#//status_and_action_old/SAMAction/businessObjectNode"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="samStatusVariables" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//status_and_action_old/SAMStatusVariable"
          containment="true" eOpposite="behavioral.ecore#//status_and_action_old/SAMStatusVariable/businessObjectNode"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="samDerivators" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//status_and_action_old/SAMDerivator"
          containment="true" eOpposite="behavioral.ecore#//status_and_action_old/SAMDerivator/businessObject"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="samStatusSchema" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//status_and_action_old/SAMStatusSchema"
          containment="true" eOpposite="behavioral.ecore#//status_and_action_old/SAMStatusSchema/businessObjectNode"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="behaviouralModel" upperBound="-1"
          eType="ecore:EClass behavioral.ecore#//status_and_action/assembly/StatusSchema"
          eOpposite="behavioral.ecore#//status_and_action/assembly/StatusSchema/node"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="valueType" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="If true, instances of the class will be immutable. Comparison will be by equality. Their identity is defined by value equality. Value types can of course contain associations to non-value (or &quot;entity&quot;) types.&#xD;&#xA;&#xD;&#xA;As opposed to value types, instances of entity types have identity and mutable state. They are always passed by reference. Variables only hold a reference to a shared instance. Comparing two entity objects using &quot;Equals&quot; will compare their identities."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="signaturesWithFault"
          upperBound="-1" eType="#//classes/Signature" eOpposite="#//classes/Signature/faults"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="elementsOfType" upperBound="-1"
          eType="#//classes/ClassTypeDefinition" eOpposite="#//classes/ClassTypeDefinition/clazz"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="package_" eType="ecore:EClass modelmanagement.ecore#//Package"
          transient="true" eOpposite="modelmanagement.ecore#//Package/classes"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="adaptedBy" upperBound="-1"
          eType="#//classes/TypeAdapter" eOpposite="#//classes/TypeAdapter/to"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="adapters" upperBound="-1"
          eType="#//classes/TypeAdapter" containment="true" eOpposite="#//classes/TypeAdapter/adapted"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="formalObjectParameters"
          upperBound="-1" eType="#//classes/Parameter" containment="true" eOpposite="#//classes/Parameter/parameterOfClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="converterBetweenParametrizations"
          eType="#//classes/ConverterBetweenParametrizations" containment="true" eOpposite="#//classes/ConverterBetweenParametrizations/clazz"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="constraints" upperBound="-1"
          eType="#//constraints/Constraint" containment="true" eOpposite="#//constraints/Constraint/constrainedType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="timeDependency" eType="#//timedependency/TimeDependency"
          containment="true" eOpposite="#//timedependency/TimeDependency/theClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameterization" eType="#//generics/ClassParameterization"
          containment="true" eOpposite="#//generics/ClassParameterization/owningClassDefinition"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="abapAnnotation" eType="ecore:EClass abapmapping.ecore#//AbapClassImplementationAnnotation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Delegation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Exposes all features (operations and exposed association ends) of the class to which the opposite of the &quot;from&quot; end is attached as features of the &quot;from&quot; end's class. In particular, this makes the &quot;from&quot; class conform to the type of the &quot;to&quot; association end.&#xD;&#xA;&#xD;&#xA;The lower and upper multiplicity of the &quot;from&quot; opposite's association end must be 1 because a single instance is required in order to the &quot;from&quot; type to be able to delegate to it."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ToEndMustHaveMultiplicityOfOne" value="self.from.otherEnd().type.lowerMultiplicity = 1 and&#xD;&#xA;  self.from.otherEnd().type.upperMultiplicity = 1"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ToEndMustHaveMultiplicityOfOne"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="allFeatures" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1"
          eType="#//classes/AssociationEnd" transient="true" eOpposite="#//classes/AssociationEnd/delegation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true">
      <eOperations name="conformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self = typedElement or&#xA;  self.getType().conformsTo(typedElement.getType())"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="A typed element consisting of a type with a multiplicity conforms to another typed element if this typed element's type conforms to the other type element's type, and this type element's multiplicity &quot;conforms&quot; to the other type element's multiplicity. In particular, equal multiplicities conform to each other.&#xD;&#xA;&#xD;&#xA;TODO: decide if and how non-equal multiplicites may still conform; for example, a single element may implicitly conform to a collection of elements of conforming type; however, additions to the single element would not be possible."/>
        </eAnnotations>
        <eParameters name="typedElement" ordered="false" unique="false" lowerBound="1"
            eType="#//classes/TypedElement"/>
      </eOperations>
      <eOperations name="getType" ordered="false" unique="false" lowerBound="1" eType="#//classes/TypeDefinition">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.ownedTypeDefinition->notEmpty() then&#xA;    self.ownedTypeDefinition&#xA;  else&#xA;    if self.oclIsKindOf(behavioral::actions::Variable) then&#xA;      self.oclAsType(behavioral::actions::Variable).initExpression.getType()&#xA;    else if self.oclIsKindOf(behavioral::actions::Constant) then&#xA;      if self.oclAsType(behavioral::actions::Constant).initExpression->notEmpty() then&#xA;        self.oclAsType(behavioral::actions::Constant).initExpression.getType()&#xA;      else&#xA;         if self.oclAsType(behavioral::actions::Constant)._iterate->notEmpty() then&#xA;           self.oclAsType(behavioral::actions::Constant)._iterate.iteratorExpression.getType()&#xA;         else&#xA;           null&#xA;         endif&#xA;      endif&#xA;    else if self.oclIsKindOf(behavioral::actions::Iterator) then&#xA;      if self.oclAsType(behavioral::actions::Iterator).boundToFor->notEmpty() then&#xA;        if self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType().oclIsKindOf(data::classes::NestedTypeDefinition) then&#xA;          -- if the selection's object has a nested type definition, un-nest by one level&#xA;          self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType().oclAsType(data::classes::NestedTypeDefinition).type&#xA;        else&#xA;          -- the tool should infer a better match; this as a better default than &quot;null&quot;&#xA;          self.oclAsType(behavioral::actions::Iterator).boundToFor.collection.getType()&#xA;        endif&#xA;      else&#xA;        let selection:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator).selection.object->asSet() in&#xA;        let groupby:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator).factOfGroupBy.object->asSet() in&#xA;        let iterateexp:Set(dataaccess::expressions::Expression)=self.oclAsType(behavioral::actions::Iterator)._iterate.source->asSet() in&#xA;        let iteratesource:Set(dataaccess::expressions::Expression)=selection->union(groupby)->union(iterateexp) in&#xA;        if iteratesource->notEmpty() then&#xA;          if iteratesource->any(true).getType().oclIsKindOf(data::classes::NestedTypeDefinition) then&#xA;            -- if the Selection's/GroupBy's object has a nested type definition, un-nest by one level&#xA;            iteratesource->any(true).getType().oclAsType(data::classes::NestedTypeDefinition).type&#xA;          else&#xA;            -- In this case the tool should create a cloned tpye definition with multiplicities set to 1;&#xA;            -- Just in case the tool doesn't do this and for the case where the object has upper&#xA;            -- multiplicity 1, use the object's type as the default for the &quot;self&quot; iterator&#xA;            iteratesource->any(true).getType()&#xA;          endif&#xA;        else&#xA;          if self.oclAsType(behavioral::actions::Iterator).groupedFactsOfGroupBy->notEmpty() then&#xA;            -- the groups of a group-by expression can re-used the facts type&#xA;            self.oclAsType(behavioral::actions::Iterator).factOfGroupBy.object.getType()&#xA;          else&#xA;            if self.oclAsType(behavioral::actions::Iterator).dimension->notEmpty() then&#xA;              -- the DimensionDefinition's expression defines the dimension iterator's type&#xA;              self.oclAsType(behavioral::actions::Iterator).dimension.expression.getType()&#xA;            else&#xA;              -- Then we have no idea how to infer the Iterator's type&#xA;              null&#xA;            endif&#xA;          endif&#xA;        endif&#xA;      endif&#xA;    else if self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Including) or self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Excluding) then&#xA;      self.oclAsType(dataaccess::expressions::collectionexpressions::CollectionExpression).source.getType()&#xA;    else if self.oclIsKindOf(dataaccess::expressions::collectionexpressions::Iterate) then&#xA;      self.oclAsType(dataaccess::expressions::collectionexpressions::Iterate).iteratorExpression.getType()&#xA;    else if self.oclIsKindOf(Parameter) then&#xA;      if self.oclAsType(Parameter).defaultValue->notEmpty() then&#xA;        self.oclAsType(Parameter).defaultValue.getType()&#xA;      else&#xA;        if self.oclAsType(Parameter).ownerSignature.oclIsKindOf(MethodSignature) and&#xA;        self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation->notEmpty() and&#xA;        self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation.oclIsKindOf(AssociationEndSignatureImplementation) then&#xA;  &#x9;let impl:AssociationEndSignatureImplementation = self.oclAsType(Parameter).ownerSignature.oclAsType(MethodSignature).implementation.oclAsType(AssociationEndSignatureImplementation) in&#xA;            impl.end.type&#xA;        else&#xA;          if self.oclAsType(Parameter).ownerSignature.oclIsKindOf(FunctionSignature) then&#xA;            if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).dimension->notEmpty() then&#xA;              self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).dimension.cellSet.factsType&#xA;            else&#xA;              if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForValueFunction->notEmpty() then&#xA;                self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForValueFunction.factsType&#xA;              else&#xA;                if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction->notEmpty() then&#xA;                  if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.valueFunction->notEmpty() then&#xA;                    self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.valueFunction.output&#xA;                  else&#xA;                    self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).cellSetForAggregationFunction.factsType&#xA;                  endif&#xA;                else&#xA;                  if self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclIsKindOf(dataaccess::analytics::CellSet) then&#xA;                    let pos:Integer = self.oclAsType(Parameter).ownerSignature.input->indexOf(self.oclAsType(Parameter)) in&#xA;                    if pos = 1 then&#xA;                      self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclAsType(dataaccess::analytics::CellSet).factsType&#xA;                    else&#xA;                      self.oclAsType(Parameter).ownerSignature.oclAsType(FunctionSignature).implementation.oclAsType(dataaccess::analytics::CellSet).&#xA;                          dimensions->at(-1+pos).characteristicFunction.output&#xA;                    endif&#xA;                  else&#xA;                    null&#xA;                  endif&#xA;                endif&#xA;              endif&#xA;            endif&#xA;          else&#xA;            null&#xA;          endif&#xA;        endif&#xA;      endif&#xA;    else if self.oclIsKindOf(dataaccess::analytics::DimensionExpression) then&#xA;      -- TODO Here, the multiplicity would have to be forced to 0..*&#xA;      self.oclAsType(dataaccess::analytics::DimensionExpression).dimensionParameter.getType()&#xA;    else if self.oclIsKindOf(dataaccess::expressions::VariableExpression) then&#xA;      self.oclAsType(dataaccess::expressions::VariableExpression).variable.getType()&#xA;    else if self.oclIsKindOf(dataaccess::expressions::SignatureCallExpression) then&#xA;      self.oclAsType(dataaccess::expressions::SignatureCallExpression).getSignature().output&#xA;    else if self.oclIsKindOf(dataaccess::expressions::AssociationEndNavigationExpression) then&#xA;      self.oclAsType(dataaccess::expressions::AssociationEndNavigationExpression).toEnd.type&#xA;    else if self.oclIsKindOf(dataaccess::expressions::Replace) then&#xA;      self.oclAsType(dataaccess::expressions::Replace).object.getType()&#xA;    else if self.oclIsKindOf(dataaccess::expressions::Ternary) then&#xA;      -- Find the &quot;least&quot; TypeDefinition to which both, trueExpr.getType() and falseExpr.getType() conform.&#xA;      -- We determine the more general of the two types; we cannot synthesize a new TypeDefinition in OCL.&#xA;      -- Doing so would have to be done by explicit typing, setting the ownedTypeDefinition explicitly&#xA;      if self.oclAsType(dataaccess::expressions::Ternary).trueExpr.getType().conformsTo(self.oclAsType(dataaccess::expressions::Ternary).falseExpr.getType()) then&#xA;        self.oclAsType(dataaccess::expressions::Ternary).falseExpr.getType()&#xA;      else&#xA;        self.oclAsType(dataaccess::expressions::Ternary).trueExpr.getType()&#xA;      endif&#xA;    else if self.oclIsKindOf(dataaccess::query::Selection) then&#xA;      self.oclAsType(dataaccess::query::Selection).object.getType()&#xA;    else&#xA;      null&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;    endif&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Determined the type of the element. If the element owns a type definition, that one is assumed to be the result. Otherwise, &quot;polymorphically&quot; (we will refactor this once we can defined OCL method bodies polymorphically) we determine the type of the respective element.&#xD;&#xA;&#xD;&#xA;TODO the inference for Iterator elements used in an Iterate expression needs to resolve NestedTypeDefinitions; for non-NestedTypeDefinition type definitions it needs to reduce the multiplicity to exactly 1."/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTypeDefinition"
          eType="#//classes/TypeDefinition" containment="true" eOpposite="#//classes/TypeDefinition/ownerTypedElement"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Context" eSuperTypes="modelmanagement.ecore#//NamedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="An instance of a class can occur in a number of contexts. Each context has a characteristic condition that an object has to fulfill in order to &quot;be in that context.&quot;&#xD;&#xA;&#xD;&#xA;A context can specify constraints, additional events that the object may raise, or preconditions for operations of the object's class.&#xD;&#xA;&#xD;&#xA;(Currently, the metamodel only describes context-based constraints; events and preconditions may have to be added later.)"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ConditionMustBeBoolean" value="self.condition.getType().upperMultiplicity = 1 and&#xD;&#xA;  self.condition.getType().oclIsKindOf(ClassTypeDefinition) and&#xD;&#xA;  self.condition.getType().oclAsType(ClassTypeDefinition).clazz.name = 'Boolean'"/>
        <details key="ConstraintForRightClass" value="self.constraints->forAll(c | c.constrainedType = self.for_)"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ConditionMustBeBoolean ConstraintForRightClass"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="for_" lowerBound="1"
          eType="#//classes/SapClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="constraints" upperBound="-1"
          eType="#//constraints/Constraint" containment="true" eOpposite="#//constraints/Constraint/theContext"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
          eType="ecore:EClass dataaccess.ecore#//expressions/Expression" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Multiplicity" abstract="true">
      <eOperations name="isMany" ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.upperMultiplicity > 1 or self.upperMultiplicity = -1"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerMultiplicity" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="The lower bounds of this multiplicity."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperMultiplicity" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="The upper bounds of this multiplicity. Unlimited is encoded as -1."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordered" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="unique" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SignatureImplementation" abstract="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="A signature can be implemented by a block (this would be a &quot;method&quot; in the classical sense) or, e.g., by an association navigation or by a link set manipulation statement."/>
      </eAnnotations>
      <eOperations name="getImplementedSignature" ordered="false" unique="false" lowerBound="1"
          eType="#//classes/Signature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(FunctionSignatureImplementation) then&#xA;    if self.oclAsType(FunctionSignatureImplementation).functionSignature->notEmpty() then&#xA;      self.oclAsType(FunctionSignatureImplementation).functionSignature&#xA;    else&#xA;      self.implements_&#xA;    endif&#xA;  else&#xA;    self.implements_&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="A block implements either a FunctionSignature or a MethodSignature. Two different associations connect the Block with the respective Signature subclasses. This operation is a convenience that chooses the one or the other, depending on which one is filled."/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="implements_" eType="#//classes/MethodSignature"
          transient="true" eOpposite="#//classes/MethodSignature/implementation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LinkTraversal" eSuperTypes="#//classes/AssociationEndSignatureImplementation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Navigates an association starting on the source object on which the implementation is invoked and navigating to the *end* specified."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="OutputTypeMatchEndType" value="self.implements_.input->isEmpty() and&#xD;&#xA;  self.implements_.output.oclIsKindOf(ClassTypeDefinition) and &#xD;&#xA;  self.implements_.output.oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz"/>
        <details key="MustBeNavigable" value="self.end.navigable"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="OutputTypeMatchEndType MustBeNavigable"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LinkAddition" eSuperTypes="#//classes/LinkManipulationAtPosition">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Adds a link to the association of which *end* is one end, such that the object on which the implementation is invoked is on the other end, and the parameters passed to this implementation are in the role denoted by *end*."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="AdditionInputTypeMatchEndType" value="self.implements_.output->isEmpty() and&#xD;&#xA;  self.implements_.input->size() = 1 and &#xD;&#xA;  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and &#xD;&#xA;  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="AdditionInputTypeMatchEndType"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LinkRemoval" eSuperTypes="#//classes/LinkManipulationAtPosition">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Removes all links from the object on which the implementation is invoked to those objects passed as parameters where the parameter objects are in the role denoted by *end*."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="RemovalTypeMatchEndType" value="self.implements_.output->isEmpty() and&#xD;&#xA;  self.implements_.input->size() = 1 and &#xD;&#xA;  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and &#xD;&#xA;  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="RemovalTypeMatchEndType"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="AssociationEndSignatureImplementation"
        abstract="true" eSuperTypes="#//classes/SignatureImplementation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="OnlyOnOtherEndsClassOrClassConformingToItOrAdapterAdaptingToIt"
            value="(self.implements_.owner.oclIsKindOf(SapClass) and&#xD;&#xA;    self.implements_.owner.oclAsType(SapClass).conformsTo(self.end.otherEnd().type.clazz))&#xD;&#xA;  or   (self.implements_.owner.oclIsKindOf(TypeAdapter) and&#xD;&#xA;    self.implements_.owner.oclAsType(TypeAdapter).adapted.conformsTo(self.end.otherEnd().type.clazz))"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="OnlyOnOtherEndsClassOrClassConformingToItOrAdapterAdaptingToIt"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="1" eType="#//classes/AssociationEnd"
          eOpposite="#//classes/AssociationEnd/signatureImplementations"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ClassTypeDefinition" eSuperTypes="#//classes/TypeDefinition">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ActualObjectsParametersMatchSignature" value="let numberOfMandatoryParameters:Integer =&#xD;&#xA;    self.clazz.formalObjectParameters->select(p|p.defaultValue->isEmpty())->size()&#xD;&#xA;  in&#xD;&#xA;  self.objectParameters->size() >= numberOfMandatoryParameters and&#xD;&#xA;  self.objectParameters->size() &lt;= self.clazz.formalObjectParameters->size() and&#xD;&#xA;  Sequence{1..self.objectParameters->size()}->forAll(i:Integer|&#xD;&#xA;    self.objectParameters->at(i).formalObjectParameter =&#xD;&#xA;    self.clazz.formalObjectParameters->at(i))"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ActualObjectsParametersMatchSignature"/>
      </eAnnotations>
      <eOperations name="objectParametersConformTo" ordered="false" unique="false"
          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.effectiveObjectParameters()->size()  = ctd.effectiveObjectParameters()->size() then&#xA;    self.clazz.converterBetweenParametrizations->notEmpty() or&#xA;    Sequence{1..self.effectiveObjectParameters()->size()}->forAll(i |&#xA;      self.effectiveObjectParameters()->at(i).evaluatesToEqualAs(ctd.effectiveObjectParameters()->at(i)))&#xA;  else&#xA;    false&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eParameters name="ctd" ordered="false" unique="false" lowerBound="1" eType="#//classes/ClassTypeDefinition"/>
      </eOperations>
      <eOperations name="effectiveObjectParameters" unique="false" upperBound="-1"
          eType="ecore:EClass dataaccess.ecore#//expressions/Expression">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.objectParameters.value->flatten()->asSequence()->union(&#xA;     Sequence{(self.objectParameters->size()+1)..(self.clazz.formalObjectParameters->size())}->collect(i | &#xA;             self.clazz.formalObjectParameters->at(i).defaultValue->flatten()->asSequence()))->flatten()->asSequence()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="clazz" lowerBound="1"
          eType="#//classes/SapClass" eOpposite="#//classes/SapClass/elementsOfType"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" eType="#//classes/AssociationEnd"
          transient="true" eOpposite="#//classes/AssociationEnd/type"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="objectParameters" upperBound="-1"
          eType="#//classes/ActualObjectParameter" eOpposite="#//classes/ActualObjectParameter/classTypeDefinitions"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedObjectParameters"
          upperBound="-1" eType="#//classes/ActualObjectParameter" containment="true"
          eOpposite="#//classes/ActualObjectParameter/owningClassTypeDefinition"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypeDefinition" abstract="true" eSuperTypes="#//classes/Multiplicity">
      <eOperations name="conformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsUndefined() then&#xA;    false&#xA;  else if self = typeDef then&#xA;    true&#xA;  else&#xA;    self.conformsToExcluding(typeDef, Sequence{}, Sequence{})&#xA;  endif&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eParameters name="typeDef" ordered="false" unique="false" lowerBound="1"
            eType="#//classes/TypeDefinition"/>
      </eOperations>
      <eOperations name="conformsToExcluding" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if oclIsUndefined() then&#xA;    false&#xA;  else&#xA;  if self = td then&#xA;    true&#xA;  else&#xA;   self.multiplicityConformsTo(td) and&#xA;   self.conformsToIgnoringMultiplicityExcluding(td, excludingConforming, excludingTo)&#xA;  endif&#xA; endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."/>
        </eAnnotations>
        <eParameters name="td" ordered="false" unique="false" lowerBound="1" eType="#//classes/TypeDefinition"/>
        <eParameters name="excludingConforming" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
        <eParameters name="excludingTo" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="multiplicityConformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="-- check for multiplicity conformance&#xA;    -- multiplicity of td must include multiplicity of td&#xA;    td.lowerMultiplicity &lt;= self.lowerMultiplicity&#xA;    and&#xA;    (&#xA;        td.upperMultiplicity = -1&#xA;        or &#xA;        ( td.upperMultiplicity >= self.upperMultiplicity and self.upperMultiplicity &lt;> -1 ) &#xA;    ) &#xA;    &#xA;    -- check for conformance of orderedness and uniqueness&#xA;    -- orderedness/uniqueness of td must be same or more relaxed than self's&#xA;    and&#xA;    (&#xA;       not self.isMany()&#xA;        or&#xA;        ( ( self.ordered = td.ordered ) and ( self.unique = td.unique ) )&#xA;        or&#xA;        ( self.ordered and self.unique )&#xA;        or&#xA;        ( not ( td.ordered or td.unique ) )&#xA;    )"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Checks if this type definition's multiplicity conforms to td's multiplicity definitions. This is the case if all instances that conform to this type definition will also conform to td.&#xD;&#xA;&#xD;&#xA;Multiplicity conforms if td includes self's multiplicity, thus td's lower multiplicity is equal or smaller, and td's upper multiplicity is equal or larger than self's.&#xD;&#xA;&#xD;&#xA;Ordereness and uniquness conform if td has more relaxed requirements. Thus, they conform if they are equal, if td is neither ordered nor unique, or if self is ordered and unique"/>
        </eAnnotations>
        <eParameters name="td" ordered="false" unique="false" lowerBound="1" eType="#//classes/TypeDefinition"/>
      </eOperations>
      <eOperations name="conformsToIgnoringMultiplicityExcluding" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self = td then&#xA;    true&#xA;  else&#xA;   if self.oclIsKindOf(ClassTypeDefinition) then&#xA;    td.oclIsKindOf(ClassTypeDefinition) and&#xA;    self.oclAsType(ClassTypeDefinition).clazz.conformsToExcluding(&#xA;                td.oclAsType(ClassTypeDefinition).clazz, excludingConforming, excludingTo) and&#xA;    self.oclAsType(ClassTypeDefinition).objectParametersConformTo(td.oclAsType(ClassTypeDefinition))&#xA;  else&#xA;    if self.oclIsKindOf(FunctionSignatureTypeDefinition) then&#xA;      td.oclIsKindOf(FunctionSignatureTypeDefinition) and&#xA;      self.oclAsType(FunctionSignatureTypeDefinition).signature.conformsToExcluding(&#xA;           td.oclAsType(FunctionSignatureTypeDefinition).signature, excludingConforming, excludingTo)&#xA;    else&#xA;      td.oclIsKindOf(NestedTypeDefinition) and&#xA;      self.oclAsType(NestedTypeDefinition).type.conformsToExcluding(&#xA;          td.oclAsType(NestedTypeDefinition).type, excludingConforming, excludingTo)&#xA;    endif&#xA;  endif&#xA; endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."/>
        </eAnnotations>
        <eParameters name="td" ordered="false" unique="false" lowerBound="1" eType="#//classes/TypeDefinition"/>
        <eParameters name="excludingConforming" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
        <eParameters name="excludingTo" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="conformsToIgnoringMultiplicity" ordered="false" unique="false"
          lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self = typeDef then&#xA;   true&#xA;  else&#xA;    self.conformsToIgnoringMultiplicityExcluding(typeDef, Sequence{}, Sequence{})&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eParameters name="typeDef" ordered="false" unique="false" lowerBound="1"
            eType="#//classes/TypeDefinition"/>
      </eOperations>
      <eOperations name="getTypeUsage" ordered="false" upperBound="-1" eType="#//classes/TypedElement">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="TypedElement.allInstances()->select(te | te.getType() = self)"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getInnermost" ordered="false" unique="false" lowerBound="1"
          eType="#//classes/TypeDefinition">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(NestedTypeDefinition) then&#xA;    self.oclAsType(NestedTypeDefinition).type.getInnermost()&#xA;  else&#xA;    self&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="For nexted type definitions, navigates through to the inner type definition. For non-nested type definitions, that type definition is the result of this method."/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getNestingLevel" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(NestedTypeDefinition) then&#xA;    self.oclAsType(NestedTypeDefinition).type.getNestingLevel() + 1&#xA;  else&#xA;    0&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getNamedValuesInScope" ordered="false" upperBound="-1" eType="#//classes/NamedValue">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="-- find owner of type definition and collect the named values in scope for the owner&#xA;  (let ownerSig:Signature = self.ownerSignature in&#xA;  if ownerSig->notEmpty() and ownerSig.oclIsKindOf(Signature) then&#xA;    ownerSig.oclAsType(Signature).getNamedValuesInScope()&#xA;  else&#xA;    Set{}   -- some boundary case such as TupleElement or ValueSet not currently supported&#xA;  endif)->union(&#xA;&#xA;  if self.ownerTypedElement->notEmpty() then&#xA;    if self.ownerTypedElement.oclIsKindOf(dataaccess::expressions::Expression) then&#xA;      self.ownerTypedElement.oclAsType(dataaccess::expressions::Expression).getNamedValuesInScope()&#xA;    else&#xA;      if self.ownerTypedElement.oclIsKindOf(NamedValue) then&#xA;        self.ownerTypedElement.oclAsType(NamedValue).getNamedValuesInScope()&#xA;      else&#xA;        Set{}   -- some boundary case such as TupleElement or ValueSet not currently supported&#xA;      endif&#xA;    endif&#xA;  else&#xA;    Set{}&#xA;  endif)"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Needs to find the owner of the type definition, then check if it's a statement such as a variable declaration, or a method signature (meaning the owner may contribute formal object parameters) or a function signature (meaning the function expression knows the NamedValues in scope), etc."/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="signaturesWithOutput"
          upperBound="-1" eType="#//classes/Signature" eOpposite="#//classes/Signature/output"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownerTypedElement" eType="#//classes/TypedElement"
          transient="true" eOpposite="#//classes/TypedElement/ownedTypeDefinition"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownerSignature" eType="#//classes/Signature"
          transient="true" eOpposite="#//classes/Signature/ownedTypeDefinitions"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NestedTypeDefinition" eSuperTypes="#//classes/TypeDefinition">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="NestedIsAlwaysMany" value="self.isMany()"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="NestedIsAlwaysMany"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" ordered="false" unique="false"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Only for syntax mapping issues, hopefully disappearing again in the future. It holds the operator that syntactically introduced this nested type definition, such as &quot;[&quot; or &quot;*&quot;."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//classes/TypeDefinition"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedTypeDefinition"
          eType="#//classes/TypeDefinition" containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml">
          <details key="Property.oppositeRoleName" value="owningNestedTypeDefinition"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FunctionSignatureTypeDefinition" eSuperTypes="#//classes/TypeDefinition">
      <eStructuralFeatures xsi:type="ecore:EReference" name="signature" lowerBound="1"
          eType="#//classes/Signature" eOpposite="#//classes/Signature/typeDefinition"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedSignature" eType="#//classes/Signature"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="MethodSignature" eSuperTypes="#//classes/Signature modelmanagement.ecore#//NamedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="a signature of a method defined in a class"/>
      </eAnnotations>
      <eOperations name="isAbstract" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.implementation->isEmpty()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="producer" eType="ecore:EClass behavioral.ecore#//events/EventProducer"
          transient="true" eOpposite="behavioral.ecore#//events/EventProducer/notificationSignatures"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="implementation" eType="#//classes/SignatureImplementation"
          containment="true" eOpposite="#//classes/SignatureImplementation/implements_"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="#//classes/SignatureOwner"
          transient="true" eOpposite="#//classes/SignatureOwner/ownedSignatures"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="converter" eType="#//classes/ConverterBetweenParametrizations"
          eOpposite="#//classes/ConverterBetweenParametrizations/conversionMethod"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FunctionSignature" eSuperTypes="#//classes/Signature">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="signature definition for an anonymous function that has to be implemented by a block"/>
      </eAnnotations>
      <eOperations name="isAbstract" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.implementation->isEmpty()"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="getImplementedAnonymousFunctionExpression" ordered="false"
          unique="false" eType="ecore:EClass dataaccess.ecore#//expressions/fp/AnonymousFunctionExpr">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="let candidates:Sequence(dataaccess::expressions::fp::AnonymousFunctionExpr) =&#xA;         self.typeDefinition.ownerTypedElement.oclAsType(dataaccess::expressions::fp::AnonymousFunctionExpr)->asSequence() in&#xA;  if candidates->isEmpty() then&#xA;    null&#xA;  else&#xA;    candidates->at(1)&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="implementation" eType="#//classes/FunctionSignatureImplementation"
          containment="true" eOpposite="#//classes/FunctionSignatureImplementation/functionSignature"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="dimension" eType="ecore:EClass dataaccess.ecore#//analytics/Dimension"
          transient="true" eOpposite="dataaccess.ecore#//analytics/Dimension/characteristicFunction"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cellSetForValueFunction"
          eType="ecore:EClass dataaccess.ecore#//analytics/CellSet" transient="true"
          eOpposite="dataaccess.ecore#//analytics/CellSet/valueFunction"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="cellSetForAggregationFunction"
          eType="ecore:EClass dataaccess.ecore#//analytics/CellSet" transient="true"
          eOpposite="dataaccess.ecore#//analytics/CellSet/aggregationFunction"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LinkSetting" eSuperTypes="#//classes/ExtentModifyingAssociationEndSignatureImplementation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Replaces all links of the association of which the association end *end* is part and which connect to the object on which this implementation is invoked with their other end. The links are replaced by links from the object on which the implementation is invoked to the object(s) passed to this implementation as argument."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="InputTypeMatchEndType" value="self.implements_.output->isEmpty() and&#xD;&#xA;  self.implements_.input->size() = 1 and &#xD;&#xA;  self.implements_.input->at(1).getType().oclIsKindOf(ClassTypeDefinition) and &#xD;&#xA;  self.implements_.input->at(1).getType().oclAsType(ClassTypeDefinition).clazz = self.end.type.clazz"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="InputTypeMatchEndType"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypeAdapter" eSuperTypes="#//classes/SignatureOwner">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="AllSignatureConforms" value="self.ownedSignatures->forAll(selfSig:MethodSignature |&#xD;&#xA;    self.to.signaturesWithDelegation()->exists(toSig:MethodSignature |&#xD;&#xA;       selfSig.conformsTo(toSig)))"/>
        <details key="SignaturesCannotBeAbstract" value="self.ownedSignatures->forAll(selfSig:MethodSignature | not selfSig.isAbstract())"/>
        <details key="IsFullAdaptationToTo" value="self.to.signaturesWithDelegation()->forAll(toSig|&#xD;&#xA;    self.adapted.signaturesWithDelegation()->exists(adaptedSig|&#xD;&#xA;      adaptedSig.conformsTo(toSig))&#xD;&#xA;    or self.ownedSignatures->exists(ownedSig|&#xD;&#xA;      ownedSig.conformsTo(toSig)))"/>
        <details key="ValuesToValues_EntitiesToEntities" value="self.adapted.valueType = self.to.valueType"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="AllSignatureConforms SignaturesCannotBeAbstract IsFullAdaptationToTo ValuesToValues_EntitiesToEntities"/>
      </eAnnotations>
      <eOperations name="conformsTo" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="type.signaturesWithDelegation()->forAll(typeSig:MethodSignature |&#xA;    self.allSignatures()->exists(selfSig:MethodSignature |&#xA;       selfSig.conformsToExcluding(typeSig, Sequence{self.to}, Sequence{type})))"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="A class A conforms to a class B if for every signature that B has (either directly or by delegation, but not from any adapters), A has a conforming signature, either immediately declared in A or by delegation or through a type adapter."/>
        </eAnnotations>
        <eParameters name="type" ordered="false" unique="false" lowerBound="1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="conformsToExcluding" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="Sequence{1..excludingConforming->size()}->exists(i|&#xA;  excludingConforming->asSequence()->at(i) = self.to and excludingTo->asSequence()->at(i) = type) or&#xA;  type.signaturesWithDelegation()->forAll(typeSig:MethodSignature |&#xA;         self.allSignatures()->exists(selfSig:MethodSignature |&#xA;            selfSig.conformsToExcluding(typeSig,&#xA;                    excludingConforming->asSequence()->append(self.to),&#xA;                    excludingTo->asSequence()->append(type))))"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as conformsTo(Featured):Boolean but with the possibility to pass pairs of Featured elements that are to be considered conforming and thus don't need further exploration. This can be used to avoid endless recursions in conformance testing."/>
        </eAnnotations>
        <eParameters name="type" ordered="false" unique="false" lowerBound="1" eType="#//classes/SapClass"/>
        <eParameters name="excludingConforming" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
        <eParameters name="excludingTo" unique="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eOperations name="allSignatures" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.allSignaturesExcluding(Set{})"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Computes all locally-defined signatures plus not conforming signatures offered by 'To' Class. "/>
        </eAnnotations>
      </eOperations>
      <eOperations name="allSignaturesExcluding" ordered="false" upperBound="-1" eType="#//classes/MethodSignature">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.to.allSignaturesExcluding(excluding)->select(s |&#xA;    not self.ownedSignatures->exists(os | os.conformsTo(s)))->union(&#xA;  self.ownedSignatures)"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Same as allSignatures() but with the possibility to to avoid endless recursions."/>
        </eAnnotations>
        <eParameters name="excluding" ordered="false" upperBound="-1" eType="#//classes/SapClass"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//classes/SapClass"
          eOpposite="#//classes/SapClass/adaptedBy"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="adapted" lowerBound="1"
          eType="#//classes/SapClass" transient="true" eOpposite="#//classes/SapClass/adapters"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//classes/NamedValue">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="DefaultValueType" value="self.defaultValue->notEmpty() implies self.defaultValue.getType().conformsTo(self.getType())"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="DefaultValueType"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownerSignature" eType="#//classes/Signature"
          transient="true" eOpposite="#//classes/Signature/input"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameterOfClass" eType="#//classes/SapClass"
          transient="true" eOpposite="#//classes/SapClass/formalObjectParameters"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="defaultValue" eType="ecore:EClass dataaccess.ecore#//expressions/Expression"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NamedValue" abstract="true" eSuperTypes="modelmanagement.ecore#//NamedElement #//classes/TypedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="A value that can be used by name in the scope of a Block. Specializations are, e.g., Constant and Variable. Specializations may have different rules for initialization expressions."/>
      </eAnnotations>
      <eOperations name="getNamedValuesInScope" ordered="false" upperBound="-1" eType="#//classes/NamedValue">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.owner.getNamedValuesInScope()->union(&#xA;    if self.oclIsKindOf(Parameter) then&#xA;      self.oclAsType(Parameter).ownerSignature.getNamedValuesInScope()&#xA;    else&#xA;      if self.oclIsKindOf(behavioral::actions::Iterator) then&#xA;        self.oclAsType(behavioral::actions::Iterator).boundToFor.getNamedValuesInScope()->asSet()->union(&#xA;        self.oclAsType(behavioral::actions::Iterator)._iterate.getNamedValuesInScope()->asSet())&#xA;      else&#xA;        if self.oclIsKindOf(behavioral::actions::Constant) then&#xA;          self.oclAsType(behavioral::actions::Constant)._iterate.getNamedValuesInScope()&#xA;        else&#xA;          Set{}    -- TODO further cases?&#xA;        endif&#xA;      endif&#xA;    endif&#xA;    )"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="owner" eType="ecore:EClass behavioral.ecore#//actions/Block"
          transient="true" eOpposite="behavioral.ecore#//actions/Block/variables"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PlatformSpecificImplementation">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetPlatform" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="implementation" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NativeImpl" eSuperTypes="#//classes/SignatureImplementation">
      <eStructuralFeatures xsi:type="ecore:EReference" name="platformSpecificImplementaiton"
          upperBound="-1" eType="#//classes/PlatformSpecificImplementation" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SignatureOwner" eSuperTypes="modelmanagement.ecore#//NamedElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="ownedSignatures" upperBound="-1"
          eType="#//classes/MethodSignature" containment="true" eOpposite="#//classes/MethodSignature/owner"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ExtentModifyingAssociationEndSignatureImplementation"
        abstract="true" eSuperTypes="#//classes/AssociationEndSignatureImplementation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Abstract base class for all association extent-manipulating signature implementations. Groups all constraints that apply to those."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="MustNotModifyExtentIfEqualityRelevantForValueClass" value="end.association.ends->forAll(ae:AssociationEnd |&#xD;&#xA;    ae.contributesToEquality implies not ae.type.clazz.valueType)"/>
        <details key="MustNotImplementSideEffectFreeOperation" value="not self.implements_.sideEffectFree"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="MustNotModifyExtentIfEqualityRelevantForValueClass MustNotImplementSideEffectFreeOperation"/>
      </eAnnotations>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FunctionSignatureImplementation" eSuperTypes="#//classes/SignatureImplementation">
      <eOperations name="isSideEffectFree" ordered="false" unique="false" lowerBound="1"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="if self.oclIsKindOf(behavioral::actions::Block) then&#xA;    self.oclAsType(behavioral::actions::Block).localIsSideEffectFree()&#xA;  else&#xA;    if self.oclIsKindOf(dataaccess::analytics::CellSet) then&#xA;      self.oclAsType(dataaccess::analytics::CellSet).localIsSideEffectFree()&#xA;    else&#xA;      false&#xA;    endif&#xA;  endif"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="functionSignature" eType="#//classes/FunctionSignature"
          transient="true" eOpposite="#//classes/FunctionSignature/implementation"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ActualObjectParameter">
      <eStructuralFeatures xsi:type="ecore:EReference" name="formalObjectParameter"
          lowerBound="1" eType="#//classes/Parameter"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="classTypeDefinitions"
          upperBound="-1" eType="#//classes/ClassTypeDefinition" eOpposite="#//classes/ClassTypeDefinition/objectParameters"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
          eType="ecore:EClass dataaccess.ecore#//expressions/Expression" containment="true"
          eOpposite="dataaccess.ecore#//expressions/Expression/actualObjectParameter"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="owningClassTypeDefinition"
          lowerBound="1" eType="#//classes/ClassTypeDefinition" transient="true" eOpposite="#//classes/ClassTypeDefinition/ownedObjectParameters"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ConverterBetweenParametrizations">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Specifies a method as converter method. This class is mostly used as a constraint container for such a construct."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="MustHaveConcreteMethod" value="not self.conversionMethod.isAbstract()"/>
        <details key="FormalObjectParametersConformToMethodParameters" value="self.conversionMethod.input->size() = self.clazz.formalObjectParameters->size() and&#xD;&#xA;  Sequence{1..self.conversionMethod.input->size()}->forAll(i |&#xD;&#xA;    self.clazz.formalObjectParameters->at(i).conformsTo(self.conversionMethod.input->at(i)))"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="MustHaveConcreteMethod FormalObjectParametersConformToMethodParameters"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="clazz" lowerBound="1"
          eType="#//classes/SapClass" transient="true" eOpposite="#//classes/SapClass/converterBetweenParametrizations"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="conversionMethod" lowerBound="1"
          eType="#//classes/MethodSignature" eOpposite="#//classes/MethodSignature/converter"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LinkManipulationAtPosition" abstract="true"
        eSuperTypes="#//classes/ExtentModifyingAssociationEndSignatureImplementation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="An implementation that optionally specifies a position in an ordered link set telling where to apply the modification."/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="at" ordered="false" unique="false"
          eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InScope" abstract="true">
      <eOperations name="addNamedValuesWithNewNames" ordered="false" upperBound="-1"
          eType="#//classes/NamedValue">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="inner->union(outer->select(o | not inner->exists(i | i.name = o.name))->asSet())"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Used to build up a scope of named values, proceeding &quot;inside-out.&quot; The first argument is the already computed set of NamedValues, all of which end up in the resulting set of NamedValues. NamedValues from the second argument are added to the result set if the first NamedValue set does not contain any NamedValue with an equal name."/>
        </eAnnotations>
        <eParameters name="inner" ordered="false" upperBound="-1" eType="#//classes/NamedValue"/>
        <eParameters name="outer" ordered="false" upperBound="-1" eType="#//classes/NamedValue"/>
      </eOperations>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="constraints" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/constraints.ecore"
      nsPrefix="data.constraints">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Complex data types (as opposed to the basic data types that are plain CCTS types)"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="modelmanagement.ecore#//NamedElement">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="An instance of this class defines a subset of the instances of the type it constains. It does so by providing a predicate (&quot;characteristic function&quot;). Instances of the type constrained for which the predicate holds are part of the subset, the others are not."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ExpressionTypeMustBeBoolean" value="self.constraintExpression.getType().upperMultiplicity = 1 and&#xD;&#xA;  self.constraintExpression.getType().oclIsKindOf(data::classes::ClassTypeDefinition) and&#xD;&#xA;  self.constraintExpression.getType().oclAsType(data::classes::ClassTypeDefinition).clazz.name = 'Boolean'"/>
        <details key="MustBeOwned" value="self.constrainedType->notEmpty() or&#xD;&#xA;  self.theContext->notEmpty() or&#xD;&#xA;  self.preconditionForSignature->notEmpty() or&#xD;&#xA;  self.postconditionForSignature->notEmpty()"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ExpressionTypeMustBeBoolean MustBeOwned"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="theContext" eType="#//classes/Context"
          transient="true" eOpposite="#//classes/Context/constraints"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedType" eType="#//classes/SapClass"
          transient="true" eOpposite="#//classes/SapClass/constraints"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="severityInState" lowerBound="1"
          upperBound="-1" eType="#//constraints/SeverityInState" containment="true">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml">
          <details key="Property.oppositeRoleName" value="constraint"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="constraintExpression"
          lowerBound="1" eType="ecore:EClass dataaccess.ecore#//expressions/Expression"
          containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="ObjectState">
      <eLiterals name="INITIAL"/>
      <eLiterals name="TRANSIENT" value="1"/>
      <eLiterals name="SAVED" value="2"/>
      <eLiterals name="ACTIVE" value="3"/>
      <eLiterals name="COMPLIANT" value="4"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="Severity">
      <eLiterals name="WARNING"/>
      <eLiterals name="ERROR" value="1"/>
      <eLiterals name="ILLEGAL" value="2"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="SeverityInState">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="state" ordered="false"
          unique="false" lowerBound="1" eType="#//constraints/ObjectState"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" ordered="false"
          unique="false" lowerBound="1" eType="#//constraints/Severity"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="quantitystructure" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/quantitystructure.ecore"
      nsPrefix="data.quantitystructure">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Helps modelers to specify the numbers of instances of types, relations and the access patterns over them. This can later be used to optimize data representation, partitioning and deployment."/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Dummy"/>
  </eSubpackages>
  <eSubpackages name="timedependency" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/timedependency.ecore"
      nsPrefix="data.timedependency">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Models the aspect of time-dependent data. If a structural feature such as a class or a property or an association is marked as time-dependent, clients expect to find time-dependent access operations for read access. If no time is specified, the time of access is implicitly assumed.&#xD;&#xA;&#xD;&#xA;Modifications to such structures keep the history of the data. Again, if no modification time is explicitly specified, the time at which the modification occurs is used implicitly.&#xD;&#xA;&#xD;&#xA;Clarify if it should be possible to &quot;modify history.&quot; In other words, should it be possible to make structural changes in data that was already recorded in the past?&#xD;&#xA;&#xD;&#xA;TODO Perhaps this package should be separated out into an own top-level metamodel package because it has dependencies on behavioral/actions and dataaccess/expressions."/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="TimeDependency">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Captures the specification for how to deal in detail with the time-dependent nature of the annotated structural feature.&#xD;&#xA;&#xD;&#xA;Time dependence of a class means that the existence of an instance of that class is timie dependent. A time-dependent association means that the existence of each link of that association is time dependent.&#xD;&#xA;&#xD;&#xA;Read operations on time-dependent classes and associations (such as queries and navigation) can optionally specify a point in time or a timespan. If no time or timespan is specified, the current time is assumed.&#xD;&#xA;&#xD;&#xA;Write/update operations by default will use the current time as the point in time, or an open time interval starting at the current time (in case of a timespan feature). Any open previous timespan by default will be closed at the current time by an update.&#xD;&#xA;&#xD;&#xA;Read and update operations of time-dependent features can optionally be equipped with a time/timespan telling the temporal validity of the values updated or the values to be read."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="RecordCutoffGreaterOrEqualZero" value="self.recordCutoffInMilliseconds >= 0"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="RecordCutoffGreaterOrEqualZero"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="recordCutoffInMilliseconds"
          ordered="false" unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EInt">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="The number of milliseconds for which to keep historic versions of this feature. Only values greater or equal to zero are permitted. 0 means that no historic versions are kept at all."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="canChangePast" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="If true, it is permissible to change values of the time-dependent feature for previous times."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="timespan" ordered="false"
          unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="If true, data is valid over a given timespan, not only a single point in time. When writing data, the validity period is to be specified as a timespan rather than a point in time.&#xD;&#xA;&#xD;&#xA;If false, data samples are valid only at a single point in time, such as from an RFID reader or a temperature sensor. Access APIs would have to allow for conveniently finding the &quot;nearest&quot; match for a given point in time."/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="theClass" eType="#//classes/SapClass"
          transient="true" eOpposite="#//classes/SapClass/timeDependency"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="association" eType="#//classes/Association"
          transient="true" eOpposite="#//classes/Association/timeDependency"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="documents" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/documents.ecore"
      nsPrefix="data.documents">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Structures that help referencing and managing---typically external---document repositories. Structures shall allow to reference documents in such a repository, say something about the lifecycle of documents in such a repository in connection to the life cycle of other model elements, and integrate document repository capabilities into the modeling world, such as document ranking, versioning, etc."/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="Dummy"/>
  </eSubpackages>
  <eSubpackages name="generics" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/generics.ecore"
      nsPrefix="data.generics">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Describes how types can be parameterized. Parameterizable types include classes and tuples. Classes can be declared to have a list of DataType arguments. Those arguments can then be used within a class definition wherever a DataType is allowed. If a type argument is a class, it may be used wherever a class is allowed."/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="FormalTypeParameter" eSuperTypes="#//classes/SapClass">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="A formal type argument to the ParameterizedClass owning this parameter object. It is valid only in the scope of the classDefinition owned by the ParameterizedClass that owns this parameter object."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="UseInSignaturesOfOwningParamerizedClassOnly" value="self.elementsOfType.getTypeUsage()->forAll(s | s.oclIsKindOf(data::classes::Parameter) implies &#xD;&#xA;   (s.oclAsType(data::classes::Parameter).ownerSignature.oclIsKindOf(data::classes::MethodSignature) and&#xD;&#xA;    s.oclAsType(data::classes::Parameter).ownerSignature.oclAsType(data::classes::MethodSignature).owner=self.parameterOf .owningClassDefinition)) and&#xD;&#xA;  self.elementsOfType.signaturesWithOutput->forAll(s| s.oclIsKindOf(data::classes::MethodSignature) and &#xD;&#xA;    s.oclAsType(data::classes::MethodSignature).owner->notEmpty() and&#xD;&#xA;    s.oclAsType(data::classes::MethodSignature).owner=self.parameterOf.owningClassDefinition) and&#xD;&#xA;  self.signaturesWithFault->forAll(s| s.oclIsKindOf(data::classes::MethodSignature)  and &#xD;&#xA;    s.oclAsType(data::classes::MethodSignature).owner->notEmpty() and&#xD;&#xA;    s.oclAsType(data::classes::MethodSignature).owner=self.parameterOf.owningClassDefinition)"/>
        <details key="UseInAssociationsOfOwningParameterizedClassOnly" value="self.elementsOfType.associationEnd->&#xD;&#xA;    forAll(ae | ae.otherEnd().type.clazz = self.parameterOf.owningClassDefinition)"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="UseInSignaturesOfOwningParamerizedClassOnly UseInAssociationsOfOwningParameterizedClassOnly"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameterOf" lowerBound="1"
          eType="#//generics/ClassParameterization" transient="true" eOpposite="#//generics/ClassParameterization/formalTypeParameters"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="typeConstraint" eType="#//classes/SapClass"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="actualTypeParameters"
          upperBound="-1" eType="#//generics/ActualTypeParameter" eOpposite="#//generics/ActualTypeParameter/formalTypeParameter"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ParameterizedClassInstantiation" eSuperTypes="#//classes/SapClass">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="An instantiation of a parameterized class (a class that has one or more FormalTypeParameters associated) with a set of data types that match the parameterized type's signature. The instantiation is itself usable as a Class. It may as such itself still have formal type parameters which then make it a parameterized class that itself requires instantiation before it it a fully-specified type."/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="ActualTypeParametersMatchSignature" value="self.actualTypeParametersForInstantiation->size() = self.parameterizedClass.parameterization.formalTypeParameters->size() and&#xD;&#xA;  Sequence{1..self.actualTypeParametersForInstantiation->size()}->forAll(i:Integer|&#xD;&#xA;    self.actualTypeParametersForInstantiation->at(i).formalTypeParameter =&#xD;&#xA;    self.parameterizedClass.parameterization.formalTypeParameters->at(i))"/>
        <details key="ClassMustBeParameterized" value="self.parameterizedClass.parameterization->notEmpty()"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="ActualTypeParametersMatchSignature ClassMustBeParameterized"/>
      </eAnnotations>
      <eOperations name="resolveFormalTypeParameter" ordered="false" unique="false"
          eType="#//classes/SapClass">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="self.actualTypeParametersForInstantiation->select(atp:ActualTypeParameter |&#xA;    atp.formalTypeParameter = ftp)->asSequence()->at(1).type"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="Returns the ActualTypeParameter's type (a Class) from the actualTypeParameters association end whose formalTypeParameter is the one passed. If no such formal type parameter is found, no object (null) is returned."/>
        </eAnnotations>
        <eParameters name="ftp" ordered="false" unique="false" lowerBound="1" eType="#//generics/FormalTypeParameter"/>
      </eOperations>
      <eOperations name="getClassParameterization" ordered="false" unique="false"
          lowerBound="1" eType="#//generics/ClassParameterization">
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
          <details key="body" value="parameterizedClass.parameterization"/>
        </eAnnotations>
        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
          <details key="constraints" value="body"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="actualTypeParametersForInstantiation"
          lowerBound="1" upperBound="-1" eType="#//generics/ActualTypeParameter" containment="true"
          eOpposite="#//generics/ActualTypeParameter/parameterizedClassInstantiation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameterizedClass" lowerBound="1"
          eType="#//classes/SapClass"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ClassParameterization">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="DistinctFormalTypeParameterNames" value="self.formalTypeParameters->forAll(i,j|i&lt;>j implies i.name&lt;>j.name)"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="DistinctFormalTypeParameterNames"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="formalTypeParameters"
          lowerBound="1" upperBound="-1" eType="#//generics/FormalTypeParameter" containment="true"
          eOpposite="#//generics/FormalTypeParameter/parameterOf"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="owningClassDefinition"
          eType="#//classes/SapClass" transient="true" eOpposite="#//classes/SapClass/parameterization"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="package_" eType="ecore:EClass modelmanagement.ecore#//Package"
          transient="true" eOpposite="modelmanagement.ecore#//Package/parameterizedClasses"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ActualTypeParameter">
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL">
        <details key="TypeConformsWithFormalParametersTypeConstraint" value="self.formalTypeParameter.typeConstraint->notEmpty() implies&#xD;&#xA;    self.type.conformsTo(self.formalTypeParameter.typeConstraint)"/>
      </eAnnotations>
      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
        <details key="constraints" value="TypeConformsWithFormalParametersTypeConstraint"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameterizedClassInstantiation"
          lowerBound="1" eType="#//generics/ParameterizedClassInstantiation" transient="true"
          eOpposite="#//generics/ParameterizedClassInstantiation/actualTypeParametersForInstantiation"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1"
          eType="#//classes/SapClass">
        <eAnnotations source="http://schema.omg.org/spec/MOF/2.0/emof.xml">
          <details key="Property.oppositeRoleName" value="actualTypeParametersOfClass"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="formalTypeParameter"
          lowerBound="1" eType="#//generics/FormalTypeParameter" eOpposite="#//generics/FormalTypeParameter/actualTypeParameters"/>
    </eClassifiers>
  </eSubpackages>
  <eSubpackages name="tuples" nsURI="http://eclipse.org/ocl/examples/impactanalyzer/testmodel/ngpm/data/tuples.ecore"
      nsPrefix="data.tuples">
    <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
      <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
      <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL"/>
    </eAnnotations>
    <eClassifiers xsi:type="ecore:EClass" name="TupleTypeDefinition" eSuperTypes="#//classes/TypeDefinition">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="A tuple type defines named and typed elements. Conformance for tuple types is less strict. It need not be explicitly defined as is required for classes. This allows tuple types to conform to each other based on their structure."/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="elements" lowerBound="1"
          upperBound="-1" eType="#//tuples/TupleElement" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TupleElement" eSuperTypes="modelmanagement.ecore#//NamedElement #//classes/TypedElement"/>
  </eSubpackages>
</ecore:EPackage>
