essentialocl
types
BagType
TupleType
oclLibrary
CollectionType
elementType
oclLibrary
kind
InvalidType
oclLibrary
OrderedSetType
SequenceType
SetType
VoidType
oclLibrary
TypeType
representedType
OclLibrary
makeTupleType
atts
getCollectionType
elementType
getSequenceType
elementType
getBagType
elementType
getSetType
elementType
getOrderedSetType
elementType
getTypeType
representedType
oclBoolean
oclString
oclInteger
oclReal
oclAny
oclVoid
oclInvalid
oclType
oclCollection
oclSequence
oclBag
oclSet
oclOrderedSet
oclTuple
AnyType
expressions
VariableExp
referredVariable
Variable
asParameter
asProperty
representedParameter
initExpression
UnlimitedNaturalExp
symbol
TypeLiteralExp
referredType
TupleLiteralPart
property
value
TupleLiteralExp
part
StringLiteralExp
stringSymbol
RealLiteralExp
realSymbol
PropertyCallExp
referredProperty
qualifier
PrimitiveLiteralExp
OperationCallExp
argument
referredOperation
OclExpression
withAtPre
withAsSet
oclLibrary
NumericLiteralExp
UndefinedLiteralExp
LoopExp
body
iterator
LiteralExp
LetExp
in
variable
IteratorExp
IterateExp
result
InvalidLiteralExp
IntegerLiteralExp
integerSymbol
IfExp
condition
thenExpression
elseExpression
FeatureCallExp
sourceType
BooleanLiteralExp
booleanSymbol
CallExp
source
CollectionItem
item
CollectionKind
Collection
Collection
Sequence
Sequence
Bag
Bag
Set
Set
OrderedSet
OrderedSet
CollectionLiteralExp
part
kind
elementType
CollectionLiteralPart
CollectionRange
first
last
EnumLiteralExp
referredEnumLiteral
ExpressionInOcl
bodyExpression
context
result
parameter
<?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="essentialocl" nsURI="http://www.tu-dresden.de/ocl20/pivot/2007/essentialocl"
    nsPrefix="essentialocl">
  <eSubpackages name="types" nsURI="http://www.omg.org/2006/essentialocl/types" nsPrefix="types">
    <eClassifiers xsi:type="ecore:EClass" name="BagType" eSuperTypes="#//types/CollectionType"/>
    <eClassifiers xsi:type="ecore:EClass" name="TupleType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclLibrary" lowerBound="1"
          eType="#//types/OclLibrary" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The reference to the {@link OclLibrary} facade class is necessary&#xD;&#xA;for determining type conformance and common super types. This&#xD;&#xA;implementation uses a dependency injection approach. Whenever&#xD;&#xA;a &lt;code>TupleType&lt;/code> is created, the reference to the &#xD;&#xA;&lt;code>OclLibrary&lt;/code> should be set. Note that the old toolkit&#xD;&#xA;ised a  Singleton approach which is not repeated here to maintain&#xD;&#xA;clear interfaces.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CollectionType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
      <eStructuralFeatures xsi:type="ecore:EReference" name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"
          resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclLibrary" lowerBound="1"
          eType="#//types/OclLibrary" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The reference to the {@link OclLibrary} facade class is necessary&#xD;&#xA;for determining type conformance and common super types. This&#xD;&#xA;implementation uses a dependency injection approach. Whenever&#xD;&#xA;a &lt;code>CollectionType&lt;/code> is created, the reference to the &#xD;&#xA;&lt;code>OclLibrary&lt;/code> should be set. Note that the old toolkit&#xD;&#xA;used a  Singleton approach which is not repeated here to maintain&#xD;&#xA;clear interfaces.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1"
          eType="#//expressions/CollectionKind">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;Identifies the kind of this &lt;code>CollectionType&lt;/code>. This is necessary&#xD;&#xA;to clearly differentiate an instance of &lt;code>CollectionType&lt;/code> from&#xD;&#xA;instances of its subclasses. This is required when determining type conformance&#xD;&#xA;of one collection type with another (see the documentation of {@link #conformsTo}).&#xD;&#xA;Unfortunately, there is no equivalent in Java for the OCL &lt;code>oclIsTypeOf&lt;/code>&#xD;&#xA;operation. The &lt;code>instanceof&lt;/code> operator cannot be used since it would&#xD;&#xA;return &lt;code>true&lt;/code> for subclasses as well.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InvalidType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclLibrary" lowerBound="1"
          eType="#//types/OclLibrary" eOpposite="#//types/OclLibrary/oclInvalid"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OrderedSetType" eSuperTypes="#//types/CollectionType"/>
    <eClassifiers xsi:type="ecore:EClass" name="SequenceType" eSuperTypes="#//types/CollectionType"/>
    <eClassifiers xsi:type="ecore:EClass" name="SetType" eSuperTypes="#//types/CollectionType"/>
    <eClassifiers xsi:type="ecore:EClass" name="VoidType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclLibrary" lowerBound="1"
          eType="#//types/OclLibrary" eOpposite="#//types/OclLibrary/oclVoid"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypeType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xD;&#xA;The &lt;code>Type&lt;/code> represented by this &lt;code>TypeType&lt;/code>.&#xD;&#xA;&lt;/p>"/>
      </eAnnotations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="representedType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OclLibrary">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="&lt;p>&#xD;&#xA;The &lt;code>OclLibrary&lt;/code> interface provides access  to the types of the&#xD;&#xA;OCL Standard Library as defined in the OCL specification, Chapter 11.&#xD;&#xA;As EMF does not allow to model operations with class scope, the&#xD;&#xA;&lt;code>OclLibrary&lt;code> also provides a version of the&#xD;&#xA;{@link #makeTupleType() TupleType::make} operation (with JMI, this method&#xD;&#xA;would be located inside &lt;code>TupleTypeClass&lt;/code>).&#xD;&#xA;The OCL Collection types for a particular element type can be retrieved with&#xD;&#xA;one of the corresponding, type-specific methods.&#xD;&#xA;&lt;/p>"/>
      </eAnnotations>
      <eOperations name="makeTupleType" eType="#//types/TupleType">
        <eParameters name="atts">
          <eGenericType eClassifier="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//Sequence">
            <eTypeArguments eClassifier="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Property"/>
          </eGenericType>
        </eParameters>
      </eOperations>
      <eOperations name="getCollectionType" eType="#//types/CollectionType">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;Returns the {@link CollectionType} with the given element type. The&#xD;&#xA;given &lt;code>elementType&lt;/code> must not be &lt;code>null&lt;/code> or&#xD;&#xA;{@link #getOclInvalid() OclInvalid} (OCL 2.0 specification, Section 8.2.2).&#xD;&#xA;It may be {@link #getOclVoid() OclVoid}, though.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
        <eParameters name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eOperations name="getSequenceType" eType="#//types/SequenceType">
        <eParameters name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eOperations name="getBagType" eType="#//types/BagType">
        <eParameters name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eOperations name="getSetType" eType="#//types/SetType">
        <eParameters name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eOperations name="getOrderedSetType" eType="#//types/OrderedSetType">
        <eParameters name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eOperations name="getTypeType" lowerBound="1" eType="#//types/TypeType">
        <eParameters name="representedType" lowerBound="1" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclBoolean" lowerBound="1"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//PrimitiveType"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclString" lowerBound="1"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//PrimitiveType"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclInteger" lowerBound="1"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//PrimitiveType"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclReal" lowerBound="1"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//PrimitiveType"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclAny" lowerBound="1"
          eType="#//types/AnyType" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclVoid" lowerBound="1"
          eType="#//types/VoidType" containment="true" resolveProxies="false" eOpposite="#//types/VoidType/oclLibrary"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclInvalid" lowerBound="1"
          eType="#//types/InvalidType" containment="true" resolveProxies="false" eOpposite="#//types/InvalidType/oclLibrary"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclType" lowerBound="1"
          eType="#//types/TypeType" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclCollection" lowerBound="1"
          eType="#//types/CollectionType" containment="true" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is the prototype for the unlimited number of {@link CollectionType}s.&#xD;&#xA;Clients should not use this reference, but instead specify the desired&#xD;&#xA;element type of the collection using {@link #getCollectionType(Type)}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclSequence" lowerBound="1"
          eType="#//types/SequenceType" containment="true" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is the prototype for the unlimited number of {@link SequenceType}s.&#xD;&#xA;Clients should not use this reference, but instead specify the desired&#xD;&#xA;element type of the sequence using {link #getSequenceType(Type)}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclBag" lowerBound="1"
          eType="#//types/BagType" containment="true" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is the prototype for the unlimited number of {@link BagType}s.&#xD;&#xA;Clients should not use this reference, but instead specify the desired&#xD;&#xA;element type of the bag using {link #getBagType(Type)}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclSet" lowerBound="1"
          eType="#//types/SetType" containment="true" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is the prototype for the unlimited number of {@link SetType}s.&#xD;&#xA;Clients should not use this reference, but instead specify the desired&#xD;&#xA;element type of the set using {link #getSetType(Type)}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclOrderedSet" lowerBound="1"
          eType="#//types/OrderedSetType" containment="true" resolveProxies="false">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is the prototype for the unlimited number of {@link OrderedSetType}s.&#xD;&#xA;Clients should not use this reference, but instead specify the desired&#xD;&#xA;element type of the ordered set using {link #getOrderedSetType(Type)}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclTuple" lowerBound="1"
          upperBound="-1" eType="#//types/TupleType" containment="true">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;This is a reference list to {@link TupleType}s that are required to &#xD;&#xA;define the operations in the OCL Standard Library. Clients should&#xD;&#xA;not use the types in this list, but instead create their own tuple&#xD;&#xA;types using {@link #makeTupleType()}.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="AnyType" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
  </eSubpackages>
  <eSubpackages name="expressions" nsURI="http://www.omg.org/2006/essentialocl/expressions"
      nsPrefix="expressions">
    <eClassifiers xsi:type="ecore:EClass" name="VariableExp" eSuperTypes="#//expressions/OclExpression">
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredVariable" eType="#//expressions/Variable"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//TypedElement ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//NamedElement">
      <eOperations name="asParameter" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Parameter">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The OCL 2.0 specification defines an additional operation that returns a&#xD;&#xA;corresponding {@link Parameter} for a &lt;code>Variable&lt;/code>.&#xD;&#xA;&#xD;&#xA;It is specified as follows:&#xD;&#xA;&lt;pre>&#xD;&#xA;context Variable::asParameter() : Parameter&#xD;&#xA;post: result.name = self.name&#xD;&#xA;post: result.direction = ParameterDirectionKind::in&#xD;&#xA;post: result.type = self.type&#xD;&#xA;&lt;/pre>&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="asProperty" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Property">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The OCL 2.0 Specification defines an additional operation that returns a&#xD;&#xA;corresponding {@link Property} for a &lt;code>Variable&lt;/code>.&#xD;&#xA;&#xD;&#xA;It is specified as follows:&#xD;&#xA;&lt;pre>&#xD;&#xA;context Variable::asProperty() : Attribute&#xD;&#xA;post: result.name= self.name&#xD;&#xA;post: result.type= self.type&#xD;&#xA;post: result.isMultiple = false&#xD;&#xA;post: result.isOrdered= true&#xD;&#xA;post: result.isStatic= false&#xD;&#xA;&lt;/pre>&#xD;&#xA;&#xD;&#xA;Note that the OCL specification adds an additional post condition:&#xD;&#xA;&#xD;&#xA;&lt;pre>&#xD;&#xA;post: result.constraint.specification.bodyExpression = self.initExpression&#xD;&#xA;&lt;/pre>&#xD;&#xA;&#xD;&#xA;However, the meta association between the Pivot Model elements&#xD;&#xA;{@link Constraint} and {@link ConstrainableElement} is only&#xD;&#xA;undirectional (in analogy to the specification in Core::Abstractions),&#xD;&#xA;so we cannot navigate from the property to one of its constraints.&#xD;&#xA;Also, this constraint is not really required because the&#xD;&#xA;&lt;code>asProperty()&lt;/code> operation is only used to&#xD;&#xA;determine the type of {@link TupleLiteralExpression}s. There. &#xD;&#xA;a conversion from &lt;code>Variable&lt;/code> to&#xD;&#xA;&lt;code>Property&lt;/code> is needed to make a corresponding&#xD;&#xA;&lt;code>TupleType&lt;/code>. Thus, setting the name and the&#xD;&#xA;type of the created &lt;code>Propery&lt;/code> is sufficient.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="representedParameter"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Parameter"
          resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="initExpression" eType="#//expressions/OclExpression"
          containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="UnlimitedNaturalExp" eSuperTypes="#//expressions/NumericLiteralExp">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" eType="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//UnlimitedNatural"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TypeLiteralExp" eSuperTypes="#//expressions/LiteralExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TupleLiteralPart" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//TypedElement">
      <eStructuralFeatures xsi:type="ecore:EReference" name="property" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Property"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="value" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="TupleLiteralExp" eSuperTypes="#//expressions/LiteralExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="part" upperBound="-1"
          eType="#//expressions/TupleLiteralPart" containment="true"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="StringLiteralExp" eSuperTypes="#//expressions/PrimitiveLiteralExp">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringSymbol" eType="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//String"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="RealLiteralExp" eSuperTypes="#//expressions/NumericLiteralExp">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="realSymbol" eType="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//Real"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PropertyCallExp" eSuperTypes="#//expressions/FeatureCallExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredProperty" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Property"
          resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" upperBound="-1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="PrimitiveLiteralExp" abstract="true"
        eSuperTypes="#//expressions/LiteralExp"/>
    <eClassifiers xsi:type="ecore:EClass" name="OperationCallExp" eSuperTypes="#//expressions/FeatureCallExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredOperation" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Operation"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="OclExpression" abstract="true" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//TypedElement ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//NamedElement">
      <eOperations name="withAtPre" eType="#//expressions/OperationCallExp">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The OCL 2.0 specification defines an additional operation that returns&#xD;&#xA;an {@link OperationCallExp operation call expression} for the predefined&#xD;&#xA;&lt;code>atPre()&lt;/code> operation with the self expression as its source.&#xD;&#xA;&lt;/p>&#xD;&#xA;&#xD;&#xA;&lt;p>&#xD;&#xA;It is specified as follows:&#xD;&#xA;&#xD;&#xA;&lt;pre>&#xD;&#xA;context OclExpression::withAtPre() : OperationCallExp&#xD;&#xA;post: result.name = 'atPre'&#xD;&#xA;post: result.argument->isEmpty()&#xD;&#xA;post: result.source = self&#xD;&#xA;&lt;/pre>&#xD;&#xA;&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eOperations>
      <eOperations name="withAsSet" eType="#//expressions/OperationCallExp">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The OCL 2.0 specification defines an additional operation that returns&#xD;&#xA;an {@link OperationCallExp operation call expression} for the predefined&#xD;&#xA;&lt;code>asSet()&lt;/code> operation with the self expression as its source.&#xD;&#xA;&lt;/p>&#xD;&#xA;&#xD;&#xA;&lt;p>&#xD;&#xA;It is specified as follows:&#xD;&#xA;&#xD;&#xA;&lt;pre>&#xD;&#xA;context OclExpression::withAtPre() : OperationCallExp&#xD;&#xA;post: result.name = 'asSet'&#xD;&#xA;post: result.argument->isEmpty()&#xD;&#xA;post: result.source = self&#xD;&#xA;&lt;/pre>&#xD;&#xA;&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eOperations>
      <eStructuralFeatures xsi:type="ecore:EReference" name="oclLibrary" eType="#//types/OclLibrary"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="NumericLiteralExp" abstract="true"
        eSuperTypes="#//expressions/PrimitiveLiteralExp"/>
    <eClassifiers xsi:type="ecore:EClass" name="UndefinedLiteralExp" eSuperTypes="#//expressions/LiteralExp"/>
    <eClassifiers xsi:type="ecore:EClass" name="LoopExp" abstract="true" eSuperTypes="#//expressions/CallExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="body" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="iterator" upperBound="-1"
          eType="#//expressions/Variable" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="LiteralExp" abstract="true" eSuperTypes="#//expressions/OclExpression"/>
    <eClassifiers xsi:type="ecore:EClass" name="LetExp" eSuperTypes="#//expressions/OclExpression">
      <eStructuralFeatures xsi:type="ecore:EReference" name="in" lowerBound="1" eType="#//expressions/OclExpression"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
          eType="#//expressions/Variable" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="IteratorExp" eSuperTypes="#//expressions/LoopExp"/>
    <eClassifiers xsi:type="ecore:EClass" name="IterateExp" eSuperTypes="#//expressions/LoopExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="result" eType="#//expressions/Variable"
          containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="InvalidLiteralExp" eSuperTypes="#//expressions/LiteralExp"/>
    <eClassifiers xsi:type="ecore:EClass" name="IntegerLiteralExp" eSuperTypes="#//expressions/NumericLiteralExp">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="integerSymbol" eType="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//Integer"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="IfExp" eSuperTypes="#//expressions/OclExpression">
      <eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="thenExpression" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="elseExpression" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="FeatureCallExp" abstract="true" eSuperTypes="#//expressions/CallExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="sourceType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type">
        <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
          <details key="documentation" value="&lt;p>&#xD;&#xA;The source type of a &lt;code>FeatureCallExp&lt;/code> is only required&#xD;&#xA;for static feature calls because these do not have an explicit source&#xD;&#xA;expression as defined by {@link CallExp}.&#xD;&#xA;&lt;/p>&#xD;&#xA;&#xD;&#xA;&lt;p>&#xD;&#xA;Actually, this attribute is currently only required for the static &lt;code>allInstances&lt;/code>&#xD;&#xA;operation because its return type &lt;code>Set(T)&lt;/code> depends&#xD;&#xA;on the type it is called on. For instance, &lt;code>MyClass::allInstances()&lt;/code>&#xD;&#xA;has the return type &lt;code>Set(MyClass)&lt;/code>. Since the corresponding&#xD;&#xA;generic operation from the OCL Standard Library needs to be bound to&#xD;&#xA;the source type, it must be available somewhere in the abstract syntax.&#xD;&#xA;&lt;/p>"/>
        </eAnnotations>
      </eStructuralFeatures>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="BooleanLiteralExp" eSuperTypes="#//expressions/PrimitiveLiteralExp">
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="booleanSymbol" eType="ecore:EDataType ../../org.dresdenocl.pivotmodel/model/datatypes.ecore#//Boolean"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CallExp" abstract="true" eSuperTypes="#//expressions/OclExpression">
      <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//expressions/OclExpression"
          containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CollectionItem" eSuperTypes="#//expressions/CollectionLiteralPart">
      <eStructuralFeatures xsi:type="ecore:EReference" name="item" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EEnum" name="CollectionKind">
      <eLiterals name="Collection"/>
      <eLiterals name="Sequence" value="1"/>
      <eLiterals name="Bag" value="2"/>
      <eLiterals name="Set" value="3"/>
      <eLiterals name="OrderedSet" value="4"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CollectionLiteralExp" eSuperTypes="#//expressions/LiteralExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="part" upperBound="-1"
          eType="#//expressions/CollectionLiteralPart" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//expressions/CollectionKind"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="elementType" eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Type"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="CollectionLiteralPart" abstract="true"
        eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//TypedElement"/>
    <eClassifiers xsi:type="ecore:EClass" name="CollectionRange" eSuperTypes="#//expressions/CollectionLiteralPart">
      <eStructuralFeatures xsi:type="ecore:EReference" name="first" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="last" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="EnumLiteralExp" eSuperTypes="#//expressions/LiteralExp">
      <eStructuralFeatures xsi:type="ecore:EReference" name="referredEnumLiteral"
          eType="ecore:EClass ../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//EnumerationLiteral"
          resolveProxies="false"/>
    </eClassifiers>
    <eClassifiers xsi:type="ecore:EClass" name="ExpressionInOcl" eSuperTypes="../../org.dresdenocl.pivotmodel/model/pivotmodel.ecore#//Expression">
      <eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" lowerBound="1"
          eType="#//expressions/OclExpression" containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="context" eType="#//expressions/Variable"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="result" eType="#//expressions/Variable"
          containment="true" resolveProxies="false"/>
      <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" upperBound="-1"
          eType="#//expressions/Variable" containment="true" resolveProxies="false"/>
    </eClassifiers>
  </eSubpackages>
</ecore:EPackage>

{"directed":true,"nodes":[{"nsPrefix":"essentialocl","nsURI":"http://www.tu-dresden.de/ocl20/pivot/2007/essentialocl","name":"essentialocl","id":0,"eClass":"EPackage"},{"nsPrefix":"types","nsURI":"http://www.omg.org/2006/essentialocl/types","name":"types","id":1,"eClass":"EPackage"},{"nsPrefix":"expressions","nsURI":"http://www.omg.org/2006/essentialocl/expressions","name":"expressions","id":2,"eClass":"EPackage"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"BagType","instanceClass":null,"abstract":false,"id":3,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TupleType","instanceClass":null,"abstract":false,"id":4,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CollectionType","instanceClass":null,"abstract":false,"id":5,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InvalidType","instanceClass":null,"abstract":false,"id":6,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OrderedSetType","instanceClass":null,"abstract":false,"id":7,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SequenceType","instanceClass":null,"abstract":false,"id":8,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"SetType","instanceClass":null,"abstract":false,"id":9,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VoidType","instanceClass":null,"abstract":false,"id":10,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TypeType","instanceClass":null,"abstract":false,"id":11,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OclLibrary","instanceClass":null,"abstract":false,"id":12,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"AnyType","instanceClass":null,"abstract":false,"id":13,"interface":false,"eClass":"EClass"},{"id":14,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"oclLibrary","changeable":true,"resolveProxies":false,"lowerBound":1,"id":15,"derived":false},{"id":16,"eClass":"EGenericType"},{"id":17,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"elementType","changeable":true,"resolveProxies":false,"lowerBound":0,"id":18,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"oclLibrary","changeable":true,"resolveProxies":false,"lowerBound":1,"id":19,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"kind","changeable":true,"lowerBound":1,"iD":false,"id":20,"derived":false},{"id":21,"eClass":"EGenericType"},{"id":22,"eClass":"EGenericType"},{"id":23,"eClass":"EGenericType"},{"instanceTypeName":null,"instanceClassName":null,"name":"CollectionKind","instanceClass":null,"id":24,"serializable":true,"eClass":"EEnum"},{"id":25,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"oclLibrary","changeable":true,"resolveProxies":true,"lowerBound":1,"id":26,"derived":false},{"id":27,"eClass":"EGenericType"},{"id":28,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclInvalid","changeable":true,"resolveProxies":false,"lowerBound":1,"id":29,"derived":false},{"id":30,"eClass":"EGenericType"},{"id":31,"eClass":"EGenericType"},{"id":32,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"oclLibrary","changeable":true,"resolveProxies":true,"lowerBound":1,"id":33,"derived":false},{"id":34,"eClass":"EGenericType"},{"id":35,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclVoid","changeable":true,"resolveProxies":false,"lowerBound":1,"id":36,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"representedType","changeable":true,"resolveProxies":false,"lowerBound":0,"id":37,"derived":false},{"id":38,"eClass":"EGenericType"},{"id":39,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"makeTupleType","lowerBound":0,"id":40,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getCollectionType","lowerBound":0,"id":41,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getSequenceType","lowerBound":0,"id":42,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getBagType","lowerBound":0,"id":43,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getSetType","lowerBound":0,"id":44,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getOrderedSetType","lowerBound":0,"id":45,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getTypeType","lowerBound":1,"id":46,"many":false,"required":true,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclBoolean","changeable":true,"resolveProxies":false,"lowerBound":1,"id":47,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclString","changeable":true,"resolveProxies":false,"lowerBound":1,"id":48,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclInteger","changeable":true,"resolveProxies":false,"lowerBound":1,"id":49,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclReal","changeable":true,"resolveProxies":false,"lowerBound":1,"id":50,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclAny","changeable":true,"resolveProxies":false,"lowerBound":1,"id":51,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclType","changeable":true,"resolveProxies":false,"lowerBound":1,"id":52,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclCollection","changeable":true,"resolveProxies":false,"lowerBound":1,"id":53,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclSequence","changeable":true,"resolveProxies":false,"lowerBound":1,"id":54,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclBag","changeable":true,"resolveProxies":false,"lowerBound":1,"id":55,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclSet","changeable":true,"resolveProxies":false,"lowerBound":1,"id":56,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclOrderedSet","changeable":true,"resolveProxies":false,"lowerBound":1,"id":57,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"oclTuple","changeable":true,"resolveProxies":true,"lowerBound":1,"id":58,"derived":false},{"id":59,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"atts","lowerBound":0,"id":60,"many":false,"required":false,"eClass":"EParameter"},{"id":61,"eClass":"EGenericType"},{"id":62,"eClass":"EGenericType"},{"id":63,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"elementType","lowerBound":0,"id":64,"many":false,"required":false,"eClass":"EParameter"},{"id":65,"eClass":"EGenericType"},{"id":66,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"elementType","lowerBound":0,"id":67,"many":false,"required":false,"eClass":"EParameter"},{"id":68,"eClass":"EGenericType"},{"id":69,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"elementType","lowerBound":0,"id":70,"many":false,"required":false,"eClass":"EParameter"},{"id":71,"eClass":"EGenericType"},{"id":72,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"elementType","lowerBound":0,"id":73,"many":false,"required":false,"eClass":"EParameter"},{"id":74,"eClass":"EGenericType"},{"id":75,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"elementType","lowerBound":0,"id":76,"many":false,"required":false,"eClass":"EParameter"},{"id":77,"eClass":"EGenericType"},{"id":78,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"representedType","lowerBound":1,"id":79,"many":false,"required":true,"eClass":"EParameter"},{"id":80,"eClass":"EGenericType"},{"id":81,"eClass":"EGenericType"},{"id":82,"eClass":"EGenericType"},{"id":83,"eClass":"EGenericType"},{"id":84,"eClass":"EGenericType"},{"id":85,"eClass":"EGenericType"},{"id":86,"eClass":"EGenericType"},{"id":87,"eClass":"EGenericType"},{"id":88,"eClass":"EGenericType"},{"id":89,"eClass":"EGenericType"},{"id":90,"eClass":"EGenericType"},{"id":91,"eClass":"EGenericType"},{"id":92,"eClass":"EGenericType"},{"id":93,"eClass":"EGenericType"},{"id":94,"eClass":"EGenericType"},{"id":95,"eClass":"EGenericType"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"VariableExp","instanceClass":null,"abstract":false,"id":96,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"Variable","instanceClass":null,"abstract":false,"id":97,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"UnlimitedNaturalExp","instanceClass":null,"abstract":false,"id":98,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TypeLiteralExp","instanceClass":null,"abstract":false,"id":99,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TupleLiteralPart","instanceClass":null,"abstract":false,"id":100,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"TupleLiteralExp","instanceClass":null,"abstract":false,"id":101,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"StringLiteralExp","instanceClass":null,"abstract":false,"id":102,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"RealLiteralExp","instanceClass":null,"abstract":false,"id":103,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PropertyCallExp","instanceClass":null,"abstract":false,"id":104,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"PrimitiveLiteralExp","instanceClass":null,"abstract":true,"id":105,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OperationCallExp","instanceClass":null,"abstract":false,"id":106,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"OclExpression","instanceClass":null,"abstract":true,"id":107,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"NumericLiteralExp","instanceClass":null,"abstract":true,"id":108,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"UndefinedLiteralExp","instanceClass":null,"abstract":false,"id":109,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"LoopExp","instanceClass":null,"abstract":true,"id":110,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"LiteralExp","instanceClass":null,"abstract":true,"id":111,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"LetExp","instanceClass":null,"abstract":false,"id":112,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"IteratorExp","instanceClass":null,"abstract":false,"id":113,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"IterateExp","instanceClass":null,"abstract":false,"id":114,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"InvalidLiteralExp","instanceClass":null,"abstract":false,"id":115,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"IntegerLiteralExp","instanceClass":null,"abstract":false,"id":116,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"IfExp","instanceClass":null,"abstract":false,"id":117,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"FeatureCallExp","instanceClass":null,"abstract":true,"id":118,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"BooleanLiteralExp","instanceClass":null,"abstract":false,"id":119,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CallExp","instanceClass":null,"abstract":true,"id":120,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CollectionItem","instanceClass":null,"abstract":false,"id":121,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CollectionLiteralExp","instanceClass":null,"abstract":false,"id":122,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CollectionLiteralPart","instanceClass":null,"abstract":true,"id":123,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"CollectionRange","instanceClass":null,"abstract":false,"id":124,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EnumLiteralExp","instanceClass":null,"abstract":false,"id":125,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ExpressionInOcl","instanceClass":null,"abstract":false,"id":126,"interface":false,"eClass":"EClass"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"referredVariable","changeable":true,"resolveProxies":false,"lowerBound":0,"id":127,"derived":false},{"id":128,"eClass":"EGenericType"},{"id":129,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"asParameter","lowerBound":0,"id":130,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"asProperty","lowerBound":0,"id":131,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"representedParameter","changeable":true,"resolveProxies":false,"lowerBound":0,"id":132,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"initExpression","changeable":true,"resolveProxies":false,"lowerBound":0,"id":133,"derived":false},{"id":134,"eClass":"EGenericType"},{"id":135,"eClass":"EGenericType"},{"id":136,"eClass":"EGenericType"},{"id":137,"eClass":"EGenericType"},{"id":138,"eClass":"EGenericType"},{"id":139,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"symbol","changeable":true,"lowerBound":0,"iD":false,"id":140,"derived":false},{"id":141,"eClass":"EGenericType"},{"id":142,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"referredType","changeable":true,"resolveProxies":false,"lowerBound":0,"id":143,"derived":false},{"id":144,"eClass":"EGenericType"},{"id":145,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"property","changeable":true,"resolveProxies":false,"lowerBound":0,"id":146,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"resolveProxies":false,"lowerBound":1,"id":147,"derived":false},{"id":148,"eClass":"EGenericType"},{"id":149,"eClass":"EGenericType"},{"id":150,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"part","changeable":true,"resolveProxies":true,"lowerBound":0,"id":151,"derived":false},{"id":152,"eClass":"EGenericType"},{"id":153,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"stringSymbol","changeable":true,"lowerBound":0,"iD":false,"id":154,"derived":false},{"id":155,"eClass":"EGenericType"},{"id":156,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"realSymbol","changeable":true,"lowerBound":0,"iD":false,"id":157,"derived":false},{"id":158,"eClass":"EGenericType"},{"id":159,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"referredProperty","changeable":true,"resolveProxies":false,"lowerBound":0,"id":160,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"qualifier","changeable":true,"resolveProxies":false,"lowerBound":0,"id":161,"derived":false},{"id":162,"eClass":"EGenericType"},{"id":163,"eClass":"EGenericType"},{"id":164,"eClass":"EGenericType"},{"id":165,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"argument","changeable":true,"resolveProxies":false,"lowerBound":0,"id":166,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"referredOperation","changeable":true,"resolveProxies":false,"lowerBound":0,"id":167,"derived":false},{"id":168,"eClass":"EGenericType"},{"id":169,"eClass":"EGenericType"},{"id":170,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"withAtPre","lowerBound":0,"id":171,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"withAsSet","lowerBound":0,"id":172,"many":false,"required":false,"eClass":"EOperation"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"oclLibrary","changeable":true,"resolveProxies":false,"lowerBound":0,"id":173,"derived":false},{"id":174,"eClass":"EGenericType"},{"id":175,"eClass":"EGenericType"},{"id":176,"eClass":"EGenericType"},{"id":177,"eClass":"EGenericType"},{"id":178,"eClass":"EGenericType"},{"id":179,"eClass":"EGenericType"},{"id":180,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"body","changeable":true,"resolveProxies":false,"lowerBound":1,"id":181,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"iterator","changeable":true,"resolveProxies":false,"lowerBound":0,"id":182,"derived":false},{"id":183,"eClass":"EGenericType"},{"id":184,"eClass":"EGenericType"},{"id":185,"eClass":"EGenericType"},{"id":186,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"in","changeable":true,"resolveProxies":false,"lowerBound":1,"id":187,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"variable","changeable":true,"resolveProxies":false,"lowerBound":1,"id":188,"derived":false},{"id":189,"eClass":"EGenericType"},{"id":190,"eClass":"EGenericType"},{"id":191,"eClass":"EGenericType"},{"id":192,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"result","changeable":true,"resolveProxies":false,"lowerBound":0,"id":193,"derived":false},{"id":194,"eClass":"EGenericType"},{"id":195,"eClass":"EGenericType"},{"id":196,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"integerSymbol","changeable":true,"lowerBound":0,"iD":false,"id":197,"derived":false},{"id":198,"eClass":"EGenericType"},{"id":199,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"condition","changeable":true,"resolveProxies":false,"lowerBound":1,"id":200,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"thenExpression","changeable":true,"resolveProxies":false,"lowerBound":1,"id":201,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"elseExpression","changeable":true,"resolveProxies":false,"lowerBound":1,"id":202,"derived":false},{"id":203,"eClass":"EGenericType"},{"id":204,"eClass":"EGenericType"},{"id":205,"eClass":"EGenericType"},{"id":206,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sourceType","changeable":true,"resolveProxies":true,"lowerBound":0,"id":207,"derived":false},{"id":208,"eClass":"EGenericType"},{"id":209,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"booleanSymbol","changeable":true,"lowerBound":0,"iD":false,"id":210,"derived":false},{"id":211,"eClass":"EGenericType"},{"id":212,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"source","changeable":true,"resolveProxies":false,"lowerBound":0,"id":213,"derived":false},{"id":214,"eClass":"EGenericType"},{"id":215,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"item","changeable":true,"resolveProxies":false,"lowerBound":1,"id":216,"derived":false},{"id":217,"eClass":"EGenericType"},{"id":218,"eClass":"EGenericType"},{"name":"Collection","id":219,"value":0,"literal":"Collection","eClass":"EEnumLiteral"},{"name":"Sequence","id":220,"value":1,"literal":"Sequence","eClass":"EEnumLiteral"},{"name":"Bag","id":221,"value":2,"literal":"Bag","eClass":"EEnumLiteral"},{"name":"Set","id":222,"value":3,"literal":"Set","eClass":"EEnumLiteral"},{"name":"OrderedSet","id":223,"value":4,"literal":"OrderedSet","eClass":"EEnumLiteral"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"part","changeable":true,"resolveProxies":false,"lowerBound":0,"id":224,"derived":false},{"ordered":true,"upperBound":1,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"kind","changeable":true,"lowerBound":0,"iD":false,"id":225,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"elementType","changeable":true,"resolveProxies":true,"lowerBound":0,"id":226,"derived":false},{"id":227,"eClass":"EGenericType"},{"id":228,"eClass":"EGenericType"},{"id":229,"eClass":"EGenericType"},{"id":230,"eClass":"EGenericType"},{"id":231,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"first","changeable":true,"resolveProxies":false,"lowerBound":1,"id":232,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"last","changeable":true,"resolveProxies":false,"lowerBound":1,"id":233,"derived":false},{"id":234,"eClass":"EGenericType"},{"id":235,"eClass":"EGenericType"},{"id":236,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"referredEnumLiteral","changeable":true,"resolveProxies":false,"lowerBound":0,"id":237,"derived":false},{"id":238,"eClass":"EGenericType"},{"id":239,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":true,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"bodyExpression","changeable":true,"resolveProxies":false,"lowerBound":1,"id":240,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"context","changeable":true,"resolveProxies":false,"lowerBound":0,"id":241,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"result","changeable":true,"resolveProxies":false,"lowerBound":0,"id":242,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"parameter","changeable":true,"resolveProxies":false,"lowerBound":0,"id":243,"derived":false},{"id":244,"eClass":"EGenericType"},{"id":245,"eClass":"EGenericType"},{"id":246,"eClass":"EGenericType"},{"id":247,"eClass":"EGenericType"},{"id":248,"eClass":"EGenericType"}],"links":[{"source":0,"target":1},{"source":0,"target":2},{"source":1,"target":3},{"source":1,"target":4},{"source":1,"target":5},{"source":1,"target":6},{"source":1,"target":7},{"source":1,"target":8},{"source":1,"target":9},{"source":1,"target":10},{"source":1,"target":11},{"source":1,"target":12},{"source":1,"target":13},{"source":1,"target":0},{"source":3,"target":1},{"source":3,"target":5},{"source":3,"target":14},{"source":14,"target":5},{"source":4,"target":1},{"source":4,"target":15},{"source":4,"target":16},{"source":15,"target":12},{"source":15,"target":17},{"source":15,"target":4},{"source":17,"target":12},{"source":5,"target":1},{"source":5,"target":18},{"source":5,"target":19},{"source":5,"target":20},{"source":5,"target":21},{"source":18,"target":22},{"source":18,"target":5},{"source":19,"target":12},{"source":19,"target":23},{"source":19,"target":5},{"source":23,"target":12},{"source":20,"target":24},{"source":20,"target":25},{"source":20,"target":5},{"source":25,"target":24},{"source":6,"target":1},{"source":6,"target":26},{"source":6,"target":27},{"source":26,"target":12},{"source":26,"target":28},{"source":26,"target":6},{"source":26,"target":29},{"source":28,"target":12},{"source":7,"target":1},{"source":7,"target":5},{"source":7,"target":30},{"source":30,"target":5},{"source":8,"target":1},{"source":8,"target":5},{"source":8,"target":31},{"source":31,"target":5},{"source":9,"target":1},{"source":9,"target":5},{"source":9,"target":32},{"source":32,"target":5},{"source":10,"target":1},{"source":10,"target":33},{"source":10,"target":34},{"source":33,"target":12},{"source":33,"target":35},{"source":33,"target":10},{"source":33,"target":36},{"source":35,"target":12},{"source":11,"target":1},{"source":11,"target":37},{"source":11,"target":38},{"source":37,"target":39},{"source":37,"target":11},{"source":12,"target":1},{"source":12,"target":40},{"source":12,"target":41},{"source":12,"target":42},{"source":12,"target":43},{"source":12,"target":44},{"source":12,"target":45},{"source":12,"target":46},{"source":12,"target":47},{"source":12,"target":48},{"source":12,"target":49},{"source":12,"target":50},{"source":12,"target":51},{"source":12,"target":36},{"source":12,"target":29},{"source":12,"target":52},{"source":12,"target":53},{"source":12,"target":54},{"source":12,"target":55},{"source":12,"target":56},{"source":12,"target":57},{"source":12,"target":58},{"source":40,"target":4},{"source":40,"target":59},{"source":40,"target":12},{"source":40,"target":60},{"source":59,"target":4},{"source":60,"target":61},{"source":60,"target":40},{"source":61,"target":62},{"source":41,"target":5},{"source":41,"target":63},{"source":41,"target":12},{"source":41,"target":64},{"source":63,"target":5},{"source":64,"target":65},{"source":64,"target":41},{"source":42,"target":8},{"source":42,"target":66},{"source":42,"target":12},{"source":42,"target":67},{"source":66,"target":8},{"source":67,"target":68},{"source":67,"target":42},{"source":43,"target":3},{"source":43,"target":69},{"source":43,"target":12},{"source":43,"target":70},{"source":69,"target":3},{"source":70,"target":71},{"source":70,"target":43},{"source":44,"target":9},{"source":44,"target":72},{"source":44,"target":12},{"source":44,"target":73},{"source":72,"target":9},{"source":73,"target":74},{"source":73,"target":44},{"source":45,"target":7},{"source":45,"target":75},{"source":45,"target":12},{"source":45,"target":76},{"source":75,"target":7},{"source":76,"target":77},{"source":76,"target":45},{"source":46,"target":11},{"source":46,"target":78},{"source":46,"target":12},{"source":46,"target":79},{"source":78,"target":11},{"source":79,"target":80},{"source":79,"target":46},{"source":47,"target":81},{"source":47,"target":12},{"source":48,"target":82},{"source":48,"target":12},{"source":49,"target":83},{"source":49,"target":12},{"source":50,"target":84},{"source":50,"target":12},{"source":51,"target":13},{"source":51,"target":85},{"source":51,"target":12},{"source":85,"target":13},{"source":36,"target":10},{"source":36,"target":86},{"source":36,"target":12},{"source":36,"target":33},{"source":86,"target":10},{"source":29,"target":6},{"source":29,"target":87},{"source":29,"target":12},{"source":29,"target":26},{"source":87,"target":6},{"source":52,"target":11},{"source":52,"target":88},{"source":52,"target":12},{"source":88,"target":11},{"source":53,"target":5},{"source":53,"target":89},{"source":53,"target":12},{"source":89,"target":5},{"source":54,"target":8},{"source":54,"target":90},{"source":54,"target":12},{"source":90,"target":8},{"source":55,"target":3},{"source":55,"target":91},{"source":55,"target":12},{"source":91,"target":3},{"source":56,"target":9},{"source":56,"target":92},{"source":56,"target":12},{"source":92,"target":9},{"source":57,"target":7},{"source":57,"target":93},{"source":57,"target":12},{"source":93,"target":7},{"source":58,"target":4},{"source":58,"target":94},{"source":58,"target":12},{"source":94,"target":4},{"source":13,"target":1},{"source":13,"target":95},{"source":2,"target":96},{"source":2,"target":97},{"source":2,"target":98},{"source":2,"target":99},{"source":2,"target":100},{"source":2,"target":101},{"source":2,"target":102},{"source":2,"target":103},{"source":2,"target":104},{"source":2,"target":105},{"source":2,"target":106},{"source":2,"target":107},{"source":2,"target":108},{"source":2,"target":109},{"source":2,"target":110},{"source":2,"target":111},{"source":2,"target":112},{"source":2,"target":113},{"source":2,"target":114},{"source":2,"target":115},{"source":2,"target":116},{"source":2,"target":117},{"source":2,"target":118},{"source":2,"target":119},{"source":2,"target":120},{"source":2,"target":121},{"source":2,"target":24},{"source":2,"target":122},{"source":2,"target":123},{"source":2,"target":124},{"source":2,"target":125},{"source":2,"target":126},{"source":2,"target":0},{"source":96,"target":2},{"source":96,"target":107},{"source":96,"target":127},{"source":96,"target":128},{"source":127,"target":97},{"source":127,"target":129},{"source":127,"target":96},{"source":129,"target":97},{"source":128,"target":107},{"source":97,"target":2},{"source":97,"target":130},{"source":97,"target":131},{"source":97,"target":132},{"source":97,"target":133},{"source":97,"target":134},{"source":97,"target":135},{"source":130,"target":136},{"source":130,"target":97},{"source":131,"target":137},{"source":131,"target":97},{"source":132,"target":138},{"source":132,"target":97},{"source":133,"target":107},{"source":133,"target":139},{"source":133,"target":97},{"source":139,"target":107},{"source":98,"target":2},{"source":98,"target":108},{"source":98,"target":140},{"source":98,"target":141},{"source":140,"target":142},{"source":140,"target":98},{"source":141,"target":108},{"source":99,"target":2},{"source":99,"target":111},{"source":99,"target":143},{"source":99,"target":144},{"source":143,"target":145},{"source":143,"target":99},{"source":144,"target":111},{"source":100,"target":2},{"source":100,"target":146},{"source":100,"target":147},{"source":100,"target":148},{"source":146,"target":149},{"source":146,"target":100},{"source":147,"target":107},{"source":147,"target":150},{"source":147,"target":100},{"source":150,"target":107},{"source":101,"target":2},{"source":101,"target":111},{"source":101,"target":151},{"source":101,"target":152},{"source":151,"target":100},{"source":151,"target":153},{"source":151,"target":101},{"source":153,"target":100},{"source":152,"target":111},{"source":102,"target":2},{"source":102,"target":105},{"source":102,"target":154},{"source":102,"target":155},{"source":154,"target":156},{"source":154,"target":102},{"source":155,"target":105},{"source":103,"target":2},{"source":103,"target":108},{"source":103,"target":157},{"source":103,"target":158},{"source":157,"target":159},{"source":157,"target":103},{"source":158,"target":108},{"source":104,"target":2},{"source":104,"target":118},{"source":104,"target":160},{"source":104,"target":161},{"source":104,"target":162},{"source":160,"target":163},{"source":160,"target":104},{"source":161,"target":107},{"source":161,"target":164},{"source":161,"target":104},{"source":164,"target":107},{"source":162,"target":118},{"source":105,"target":2},{"source":105,"target":111},{"source":105,"target":165},{"source":165,"target":111},{"source":106,"target":2},{"source":106,"target":118},{"source":106,"target":166},{"source":106,"target":167},{"source":106,"target":168},{"source":166,"target":107},{"source":166,"target":169},{"source":166,"target":106},{"source":169,"target":107},{"source":167,"target":170},{"source":167,"target":106},{"source":168,"target":118},{"source":107,"target":2},{"source":107,"target":171},{"source":107,"target":172},{"source":107,"target":173},{"source":107,"target":174},{"source":107,"target":175},{"source":171,"target":106},{"source":171,"target":176},{"source":171,"target":107},{"source":176,"target":106},{"source":172,"target":106},{"source":172,"target":177},{"source":172,"target":107},{"source":177,"target":106},{"source":173,"target":12},{"source":173,"target":178},{"source":173,"target":107},{"source":178,"target":12},{"source":108,"target":2},{"source":108,"target":105},{"source":108,"target":179},{"source":179,"target":105},{"source":109,"target":2},{"source":109,"target":111},{"source":109,"target":180},{"source":180,"target":111},{"source":110,"target":2},{"source":110,"target":120},{"source":110,"target":181},{"source":110,"target":182},{"source":110,"target":183},{"source":181,"target":107},{"source":181,"target":184},{"source":181,"target":110},{"source":184,"target":107},{"source":182,"target":97},{"source":182,"target":185},{"source":182,"target":110},{"source":185,"target":97},{"source":183,"target":120},{"source":111,"target":2},{"source":111,"target":107},{"source":111,"target":186},{"source":186,"target":107},{"source":112,"target":2},{"source":112,"target":107},{"source":112,"target":187},{"source":112,"target":188},{"source":112,"target":189},{"source":187,"target":107},{"source":187,"target":190},{"source":187,"target":112},{"source":190,"target":107},{"source":188,"target":97},{"source":188,"target":191},{"source":188,"target":112},{"source":191,"target":97},{"source":189,"target":107},{"source":113,"target":2},{"source":113,"target":110},{"source":113,"target":192},{"source":192,"target":110},{"source":114,"target":2},{"source":114,"target":110},{"source":114,"target":193},{"source":114,"target":194},{"source":193,"target":97},{"source":193,"target":195},{"source":193,"target":114},{"source":195,"target":97},{"source":194,"target":110},{"source":115,"target":2},{"source":115,"target":111},{"source":115,"target":196},{"source":196,"target":111},{"source":116,"target":2},{"source":116,"target":108},{"source":116,"target":197},{"source":116,"target":198},{"source":197,"target":199},{"source":197,"target":116},{"source":198,"target":108},{"source":117,"target":2},{"source":117,"target":107},{"source":117,"target":200},{"source":117,"target":201},{"source":117,"target":202},{"source":117,"target":203},{"source":200,"target":107},{"source":200,"target":204},{"source":200,"target":117},{"source":204,"target":107},{"source":201,"target":107},{"source":201,"target":205},{"source":201,"target":117},{"source":205,"target":107},{"source":202,"target":107},{"source":202,"target":206},{"source":202,"target":117},{"source":206,"target":107},{"source":203,"target":107},{"source":118,"target":2},{"source":118,"target":120},{"source":118,"target":207},{"source":118,"target":208},{"source":207,"target":209},{"source":207,"target":118},{"source":208,"target":120},{"source":119,"target":2},{"source":119,"target":105},{"source":119,"target":210},{"source":119,"target":211},{"source":210,"target":212},{"source":210,"target":119},{"source":211,"target":105},{"source":120,"target":2},{"source":120,"target":107},{"source":120,"target":213},{"source":120,"target":214},{"source":213,"target":107},{"source":213,"target":215},{"source":213,"target":120},{"source":215,"target":107},{"source":214,"target":107},{"source":121,"target":2},{"source":121,"target":123},{"source":121,"target":216},{"source":121,"target":217},{"source":216,"target":107},{"source":216,"target":218},{"source":216,"target":121},{"source":218,"target":107},{"source":217,"target":123},{"source":24,"target":2},{"source":24,"target":219},{"source":24,"target":220},{"source":24,"target":221},{"source":24,"target":222},{"source":24,"target":223},{"source":219,"target":24},{"source":220,"target":24},{"source":221,"target":24},{"source":222,"target":24},{"source":223,"target":24},{"source":122,"target":2},{"source":122,"target":111},{"source":122,"target":224},{"source":122,"target":225},{"source":122,"target":226},{"source":122,"target":227},{"source":224,"target":123},{"source":224,"target":228},{"source":224,"target":122},{"source":228,"target":123},{"source":225,"target":24},{"source":225,"target":229},{"source":225,"target":122},{"source":229,"target":24},{"source":226,"target":230},{"source":226,"target":122},{"source":227,"target":111},{"source":123,"target":2},{"source":123,"target":231},{"source":124,"target":2},{"source":124,"target":123},{"source":124,"target":232},{"source":124,"target":233},{"source":124,"target":234},{"source":232,"target":107},{"source":232,"target":235},{"source":232,"target":124},{"source":235,"target":107},{"source":233,"target":107},{"source":233,"target":236},{"source":233,"target":124},{"source":236,"target":107},{"source":234,"target":123},{"source":125,"target":2},{"source":125,"target":111},{"source":125,"target":237},{"source":125,"target":238},{"source":237,"target":239},{"source":237,"target":125},{"source":238,"target":111},{"source":126,"target":2},{"source":126,"target":240},{"source":126,"target":241},{"source":126,"target":242},{"source":126,"target":243},{"source":126,"target":244},{"source":240,"target":107},{"source":240,"target":245},{"source":240,"target":126},{"source":245,"target":107},{"source":241,"target":97},{"source":241,"target":246},{"source":241,"target":126},{"source":246,"target":97},{"source":242,"target":97},{"source":242,"target":247},{"source":242,"target":126},{"source":247,"target":97},{"source":243,"target":97},{"source":243,"target":248},{"source":243,"target":126},{"source":248,"target":97}],"multigraph":true}