*** empty log message ***
diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore b/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
index 6e1e045..200bb64 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
@@ -170,284 +170,6 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//TemplateableElement">

-    <eOperations name="validateNoName" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()&#xD;&#xA;&#x9;implies self.qualifiedName->isEmpty()&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eAnnotations source="constraint"/>

-    </eOperations>

-    <eOperations name="validateQualifiedName" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xD;&#xA;self.qualifiedName =&#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |&#xD;&#xA;&#x9;&#x9;ns.name->union(self.separator())->union(result))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eAnnotations source="constraint"/>

-    </eOperations>

-    <eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (List) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);&#xD;&#xA;}"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.namespace->isEmpty()&#xD;&#xA;then Sequence{}&#xD;&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="isDistinguishableFrom" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xD;&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eParameters name="n" eType="#//NamedElement"/>

-      <eParameters name="ns" eType="#//Namespace"/>

-    </eOperations>

-    <eOperations name="separator" eType="#//String">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;'::'&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="qualifiedName" eType="#//String">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xD;&#xA;then &#xD;&#xA;    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xD;&#xA;else&#xD;&#xA;    Set{}&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="validateVisibilityNeedsOwnership" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eAnnotations source="constraint"/>

-    </eOperations>

-    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="namespace"/>

-        <details key="eType" value="org.eclipse.uml2.Namespace"/>

-        <details key="eOpposite" value="ownedMember"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-      </eAnnotations>

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-      <eAnnotations source="union"/>

-    </eOperations>

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//NamedElement/getNamespace"/>

-    </eOperations>

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//NamedElement/nameExpression"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"

-        defaultValueLiteral=""/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"

-        eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"

-        eType="#//VisibilityKind"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"

-        upperBound="-1" eType="#//Dependency" volatile="true" eOpposite="#//Dependency/client"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"

-        eType="#//StringExpression" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">

-    <eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;membersAreDistinguishable()&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eAnnotations source="constraint"/>

-    </eOperations>

-    <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.ownedMember->includes(element)&#xD;&#xA;then Set{}->include(element.name)&#xD;&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xD;&#xA;    if elementImports->notEmpty()&#xD;&#xA;    then elementImports->collect(el | el.getName())&#xD;&#xA;    else &#xD;&#xA;        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xD;&#xA;    endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eParameters name="element" eType="#//NamedElement"/>

-    </eOperations>

-    <eOperations name="membersAreDistinguishable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.member->forAll( memb |&#xD;&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xD;&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="validateImportedMemberDerived" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eAnnotations source="constraint"/>

-    </eOperations>

-    <eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);&#xD;&#xA;}"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//Set">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eParameters name="imps" eType="#//Set"/>

-    </eOperations>

-    <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//Set">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-      <eParameters name="imps" eType="#//Set"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Namespace/ownedRule"/>

-    </eOperations>

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/elementImport #//Namespace/packageImport"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"

-        upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"

-        transient="true" derived="true">

-      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/importedMember.1"/>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"

-        upperBound="-1" eType="#//Constraint" volatile="true" containment="true" eOpposite="#//Constraint/namespace">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"

-        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"

-        transient="true" derived="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"

-        upperBound="-1" eType="#//ElementImport" volatile="true" containment="true"

-        eOpposite="#//ElementImport/importingNamespace">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"

-        upperBound="-1" eType="#//PackageImport" volatile="true" containment="true"

-        eOpposite="#//PackageImport/importingNamespace">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//TemplateableElement">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Comment/bodyExpression"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"

-        defaultValueLiteral=""/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"

-        upperBound="-1" eType="#//Element"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" ordered="false"

-        eType="#//StringExpression" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"

-      eSuperTypes="#//Relationship">

-    <eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="relatedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//DirectedRelationship/source #//DirectedRelationship/target"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

-        transient="true" derived="true">

-      <eAnnotations source="union"/>

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

-        transient="true" derived="true">

-      <eAnnotations source="union"/>

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

-        transient="true" derived="true">

-      <eAnnotations source="union"/>

-    </eStructuralFeatures>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="OpaqueExpression" eSuperTypes="#//ValueSpecification">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"

         defaultValueLiteral=""/>

@@ -628,15 +350,15 @@
         <details key="org.eclipse.uml2.Classifier#getGenerals" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"

-        upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"

-        derived="true" eOpposite="#//Extension/metaclass"/>

     <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"

         eType="#//Classifier" containment="true">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" ordered="false"

+        upperBound="-1" eType="#//Extension" changeable="false" volatile="true" transient="true"

+        derived="true" eOpposite="#//Extension/metaclass"/>

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isActive" ordered="false"

         eType="#//Boolean"/>

     <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"

@@ -1203,6 +925,112 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"

         upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter"/>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//TemplateableElement">

+    <eOperations name="validateNoName" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()&#xD;&#xA;&#x9;implies self.qualifiedName->isEmpty()&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eAnnotations source="constraint"/>

+    </eOperations>

+    <eOperations name="validateQualifiedName" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xD;&#xA;self.qualifiedName =&#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |&#xD;&#xA;&#x9;&#x9;ns.name->union(self.separator())->union(result))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eAnnotations source="constraint"/>

+    </eOperations>

+    <eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (List) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);&#xD;&#xA;}"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.namespace->isEmpty()&#xD;&#xA;then Sequence{}&#xD;&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="isDistinguishableFrom" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xD;&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eParameters name="n" eType="#//NamedElement"/>

+      <eParameters name="ns" eType="#//Namespace"/>

+    </eOperations>

+    <eOperations name="separator" eType="#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;'::'&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="qualifiedName" eType="#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xD;&#xA;then &#xD;&#xA;    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xD;&#xA;else&#xD;&#xA;    Set{}&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="validateVisibilityNeedsOwnership" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eAnnotations source="constraint"/>

+    </eOperations>

+    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="namespace"/>

+        <details key="eType" value="org.eclipse.uml2.Namespace"/>

+        <details key="eOpposite" value="ownedMember"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+      </eAnnotations>

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+      </eAnnotations>

+      <eAnnotations source="union"/>

+    </eOperations>

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//NamedElement/getNamespace"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//NamedElement/nameExpression"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"

+        defaultValueLiteral=""/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"

+        eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"

+        eType="#//VisibilityKind"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"

+        upperBound="-1" eType="#//Dependency" volatile="true" eOpposite="#//Dependency/client"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"

+        eType="#//StringExpression" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement">

     <eOperations name="validateElementsPublicOrPrivate" eType="#//Boolean">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

@@ -1302,18 +1130,18 @@
         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"

-        upperBound="-1" eType="#//ProfileApplication" volatile="true" resolveProxies="false">

-      <eAnnotations source="subsets" references="#//Namespace/packageImport">

-        <details key="org.eclipse.uml2.Namespace#getPackageImports" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EReference" name="packageExtension" ordered="false"

         upperBound="-1" eType="#//PackageMerge" containment="true">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="appliedProfile" ordered="false"

+        upperBound="-1" eType="#//ProfileApplication" volatile="true" resolveProxies="false">

+      <eAnnotations source="subsets" references="#//Namespace/packageImport">

+        <details key="org.eclipse.uml2.Namespace#getPackageImports" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="#//DataType">

     <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -1416,14 +1244,107 @@
     </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType"/>

-  <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">

-    <eOperations name="validateNotApplyToSelf" eType="#//Boolean">

+  <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"

+      eSuperTypes="#//Relationship">

+    <eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="relatedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//DirectedRelationship/source #//DirectedRelationship/target"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

+        transient="true" derived="true">

+      <eAnnotations source="union"/>

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

+        transient="true" derived="true">

+      <eAnnotations source="union"/>

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"

+        transient="true" derived="true">

+      <eAnnotations source="union"/>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">

+    <eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.ConstraintOperations.validateNotApplyToSelf(this, diagnostics, context);"/>

-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;not constrainedElement->includes(self)&#xD;&#xA;&lt;/code>"/>

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;membersAreDistinguishable()&#xD;&#xA;&lt;/code>"/>

       </eAnnotations>

       <eAnnotations source="constraint"/>

     </eOperations>

+    <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.ownedMember->includes(element)&#xD;&#xA;then Set{}->include(element.name)&#xD;&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xD;&#xA;    if elementImports->notEmpty()&#xD;&#xA;    then elementImports->collect(el | el.getName())&#xD;&#xA;    else &#xD;&#xA;        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xD;&#xA;    endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eParameters name="element" eType="#//NamedElement"/>

+    </eOperations>

+    <eOperations name="membersAreDistinguishable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.member->forAll( memb |&#xD;&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xD;&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="validateImportedMemberDerived" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eAnnotations source="constraint"/>

+    </eOperations>

+    <eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);&#xD;&#xA;}"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//Set">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eParameters name="imps" eType="#//Set"/>

+    </eOperations>

+    <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//Set">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eParameters name="imps" eType="#//Set"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Namespace/ownedRule"/>

+    </eOperations>

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -1435,115 +1356,65 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Constraint/specification"/>

+      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/elementImport #//Namespace/packageImport"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"

-        eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true">

-      <eAnnotations source="union" references="#//Constraint/namespace"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"

+        upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"

+        transient="true" derived="true">

+      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/importedMember.1"/>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"

-        eType="#//Namespace" volatile="true" transient="true" eOpposite="#//Namespace/ownedRule">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"

+        upperBound="-1" eType="#//Constraint" volatile="true" containment="true" eOpposite="#//Constraint/namespace">

       <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Constraint#getContext" value=""/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//NamedElement/getNamespace">

-        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"

-        lowerBound="1" eType="#//ValueSpecification" volatile="true" containment="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"

+        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"

+        transient="true" derived="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"

+        upperBound="-1" eType="#//ElementImport" volatile="true" containment="true"

+        eOpposite="#//ElementImport/importingNamespace">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"

-        eType="#//Element"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"

+        upperBound="-1" eType="#//PackageImport" volatile="true" containment="true"

+        eOpposite="#//PackageImport/importingNamespace">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">

-    <eLiterals name="public"/>

-    <eLiterals name="private" value="1"/>

-    <eLiterals name="protected" value="2"/>

-    <eLiterals name="package" value="3"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">

-    <eOperations name="isComputable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.isComputable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+  <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//TemplateableElement">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

+      <eAnnotations source="union" references="#//Comment/bodyExpression"/>

     </eOperations>

-    <eOperations name="booleanValue" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.booleanValue(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"

+        defaultValueLiteral=""/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"

+        upperBound="-1" eType="#//Element"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" ordered="false"

+        eType="#//StringExpression" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

-        eType="#//Boolean"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"

-      eSuperTypes="#//ValueSpecification"/>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">

-    <eOperations name="isComputable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralStringOperations.isComputable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="stringValue" eType="#//String">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralStringOperations.stringValue(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

-        eType="#//String" defaultValueLiteral=""/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">

-    <eOperations name="isComputable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralNullOperations.isComputable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="isNull" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralNullOperations.isNull(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralInteger" eSuperTypes="#//LiteralSpecification">

-    <eOperations name="isComputable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.isComputable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="integerValue" eType="#//Integer">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.integerValue(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

-        eType="#//Integer"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">

-    <eOperations name="isComputable" eType="#//Boolean">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.isComputable(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="unlimitedValue" eType="#//UnlimitedNatural">

-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.unlimitedValue(this);"/>

-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

-      </eAnnotations>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

-        eType="#//UnlimitedNatural"/>

+    </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//Type #//RedefinableElement">

     <eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Set">

@@ -1775,6 +1646,135 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isStatic" ordered="false"

         eType="#//Boolean" defaultValueLiteral="false"/>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">

+    <eOperations name="validateNotApplyToSelf" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.ConstraintOperations.validateNotApplyToSelf(this, diagnostics, context);"/>

+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;not constrainedElement->includes(self)&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+      <eAnnotations source="constraint"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Constraint/specification"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"

+        eType="#//Namespace" changeable="false" volatile="true" transient="true" derived="true">

+      <eAnnotations source="union" references="#//Constraint/namespace"/>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="namespace" ordered="false"

+        eType="#//Namespace" volatile="true" transient="true" eOpposite="#//Namespace/ownedRule">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Constraint#getContext" value=""/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//NamedElement/getNamespace">

+        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="specification" ordered="false"

+        lowerBound="1" eType="#//ValueSpecification" volatile="true" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"

+        eType="#//Element"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">

+    <eLiterals name="public"/>

+    <eLiterals name="private" value="1"/>

+    <eLiterals name="protected" value="2"/>

+    <eLiterals name="package" value="3"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">

+    <eOperations name="isComputable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.isComputable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="booleanValue" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralBooleanOperations.booleanValue(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

+        eType="#//Boolean"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralSpecification" abstract="true"

+      eSuperTypes="#//ValueSpecification"/>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralString" eSuperTypes="#//LiteralSpecification">

+    <eOperations name="isComputable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralStringOperations.isComputable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="stringValue" eType="#//String">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralStringOperations.stringValue(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

+        eType="#//String" defaultValueLiteral=""/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralNull" eSuperTypes="#//LiteralSpecification">

+    <eOperations name="isComputable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralNullOperations.isComputable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="isNull" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralNullOperations.isNull(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralInteger" eSuperTypes="#//LiteralSpecification">

+    <eOperations name="isComputable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.isComputable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="integerValue" eType="#//Integer">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralIntegerOperations.integerValue(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

+        eType="#//Integer"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LiteralUnlimitedNatural" eSuperTypes="#//LiteralSpecification">

+    <eOperations name="isComputable" eType="#//Boolean">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.isComputable(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;true&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="unlimitedValue" eType="#//UnlimitedNatural">

+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.LiteralUnlimitedNaturalOperations.unlimitedValue(this);"/>

+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;value&#xD;&#xA;&lt;/code>"/>

+      </eAnnotations>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"

+        eType="#//UnlimitedNatural"/>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="BehavioralFeature" abstract="true" eSuperTypes="#//Namespace #//Feature">

     <eOperations name="isDistinguishableFrom" eType="#//Boolean">

       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

@@ -2302,6 +2302,17 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">

+    <eLiterals name="in"/>

+    <eLiterals name="inout" value="1"/>

+    <eLiterals name="out" value="2"/>

+    <eLiterals name="return" value="3"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="AggregationKind">

+    <eLiterals name="none"/>

+    <eLiterals name="shared" value="1"/>

+    <eLiterals name="composite" value="2"/>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class"/>

   <eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">

     <eOperations name="getElementImports" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -2411,181 +2422,6 @@
       <eParameters name="newType" eType="#//Type"/>

     </eOperations>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="ParameterDirectionKind">

-    <eLiterals name="in"/>

-    <eLiterals name="inout" value="1"/>

-    <eLiterals name="out" value="2"/>

-    <eLiterals name="return" value="3"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="AggregationKind">

-    <eLiterals name="none"/>

-    <eLiterals name="shared" value="1"/>

-    <eLiterals name="composite" value="2"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Permission" eSuperTypes="#//Dependency"/>

-  <eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true" eOpposite="#//NamedElement/clientDependency"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Usage" eSuperTypes="#//Dependency"/>

-  <eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Abstraction/mapping"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"

-        eType="#//OpaqueExpression" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">

-    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="source"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Realization/abstraction"/>

-    </eOperations>

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Realization/abstraction"/>

-    </eOperations>

-    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="client"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="clientDependency"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Realization/abstraction"/>

-    </eOperations>

-    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="supplier"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Realization/realizingClassifier"/>

-    </eOperations>

-    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="target"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Realization/realizingClassifier"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"

-        eType="#//Component" volatile="true" transient="true" eOpposite="#//Component/realization">

-      <eAnnotations source="subsets" references="#//Dependency/client">

-        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" ordered="false"

-        lowerBound="1" eType="#//Classifier" volatile="true">

-      <eAnnotations source="subsets" references="#//Dependency/supplier">

-        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

-        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Substitution" eSuperTypes="#//Realization">

-    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="supplier"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Substitution/contract"/>

-    </eOperations>

-    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="target"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Substitution/contract"/>

-    </eOperations>

-    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="client"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="clientDependency"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Substitution/substitutingClassifier"/>

-    </eOperations>

-    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="source"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Substitution/substitutingClassifier"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"

-        lowerBound="1" eType="#//Classifier" volatile="true">

-      <eAnnotations source="subsets" references="#//Dependency/supplier">

-        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

-        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"

-        ordered="false" lowerBound="1" eType="#//Classifier" volatile="true" transient="true"

-        eOpposite="#//Classifier/substitution">

-      <eAnnotations source="subsets" references="#//Dependency/client">

-        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

-        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//Class">

     <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

@@ -2790,54 +2626,20 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"

         eType="#//Boolean" defaultValueLiteral="false"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association"/>

   <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"

         eType="#//String" defaultValueLiteral=""/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"

-        upperBound="-1" eType="#//Classifier"/>

+  <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association"/>

+  <eClassifiers xsi:type="ecore:EClass" name="Permission" eSuperTypes="#//Dependency"/>

+  <eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true" eOpposite="#//NamedElement/clientDependency"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="supplier" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//NamedElement" volatile="true"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//DirectedRelationship">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"

-        upperBound="-1" eType="#//Relationship"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Classifier"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"

-        eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"

-        upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"

-        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" eType="#//ConnectableElement"

-        eOpposite="#//ConnectableElement/end"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"

-        eType="#//Property"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"

-      eSuperTypes="#//NamedElement #//ParameterableElement">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"

-        eType="#//ConnectorEnd" eOpposite="#//ConnectorEnd/role"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Connector/redefinedConnector"/>

-    </eOperations>

+  <eClassifiers xsi:type="ecore:EClass" name="Usage" eSuperTypes="#//Dependency"/>

+  <eClassifiers xsi:type="ecore:EClass" name="Abstraction" eSuperTypes="#//Dependency">

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -2849,202 +2651,38 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Connector/end"/>

+      <eAnnotations source="union" references="#//Abstraction/mapping"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"

-        upperBound="-1" eType="#//Connector">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"

-        eType="#//ConnectorEnd" containment="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false"

+        eType="#//OpaqueExpression" containment="true">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"

-        upperBound="-1" eType="#//Behavior"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"

-      eSuperTypes="#//Classifier">

-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="attribute"/>

-        <details key="eType" value="org.eclipse.uml2.Property"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute #//StructuredClassifier/ownedConnector"/>

-    </eOperations>

-    <eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="member"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StructuredClassifier/role"/>

-    </eOperations>

-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="feature"/>

-        <details key="eType" value="org.eclipse.uml2.Feature"/>

-        <details key="eOpposite" value="featuringClassifier"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StructuredClassifier/ownedConnector"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" ordered="false"

-        upperBound="-1" eType="#//Property" volatile="true" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>

-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"

-        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"

-        eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"

-        derived="true">

-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"

-        upperBound="-1" eType="#//Connector" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">

-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="attribute"/>

-        <details key="eType" value="org.eclipse.uml2.Property"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Interface/ownedAttribute"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Interface/ownedAttribute #//Interface/ownedOperation #//Interface/nestedClassifier #//Interface/ownedReception #//Interface/protocol"/>

-    </eOperations>

-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="feature"/>

-        <details key="eType" value="org.eclipse.uml2.Feature"/>

-        <details key="eOpposite" value="featuringClassifier"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Interface/ownedOperation #//Interface/ownedReception"/>

-    </eOperations>

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Interface/redefinedInterface"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

-        eType="#//Property" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"

-        eType="#//Operation" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"

-        upperBound="-1" eType="#//Interface">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"

-        eType="#//Classifier" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"

-        upperBound="-1" eType="#//Reception" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"

-        eType="#//ProtocolStateMachine" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Implementation" eSuperTypes="#//Realization">

-    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="supplier"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Implementation/contract"/>

-    </eOperations>

-    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+  <eClassifiers xsi:type="ecore:EClass" name="Realization" eSuperTypes="#//Abstraction">

+    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

         <details key="containment" value="false"/>

-        <details key="name" value="target"/>

+        <details key="name" value="source"/>

         <details key="eType" value="org.eclipse.uml2.Element"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Implementation/contract"/>

+      <eAnnotations source="union" references="#//Realization/abstraction"/>

+    </eOperations>

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Realization/abstraction"/>

     </eOperations>

     <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -3058,7 +2696,78 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="superset" references="#//Implementation/implementingClassifier"/>

+      <eAnnotations source="superset" references="#//Realization/abstraction"/>

+    </eOperations>

+    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="supplier"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Realization/realizingClassifier"/>

+    </eOperations>

+    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="target"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Realization/realizingClassifier"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="abstraction" ordered="false"

+        eType="#//Component" volatile="true" transient="true" eOpposite="#//Component/realization">

+      <eAnnotations source="subsets" references="#//Dependency/client">

+        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="realizingClassifier" ordered="false"

+        lowerBound="1" eType="#//Classifier" volatile="true">

+      <eAnnotations source="subsets" references="#//Dependency/supplier">

+        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

+        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Substitution" eSuperTypes="#//Realization">

+    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="supplier"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Substitution/contract"/>

+    </eOperations>

+    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="target"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Substitution/contract"/>

+    </eOperations>

+    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="client"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="clientDependency"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Substitution/substitutingClassifier"/>

     </eOperations>

     <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -3068,24 +2777,44 @@
         <details key="name" value="source"/>

         <details key="eType" value="org.eclipse.uml2.Element"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Implementation/implementingClassifier"/>

+      <eAnnotations source="union" references="#//Substitution/substitutingClassifier"/>

     </eOperations>

     <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"

-        lowerBound="1" eType="#//Interface" volatile="true">

+        lowerBound="1" eType="#//Classifier" volatile="true">

       <eAnnotations source="subsets" references="#//Dependency/supplier">

         <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

         <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"

-        ordered="false" lowerBound="1" eType="#//BehavioredClassifier" volatile="true"

-        transient="true" eOpposite="#//BehavioredClassifier/implementation">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="substitutingClassifier"

+        ordered="false" lowerBound="1" eType="#//Classifier" volatile="true" transient="true"

+        eOpposite="#//Classifier/substitution">

       <eAnnotations source="subsets" references="#//Dependency/client">

         <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

         <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"

+        eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"

+        upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"

+        upperBound="-1" eType="#//Classifier"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//DirectedRelationship">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"

+        upperBound="-1" eType="#//Relationship"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Classifier"/>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//Classifier"/>

   <eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">

     <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

@@ -3215,123 +2944,6 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Artifact/manifestation"/>

-    </eOperations>

-    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="clientDependency"/>

-        <details key="eType" value="org.eclipse.uml2.Dependency"/>

-        <details key="eOpposite" value="client"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="1"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Artifact/manifestation"/>

-    </eOperations>

-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="feature"/>

-        <details key="eType" value="org.eclipse.uml2.Feature"/>

-        <details key="eOpposite" value="featuringClassifier"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Artifact/ownedOperation"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Artifact/ownedOperation #//Artifact/ownedAttribute"/>

-    </eOperations>

-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="attribute"/>

-        <details key="eType" value="org.eclipse.uml2.Property"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Artifact/ownedAttribute"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"

-        eType="#//String" defaultValueLiteral=""/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"

-        upperBound="-1" eType="#//Artifact" containment="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"

-        upperBound="-1" eType="#//Manifestation" volatile="true" containment="true">

-      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"

-        eType="#//Operation" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

-        eType="#//Property" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">

-    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="supplier"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Manifestation/utilizedElement"/>

-    </eOperations>

-    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="target"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Manifestation/utilizedElement"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"

-        lowerBound="1" eType="#//PackageableElement" volatile="true">

-      <eAnnotations source="subsets" references="#//Dependency/supplier">

-        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

-        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">

     <eOperations name="getOwner" ordered="false" eType="#//Element">

       <eAnnotations source="feature">

@@ -3716,7 +3328,175 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"

         lowerBound="1" eType="#//ValueSpecification" containment="true"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="CollaborationOccurrence" eSuperTypes="#//NamedElement">

+  <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">

+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="attribute"/>

+        <details key="eType" value="org.eclipse.uml2.Property"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Interface/ownedAttribute"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Interface/ownedAttribute #//Interface/ownedOperation #//Interface/nestedClassifier #//Interface/ownedReception #//Interface/protocol"/>

+    </eOperations>

+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="feature"/>

+        <details key="eType" value="org.eclipse.uml2.Feature"/>

+        <details key="eOpposite" value="featuringClassifier"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Interface/ownedOperation #//Interface/ownedReception"/>

+    </eOperations>

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Interface/redefinedInterface"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

+        eType="#//Property" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"

+        eType="#//Operation" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedInterface" ordered="false"

+        upperBound="-1" eType="#//Interface">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedClassifier" upperBound="-1"

+        eType="#//Classifier" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedReception" ordered="false"

+        upperBound="-1" eType="#//Reception" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"

+        eType="#//ProtocolStateMachine" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Implementation" eSuperTypes="#//Realization">

+    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="supplier"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Implementation/contract"/>

+    </eOperations>

+    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="target"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Implementation/contract"/>

+    </eOperations>

+    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="client"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="clientDependency"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Implementation/implementingClassifier"/>

+    </eOperations>

+    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="source"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Implementation/implementingClassifier"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"

+        lowerBound="1" eType="#//Interface" volatile="true">

+      <eAnnotations source="subsets" references="#//Dependency/supplier">

+        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

+        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="implementingClassifier"

+        ordered="false" lowerBound="1" eType="#//BehavioredClassifier" volatile="true"

+        transient="true" eOpposite="#//BehavioredClassifier/implementation">

+      <eAnnotations source="subsets" references="#//Dependency/client">

+        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

+        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"

+        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" eType="#//ConnectableElement"

+        eOpposite="#//ConnectableElement/end"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"

+        eType="#//Property"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"

+      eSuperTypes="#//NamedElement #//ParameterableElement">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"

+        eType="#//ConnectorEnd" eOpposite="#//ConnectorEnd/role"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Connector/redefinedConnector"/>

+    </eOperations>

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -3728,34 +3508,610 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//CollaborationOccurrence/roleBinding"/>

+      <eAnnotations source="union" references="#//Connector/end"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"

-        eType="#//Collaboration"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"

-        upperBound="-1" eType="#//Dependency" containment="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"

+        upperBound="-1" eType="#//Connector">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"

+        eType="#//ConnectorEnd" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"

+        upperBound="-1" eType="#//Behavior"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"

+      eSuperTypes="#//Classifier">

+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="attribute"/>

+        <details key="eType" value="org.eclipse.uml2.Property"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute #//StructuredClassifier/ownedConnector"/>

+    </eOperations>

+    <eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="member"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StructuredClassifier/role"/>

+    </eOperations>

+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="feature"/>

+        <details key="eType" value="org.eclipse.uml2.Feature"/>

+        <details key="eOpposite" value="featuringClassifier"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StructuredClassifier/ownedConnector"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" ordered="false"

+        upperBound="-1" eType="#//Property" volatile="true" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>

+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"

+        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"

+        eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"

+        derived="true">

+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"

+        upperBound="-1" eType="#//Connector" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Artifact" eSuperTypes="#//Classifier #//DeployedArtifact">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Artifact/manifestation"/>

+    </eOperations>

+    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="clientDependency"/>

+        <details key="eType" value="org.eclipse.uml2.Dependency"/>

+        <details key="eOpposite" value="client"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="1"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Artifact/manifestation"/>

+    </eOperations>

+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="feature"/>

+        <details key="eType" value="org.eclipse.uml2.Feature"/>

+        <details key="eOpposite" value="featuringClassifier"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Artifact/ownedOperation"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Artifact/ownedOperation #//Artifact/ownedAttribute"/>

+    </eOperations>

+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="attribute"/>

+        <details key="eType" value="org.eclipse.uml2.Property"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Artifact/ownedAttribute"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fileName" ordered="false"

+        eType="#//String" defaultValueLiteral=""/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedArtifact" ordered="false"

+        upperBound="-1" eType="#//Artifact" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="manifestation" ordered="false"

+        upperBound="-1" eType="#//Manifestation" volatile="true" containment="true">

+      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedOperation" upperBound="-1"

+        eType="#//Operation" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

+        eType="#//Property" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Manifestation" eSuperTypes="#//Abstraction">

+    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="supplier"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Manifestation/utilizedElement"/>

+    </eOperations>

+    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="target"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Manifestation/utilizedElement"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="utilizedElement" ordered="false"

+        lowerBound="1" eType="#//PackageableElement" volatile="true">

+      <eAnnotations source="subsets" references="#//Dependency/supplier">

+        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

+        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Port/redefinedPort"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"

+        eType="#//Boolean" defaultValueLiteral="false"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"

+        eType="#//Boolean" defaultValueLiteral="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"

+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"

+        upperBound="-1" eType="#//Port">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"

+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"

+        eType="#//ProtocolStateMachine"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"

+      eSuperTypes="#//StructuredClassifier">

+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="feature"/>

+        <details key="eType" value="org.eclipse.uml2.Feature"/>

+        <details key="eOpposite" value="featuringClassifier"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"

+        upperBound="-1" eType="#//Port" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement">

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Variable/scope"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"

+        lowerBound="1" eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/variable">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">

+    <eOperations name="getActivity" ordered="false" eType="#//Activity">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="activity"/>

+        <details key="eType" value="org.eclipse.uml2.Activity"/>

+        <details key="eOpposite" value="structuredNode"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">

+        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>

+        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="setActivity" ordered="false">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="activity"/>

+        <details key="eType" value="org.eclipse.uml2.Activity"/>

+        <details key="eOpposite" value="structuredNode"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">

+        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>

+        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>

+      </eAnnotations>

+      <eParameters name="newActivity" eType="#//Activity"/>

+    </eOperations>

+    <eOperations name="getActivityGroup_activity" ordered="false" eType="#//Activity">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="activityGroup_activity"/>

+        <details key="eType" value="org.eclipse.uml2.Activity"/>

+        <details key="eOpposite" value="group"/>

+        <details key="eOpposite.containment" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>

+    </eOperations>

+    <eOperations name="setActivityGroup_activity" ordered="false">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="activityGroup_activity"/>

+        <details key="eType" value="org.eclipse.uml2.Activity"/>

+        <details key="eOpposite" value="group"/>

+        <details key="eOpposite.containment" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//StructuredActivityNode/setActivity"/>

+      <eParameters name="newActivityGroup_activity" eType="#//Activity"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StructuredActivityNode/variable"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"

+        upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

+        upperBound="-1" eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"

+        upperBound="-1" eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">

+        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"

+        eType="#//Boolean"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ConditionalNode/clause"/>

+    </eOperations>

+    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="output"/>

+        <details key="eType" value="org.eclipse.uml2.OutputPin"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ConditionalNode/result"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"

+        eType="#//OutputPin" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"

+        eType="#//ActivityNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"

+        eType="#//ActivityNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"

+        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"

+        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"

+        lowerBound="1" eType="#//OutputPin"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"

+        upperBound="-1" eType="#//OutputPin"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">

+    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="output"/>

+        <details key="eType" value="org.eclipse.uml2.OutputPin"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//LoopNode/result"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//LoopNode/loopVariable"/>

+    </eOperations>

+    <eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="input"/>

+        <details key="eType" value="org.eclipse.uml2.InputPin"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"

+        upperBound="-1" eType="#//ActivityNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"

+        upperBound="-1" eType="#//ActivityNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"

+        lowerBound="1" eType="#//OutputPin"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"

+        eType="#//ActivityNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"

+        eType="#//OutputPin" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"

+        eType="#//OutputPin" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"

+        upperBound="-1" eType="#//OutputPin"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"

+        eType="#//InputPin" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Action#getInputs" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">

+    <eLiterals name="sequential"/>

+    <eLiterals name="guarded" value="1"/>

+    <eLiterals name="concurrent" value="2"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="CallTrigger" eSuperTypes="#//MessageTrigger">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"

+        lowerBound="1" eType="#//Operation"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger"/>

+  <eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"

+        lowerBound="1" eType="#//ValueSpecification" containment="true">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Collaboration" eSuperTypes="#//BehavioredClassifier #//StructuredClassifier">

-    <eOperations name="getRoles" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true" eSuperTypes="#//PackageableElement">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"

+        eType="#//Port"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"

+        eType="#//Signal"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//BehavioredClassifier">

+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

         <details key="containment" value="false"/>

-        <details key="name" value="role"/>

-        <details key="eType" value="org.eclipse.uml2.ConnectableElement"/>

+        <details key="name" value="attribute"/>

+        <details key="eType" value="org.eclipse.uml2.Property"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Collaboration/collaborationRole"/>

+      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"

-        upperBound="-1" eType="#//ConnectableElement">

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

+        eType="#//Property" containment="true">

       <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>

+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="SignalTrigger" eSuperTypes="#//MessageTrigger">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"

+        upperBound="-1" eType="#//Signal"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//TimeTrigger/when"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"

+        eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"

+        eType="#//ValueSpecification" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="AnyTrigger" eSuperTypes="#//MessageTrigger"/>

   <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="The point is that the InteractionConstraint &quot;received&quot; from StructuralArchitecture will consist of a set of such units described by sequence diagrams (or collaboration diagrams)."/>

@@ -4030,402 +4386,6 @@
     </eStructuralFeatures>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//EventOccurrence"/>

-  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Port/redefinedPort"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"

-        eType="#//Boolean" defaultValueLiteral="false"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"

-        eType="#//Boolean" defaultValueLiteral="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"

-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"

-        upperBound="-1" eType="#//Port">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"

-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"

-        eType="#//ProtocolStateMachine"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"

-      eSuperTypes="#//StructuredClassifier">

-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="feature"/>

-        <details key="eType" value="org.eclipse.uml2.Feature"/>

-        <details key="eOpposite" value="featuringClassifier"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"

-        upperBound="-1" eType="#//Port" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">

-    <eLiterals name="sequential"/>

-    <eLiterals name="guarded" value="1"/>

-    <eLiterals name="concurrent" value="2"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="CallTrigger" eSuperTypes="#//MessageTrigger">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"

-        lowerBound="1" eType="#//Operation"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger"/>

-  <eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"

-        lowerBound="1" eType="#//ValueSpecification" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true" eSuperTypes="#//PackageableElement">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"

-        eType="#//Port"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"

-        eType="#//Signal"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//BehavioredClassifier">

-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="attribute"/>

-        <details key="eType" value="org.eclipse.uml2.Property"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"

-        eType="#//Property" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="SignalTrigger" eSuperTypes="#//MessageTrigger">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"

-        upperBound="-1" eType="#//Signal"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//TimeTrigger/when"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"

-        eType="#//ValueSpecification" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="AnyTrigger" eSuperTypes="#//MessageTrigger"/>

-  <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement">

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Variable/scope"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"

-        lowerBound="1" eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/variable">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">

-    <eOperations name="getActivity" ordered="false" eType="#//Activity">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="activity"/>

-        <details key="eType" value="org.eclipse.uml2.Activity"/>

-        <details key="eOpposite" value="structuredNode"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">

-        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>

-        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="setActivity" ordered="false">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="activity"/>

-        <details key="eType" value="org.eclipse.uml2.Activity"/>

-        <details key="eOpposite" value="structuredNode"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">

-        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>

-        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>

-      </eAnnotations>

-      <eParameters name="newActivity" eType="#//Activity"/>

-    </eOperations>

-    <eOperations name="getActivityGroup_activity" ordered="false" eType="#//Activity">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="activityGroup_activity"/>

-        <details key="eType" value="org.eclipse.uml2.Activity"/>

-        <details key="eOpposite" value="group"/>

-        <details key="eOpposite.containment" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>

-    </eOperations>

-    <eOperations name="setActivityGroup_activity" ordered="false">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="activityGroup_activity"/>

-        <details key="eType" value="org.eclipse.uml2.Activity"/>

-        <details key="eOpposite" value="group"/>

-        <details key="eOpposite.containment" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//StructuredActivityNode/setActivity"/>

-      <eParameters name="newActivityGroup_activity" eType="#//Activity"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StructuredActivityNode/variable"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"

-        upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

-        upperBound="-1" eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"

-        upperBound="-1" eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">

-        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"

-        eType="#//Boolean"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ConditionalNode/clause"/>

-    </eOperations>

-    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="output"/>

-        <details key="eType" value="org.eclipse.uml2.OutputPin"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ConditionalNode/result"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"

-        eType="#//OutputPin" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"

-        eType="#//ActivityNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"

-        eType="#//ActivityNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"

-        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"

-        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"

-        lowerBound="1" eType="#//OutputPin"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"

-        upperBound="-1" eType="#//OutputPin"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">

-    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="output"/>

-        <details key="eType" value="org.eclipse.uml2.OutputPin"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//LoopNode/result"/>

-    </eOperations>

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//LoopNode/loopVariable"/>

-    </eOperations>

-    <eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="input"/>

-        <details key="eType" value="org.eclipse.uml2.InputPin"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"

-        eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"

-        upperBound="-1" eType="#//ActivityNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"

-        upperBound="-1" eType="#//ActivityNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"

-        lowerBound="1" eType="#//OutputPin"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"

-        eType="#//ActivityNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"

-        eType="#//OutputPin" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"

-        eType="#//OutputPin" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"

-        upperBound="-1" eType="#//OutputPin"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"

-        eType="#//InputPin" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Action#getInputs" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

@@ -4743,13 +4703,30 @@
       <eAnnotations source="superset" references="#//TemplateParameterSubstitution/ownedActual"/>

     </eStructuralFeatures>

     <eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"

-        upperBound="-1" eType="#//ParameterableElement" volatile="true" containment="true">

+        eType="#//ParameterableElement" volatile="true" containment="true">

       <eAnnotations source="subsets" references="#//TemplateParameterSubstitution/actual">

         <details key="org.eclipse.uml2.TemplateParameterSubstitution#getActuals" value=""/>

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Collaboration" eSuperTypes="#//BehavioredClassifier #//StructuredClassifier">

+    <eOperations name="getRoles" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="role"/>

+        <details key="eType" value="org.eclipse.uml2.ConnectableElement"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Collaboration/collaborationRole"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="collaborationRole" ordered="false"

+        upperBound="-1" eType="#//ConnectableElement">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="OperationTemplateParameter" eSuperTypes="#//TemplateParameter"/>

   <eClassifiers xsi:type="ecore:EClass" name="ClassifierTemplateParameter" eSuperTypes="#//TemplateParameter">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"

@@ -4762,87 +4739,7 @@
       eSuperTypes="#//Classifier"/>

   <eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"

       eSuperTypes="#//TemplateParameter"/>

-  <eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//StateMachine/extendedStateMachine"/>

-    </eOperations>

-    <eOperations name="getRedefinitionContexts" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinitionContext"/>

-        <details key="eType" value="org.eclipse.uml2.Classifier"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//StateMachine/stateMachine_redefinitionContext"/>

-    </eOperations>

-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedMember"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="namespace"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//StateMachine/region #//StateMachine/connectionPoint"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Region" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"

-        upperBound="-1" eType="#//Pseudostate" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" ordered="false"

-        eType="#//StateMachine">

-      <eAnnotations source="redefines">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine_redefinitionContext"

-        ordered="false" eType="#//BehavioredClassifier" volatile="true" transient="true"

-        eOpposite="#//BehavioredClassifier/ownedStateMachine">

-      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

-            value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//RedefinableElement">

-    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinitionContext"/>

-        <details key="eType" value="org.eclipse.uml2.Classifier"/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

-            value=""/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//Region/extendedRegion"/>

-    </eOperations>

+  <eClassifiers xsi:type="ecore:EClass" name="CollaborationOccurrence" eSuperTypes="#//NamedElement">

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -4854,315 +4751,16 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Region/subvertex #//Region/transition"/>

+      <eAnnotations source="union" references="#//CollaborationOccurrence/roleBinding"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"

-        upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"

+        eType="#//Collaboration"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="roleBinding" ordered="false"

+        upperBound="-1" eType="#//Dependency" containment="true">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"

-        upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" ordered="false"

-        eType="#//Region">

-      <eAnnotations source="redefines">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//PseudostateKind"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//RedefinableElement #//Vertex">

-    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinitionContext"/>

-        <details key="eType" value="org.eclipse.uml2.Classifier"/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

-            value=""/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//State/redefinedState"/>

-    </eOperations>

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//State/connection #//State/entry #//State/exit #//State/doActivity #//State/stateInvariant"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"

-        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"

-        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"

-        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"

-        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"

-        eType="#//StateMachine"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"

-        upperBound="-1" eType="#//ConnectionPointReference" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" ordered="false"

-        eType="#//State">

-      <eAnnotations source="redefines">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"

-        upperBound="-1" eType="#//Trigger"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"

-        upperBound="-1" eType="#//Region" containment="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"

-        eType="#//Activity" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Activity"

-        containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"

-        eType="#//Activity" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"

-        eType="#//Constraint" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//Vertex/container"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"

-        eType="#//Region" transient="true" eOpposite="#//Region/subvertex">

-      <eAnnotations source="redefines" references="#//Element/owner">

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"

-        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/source"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"

-        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"

-        upperBound="-1" eType="#//Pseudostate"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"

-        eType="#//Pseudostate"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//RedefinableElement">

-    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinitionContext"/>

-        <details key="eType" value="org.eclipse.uml2.Classifier"/>

-      </eAnnotations>

-      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

-            value=""/>

-      </eAnnotations>

-    </eOperations>

-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="redefinedElement"/>

-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//Transition/redefinedTransition"/>

-    </eOperations>

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Transition/container"/>

-    </eOperations>

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Transition/guard #//Transition/effect"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//TransitionKind"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"

-        lowerBound="1" eType="#//Region" transient="true" eOpposite="#//Region/transition">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"

-        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoing"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"

-        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incoming"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"

-        eType="#//Transition">

-      <eAnnotations source="redefines">

-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"

-        upperBound="-1" eType="#//Trigger"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"

-        eType="#//Constraint" volatile="true" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" ordered="false"

-        eType="#//Activity" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">

-    <eLiterals name="internal"/>

-    <eLiterals name="local" value="1"/>

-    <eLiterals name="external" value="2"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">

-    <eLiterals name="initial"/>

-    <eLiterals name="deepHistory" value="1"/>

-    <eLiterals name="shallowHistory" value="2"/>

-    <eLiterals name="join" value="3"/>

-    <eLiterals name="fork" value="4"/>

-    <eLiterals name="junction" value="5"/>

-    <eLiterals name="choice" value="6"/>

-    <eLiterals name="entryPoint" value="7"/>

-    <eLiterals name="exitPoint" value="8"/>

-    <eLiterals name="terminate" value="9"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>

-  <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode"/>

-  <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//JoinNode/joinSpec"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"

-        eType="#//Boolean" defaultValueLiteral="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"

-        lowerBound="1" eType="#//ValueSpecification" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>

-  <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>

-  <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">

-    <eOperations name="getSuperGroup" ordered="false" eType="#//ActivityGroup">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="superGroup"/>

-        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>

-        <details key="eOpposite" value="subgroup"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ActivityPartition/superPartition"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"

-        eType="#//Boolean" defaultValueLiteral="false"/>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"

-        eType="#//Boolean" defaultValueLiteral="false"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"

-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">

-        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

-        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"

-        upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getSubgroups">

-        <details key="org.eclipse.uml2.ActivityGroup#getSubgroups" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"

-        eType="#//ActivityPartition" transient="true" eOpposite="#//ActivityPartition/subgroup">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.ActivityGroup#getSuperGroup" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"

-        eType="#//Element"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">

     <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -5629,6 +5227,453 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"

         lowerBound="1" eType="#//Behavior"/>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//StateMachine/extendedStateMachine"/>

+    </eOperations>

+    <eOperations name="getRedefinitionContexts" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinitionContext"/>

+        <details key="eType" value="org.eclipse.uml2.Classifier"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//StateMachine/stateMachine_redefinitionContext"/>

+    </eOperations>

+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedMember"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="namespace"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//StateMachine/region #//StateMachine/connectionPoint"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Region" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPoint" ordered="false"

+        upperBound="-1" eType="#//Pseudostate" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="extendedStateMachine" ordered="false"

+        eType="#//StateMachine">

+      <eAnnotations source="redefines">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="stateMachine_redefinitionContext"

+        ordered="false" eType="#//BehavioredClassifier" volatile="true" transient="true"

+        eOpposite="#//BehavioredClassifier/ownedStateMachine">

+      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

+            value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="#//RedefinableElement">

+    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinitionContext"/>

+        <details key="eType" value="org.eclipse.uml2.Classifier"/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

+            value=""/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//Region/extendedRegion"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Region/subvertex #//Region/transition"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="subvertex" ordered="false"

+        upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/container">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="transition" ordered="false"

+        upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/container">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="extendedRegion" ordered="false"

+        eType="#//Region">

+      <eAnnotations source="redefines">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//PseudostateKind"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//RedefinableElement #//Vertex">

+    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinitionContext"/>

+        <details key="eType" value="org.eclipse.uml2.Classifier"/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

+            value=""/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//State/redefinedState"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//State/connection #//State/entry #//State/exit #//State/doActivity #//State/stateInvariant"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isComposite" ordered="false"

+        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrthogonal" ordered="false"

+        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSimple" ordered="false"

+        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubmachineState" ordered="false"

+        eType="#//Boolean" changeable="false" volatile="true" transient="true" derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="submachine" ordered="false"

+        eType="#//StateMachine"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="connection" ordered="false"

+        upperBound="-1" eType="#//ConnectionPointReference" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedState" ordered="false"

+        eType="#//State">

+      <eAnnotations source="redefines">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="deferrableTrigger" ordered="false"

+        upperBound="-1" eType="#//Trigger"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="region" ordered="false"

+        upperBound="-1" eType="#//Region" containment="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"

+        eType="#//Activity" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" eType="#//Activity"

+        containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="doActivity" ordered="false"

+        eType="#//Activity" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="stateInvariant" ordered="false"

+        eType="#//Constraint" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="#//NamedElement">

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//Vertex/container"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"

+        eType="#//Region" transient="true" eOpposite="#//Region/subvertex">

+      <eAnnotations source="redefines" references="#//Element/owner">

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"

+        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/source"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"

+        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"

+        upperBound="-1" eType="#//Pseudostate"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="exit" ordered="false" upperBound="-1"

+        eType="#//Pseudostate"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//RedefinableElement">

+    <eOperations name="getRedefinitionContexts" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinitionContext"/>

+        <details key="eType" value="org.eclipse.uml2.Classifier"/>

+      </eAnnotations>

+      <eAnnotations source="redefines" references="#//RedefinableElement/redefinitionContext">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinitionContexts"

+            value=""/>

+      </eAnnotations>

+    </eOperations>

+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="redefinedElement"/>

+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//Transition/redefinedTransition"/>

+    </eOperations>

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Transition/container"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Transition/guard #//Transition/effect"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//TransitionKind"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="container" ordered="false"

+        lowerBound="1" eType="#//Region" transient="true" eOpposite="#//Region/transition">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"

+        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoing"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"

+        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incoming"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedTransition" ordered="false"

+        eType="#//Transition">

+      <eAnnotations source="redefines">

+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" ordered="false"

+        upperBound="-1" eType="#//Trigger"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"

+        eType="#//Constraint" volatile="true" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" ordered="false"

+        eType="#//Activity" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="TransitionKind">

+    <eLiterals name="internal"/>

+    <eLiterals name="local" value="1"/>

+    <eLiterals name="external" value="2"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="PseudostateKind">

+    <eLiterals name="initial"/>

+    <eLiterals name="deepHistory" value="1"/>

+    <eLiterals name="shallowHistory" value="2"/>

+    <eLiterals name="join" value="3"/>

+    <eLiterals name="fork" value="4"/>

+    <eLiterals name="junction" value="5"/>

+    <eLiterals name="choice" value="6"/>

+    <eLiterals name="entryPoint" value="7"/>

+    <eLiterals name="exitPoint" value="8"/>

+    <eLiterals name="terminate" value="9"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>

+  <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode"/>

+  <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//JoinNode/joinSpec"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"

+        eType="#//Boolean" defaultValueLiteral="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"

+        lowerBound="1" eType="#//ValueSpecification" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>

+  <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>

+  <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">

+    <eOperations name="getSuperGroup" ordered="false" eType="#//ActivityGroup">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="superGroup"/>

+        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>

+        <details key="eOpposite" value="subgroup"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ActivityPartition/superPartition"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"

+        eType="#//Boolean" defaultValueLiteral="false"/>

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"

+        eType="#//Boolean" defaultValueLiteral="false"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"

+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">

+        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

+        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"

+        upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getSubgroups">

+        <details key="org.eclipse.uml2.ActivityGroup#getSubgroups" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"

+        eType="#//ActivityPartition" transient="true" eOpposite="#//ActivityPartition/subgroup">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.ActivityGroup#getSuperGroup" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"

+        eType="#//Element"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"

+        eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"

+        eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" eType="#//ExpansionKind"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"

+        upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">

+    <eLiterals name="parallel"/>

+    <eLiterals name="iterative" value="1"/>

+    <eLiterals name="stream" value="2"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ExceptionHandler/protectedNode"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"

+        lowerBound="1" eType="#//ExecutableNode" transient="true" eOpposite="#//ExecutableNode/handler">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"

+        lowerBound="1" eType="#//ExecutableNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"

+        lowerBound="1" eType="#//ObjectNode"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Classifier"/>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="InteractionOccurrence" eSuperTypes="#//InteractionFragment">

     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">

       <details key="documentation" value="A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)"/>

@@ -5770,214 +5815,6 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"

         eType="#//Boolean" defaultValueLiteral="True"/>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"

-        eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/outputElement"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsInput" ordered="false"

-        eType="#//ExpansionRegion" eOpposite="#//ExpansionRegion/inputElement"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" eType="#//ExpansionKind"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="outputElement" ordered="false"

-        upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsOutput"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="inputElement" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//ExpansionNode" eOpposite="#//ExpansionNode/regionAsInput"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="ExpansionKind">

-    <eLiterals name="parallel"/>

-    <eLiterals name="iterative" value="1"/>

-    <eLiterals name="stream" value="2"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ExceptionHandler/protectedNode"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="protectedNode" ordered="false"

-        lowerBound="1" eType="#//ExecutableNode" transient="true" eOpposite="#//ExecutableNode/handler">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"

-        lowerBound="1" eType="#//ExecutableNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionInput" ordered="false"

-        lowerBound="1" eType="#//ObjectNode"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="exceptionType" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Classifier"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">

-    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="source"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>

-    </eOperations>

-    <eOperations name="getOwner" ordered="false" eType="#//Element">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="owner"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="ownedElement"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>

-    </eOperations>

-    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="target"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ProtocolConformance/generalMachine"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"

-        lowerBound="1" eType="#//ProtocolStateMachine" transient="true" eOpposite="#//ProtocolStateMachine/conformance">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" ordered="false"

-        lowerBound="1" eType="#//ProtocolStateMachine">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ProtocolStateMachine/conformance"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"

-        upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ProtocolTransition/postCondition"/>

-    </eOperations>

-    <eOperations name="setGuard" ordered="false">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="true"/>

-        <details key="name" value="guard"/>

-        <details key="eType" value="org.eclipse.uml2.Constraint"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//ProtocolTransition/preCondition"/>

-      <eParameters name="newGuard" eType="#//Constraint"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"

-        eType="#//Constraint" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"

-        upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" ordered="false"

-        eType="#//Constraint" volatile="true" resolveProxies="false">

-      <eAnnotations source="subsets" references="#//Transition/guard">

-        <details key="org.eclipse.uml2.Transition#getGuard" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//Component/realization"/>

-    </eOperations>

-    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="clientDependency"/>

-        <details key="eType" value="org.eclipse.uml2.Dependency"/>

-        <details key="eOpposite" value="client"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="1"/>

-      </eAnnotations>

-      <eAnnotations source="superset" references="#//Component/realization"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"

-        ordered="false" eType="#//Boolean"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"

-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"

-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

-        derived="true"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"

-        upperBound="-1" eType="#//Realization" volatile="true" containment="true"

-        eOpposite="#//Realization/abstraction">

-      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"

-        upperBound="-1" eType="#//PackageableElement" containment="true">

-      <eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">

-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">

-    <eLiterals name="assembly"/>

-    <eLiterals name="delegation" value="1"/>

-  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="#//ValueSpecification">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" ordered="false"

         eType="#//Boolean" defaultValueLiteral="True"/>

@@ -6187,6 +6024,191 @@
       <eParameters name="newSpecification" eType="#//ValueSpecification"/>

     </eOperations>

   </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">

+    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="supplier"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Deployment/deployedArtifact"/>

+    </eOperations>

+    <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="target"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Deployment/deployedArtifact"/>

+    </eOperations>

+    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="containment" value="false"/>

+        <details key="name" value="source"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Deployment/location"/>

+    </eOperations>

+    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="client"/>

+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="eOpposite" value="clientDependency"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//Deployment/location"/>

+    </eOperations>

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Deployment/configuration"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"

+        upperBound="-1" eType="#//DeployedArtifact" volatile="true">

+      <eAnnotations source="subsets" references="#//Dependency/supplier">

+        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

+        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="location" ordered="false"

+        lowerBound="1" eType="#//DeploymentTarget" volatile="true" transient="true"

+        eOpposite="#//DeploymentTarget/deployment">

+      <eAnnotations source="subsets" references="#//Dependency/client">

+        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

+        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"

+        upperBound="-1" eType="#//DeploymentSpecification" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement"/>

+  <eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//DeploymentTarget/deployment"/>

+    </eOperations>

+    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="clientDependency"/>

+        <details key="eType" value="org.eclipse.uml2.Dependency"/>

+        <details key="eOpposite" value="client"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="1"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//DeploymentTarget/deployment"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"

+        upperBound="-1" eType="#//Deployment" volatile="true" containment="true" eOpposite="#//Deployment/location">

+      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"

+        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"

+        transient="true" derived="true"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">

+    <eOperations name="getNestedClassifiers" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="true"/>

+        <details key="name" value="nestedClassifier"/>

+        <details key="eType" value="org.eclipse.uml2.Classifier"/>

+      </eAnnotations>

+      <eAnnotations source="redefined" references="#//Node/nestedNode"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"

+        upperBound="-1" eType="#//Node" containment="true">

+      <eAnnotations source="redefines" references="#//Class/nestedClassifier">

+        <details key="org.eclipse.uml2.Class#getNestedClassifiers" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node"/>

+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node"/>

+  <eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association"/>

+  <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode"/>

+  <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">

+    <eLiterals name="create"/>

+    <eLiterals name="read" value="1"/>

+    <eLiterals name="update" value="2"/>

+    <eLiterals name="delete" value="3"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"

+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

+        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">

+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">

+    <eLiterals name="unordered"/>

+    <eLiterals name="ordered" value="1"/>

+    <eLiterals name="LIFO" value="2"/>

+    <eLiterals name="FIFO" value="3"/>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ParameterSet/condition"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"

+        lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"

+        upperBound="-1" eType="#//Constraint" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">

     <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

@@ -6480,16 +6502,29 @@
       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">

-    <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"

+  <eClassifiers xsi:type="ecore:EClass" name="ProtocolConformance" eSuperTypes="#//DirectedRelationship">

+    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

-        <details key="derived" value="false"/>

+        <details key="derived" value="true"/>

         <details key="containment" value="false"/>

-        <details key="name" value="supplier"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

+        <details key="name" value="source"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

       </eAnnotations>

-      <eAnnotations source="superset" references="#//Deployment/deployedArtifact"/>

+      <eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>

+    </eOperations>

+    <eOperations name="getOwner" ordered="false" eType="#//Element">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="-1"/>

+        <details key="name" value="owner"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="ownedElement"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//ProtocolConformance/specificMachine"/>

     </eOperations>

     <eOperations name="getTargets" ordered="false" lowerBound="1" upperBound="-1"

         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

@@ -6499,32 +6534,23 @@
         <details key="name" value="target"/>

         <details key="eType" value="org.eclipse.uml2.Element"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Deployment/deployedArtifact"/>

+      <eAnnotations source="union" references="#//ProtocolConformance/generalMachine"/>

     </eOperations>

-    <eOperations name="getSources" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="containment" value="false"/>

-        <details key="name" value="source"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="specificMachine" ordered="false"

+        lowerBound="1" eType="#//ProtocolStateMachine" transient="true" eOpposite="#//ProtocolStateMachine/conformance">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Deployment/location"/>

-    </eOperations>

-    <eOperations name="getClients" ordered="false" lowerBound="1" upperBound="-1"

-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="eOpposite.upperBound" value="-1"/>

-        <details key="name" value="client"/>

-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>

-        <details key="eOpposite" value="clientDependency"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="generalMachine" ordered="false"

+        lowerBound="1" eType="#//ProtocolStateMachine">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

       </eAnnotations>

-      <eAnnotations source="superset" references="#//Deployment/location"/>

-    </eOperations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="ProtocolStateMachine" eSuperTypes="#//StateMachine">

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -6536,32 +6562,16 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//Deployment/configuration"/>

+      <eAnnotations source="union" references="#//ProtocolStateMachine/conformance"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="deployedArtifact" ordered="false"

-        upperBound="-1" eType="#//DeployedArtifact" volatile="true">

-      <eAnnotations source="subsets" references="#//Dependency/supplier">

-        <details key="org.eclipse.uml2.Dependency#getSuppliers" value=""/>

-        <details key="org.eclipse.uml2.DirectedRelationship#getTargets" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="location" ordered="false"

-        lowerBound="1" eType="#//DeploymentTarget" volatile="true" transient="true"

-        eOpposite="#//DeploymentTarget/deployment">

-      <eAnnotations source="subsets" references="#//Dependency/client">

-        <details key="org.eclipse.uml2.DirectedRelationship#getSources" value=""/>

-        <details key="org.eclipse.uml2.Dependency#getClients" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"

-        upperBound="-1" eType="#//DeploymentSpecification" containment="true">

+    <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"

+        upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">

       <eAnnotations source="subsets">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="DeployedArtifact" abstract="true" eSuperTypes="#//NamedElement"/>

-  <eClassifiers xsi:type="ecore:EClass" name="DeploymentTarget" abstract="true" eSuperTypes="#//NamedElement">

+  <eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">

     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

         <details key="derived" value="true"/>

@@ -6573,7 +6583,47 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="0"/>

       </eAnnotations>

-      <eAnnotations source="union" references="#//DeploymentTarget/deployment"/>

+      <eAnnotations source="union" references="#//ProtocolTransition/postCondition"/>

+    </eOperations>

+    <eOperations name="setGuard" ordered="false">

+      <eAnnotations source="feature">

+        <details key="derived" value="false"/>

+        <details key="containment" value="true"/>

+        <details key="name" value="guard"/>

+        <details key="eType" value="org.eclipse.uml2.Constraint"/>

+      </eAnnotations>

+      <eAnnotations source="superset" references="#//ProtocolTransition/preCondition"/>

+      <eParameters name="newGuard" eType="#//Constraint"/>

+    </eOperations>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"

+        eType="#//Constraint" containment="true">

+      <eAnnotations source="subsets">

+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="referred" ordered="false"

+        upperBound="-1" eType="#//Operation" changeable="false" volatile="true" transient="true"

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="preCondition" ordered="false"

+        eType="#//Constraint" volatile="true" resolveProxies="false">

+      <eAnnotations source="subsets" references="#//Transition/guard">

+        <details key="org.eclipse.uml2.Transition#getGuard" value=""/>

+      </eAnnotations>

+    </eStructuralFeatures>

+  </eClassifiers>

+  <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">

+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

+      <eAnnotations source="feature">

+        <details key="derived" value="true"/>

+        <details key="eOpposite.upperBound" value="1"/>

+        <details key="name" value="ownedElement"/>

+        <details key="eType" value="org.eclipse.uml2.Element"/>

+        <details key="eOpposite" value="owner"/>

+        <details key="eOpposite.containment" value="false"/>

+        <details key="containment" value="false"/>

+        <details key="eOpposite.lowerBound" value="0"/>

+      </eAnnotations>

+      <eAnnotations source="union" references="#//Component/realization"/>

     </eOperations>

     <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

       <eAnnotations source="feature">

@@ -6586,84 +6636,34 @@
         <details key="containment" value="false"/>

         <details key="eOpposite.lowerBound" value="1"/>

       </eAnnotations>

-      <eAnnotations source="superset" references="#//DeploymentTarget/deployment"/>

+      <eAnnotations source="superset" references="#//Component/realization"/>

     </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="deployment" ordered="false"

-        upperBound="-1" eType="#//Deployment" volatile="true" containment="true" eOpposite="#//Deployment/location">

+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"

+        ordered="false" eType="#//Boolean"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"

+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"

+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"

+        derived="true"/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"

+        upperBound="-1" eType="#//Realization" volatile="true" containment="true"

+        eOpposite="#//Realization/abstraction">

       <eAnnotations source="subsets" references="#//NamedElement/clientDependency">

         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

         <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="deployedElement" ordered="false"

-        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"

-        transient="true" derived="true"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">

-    <eOperations name="getNestedClassifiers" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="false"/>

-        <details key="containment" value="true"/>

-        <details key="name" value="nestedClassifier"/>

-        <details key="eType" value="org.eclipse.uml2.Classifier"/>

-      </eAnnotations>

-      <eAnnotations source="redefined" references="#//Node/nestedNode"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"

-        upperBound="-1" eType="#//Node" containment="true">

-      <eAnnotations source="redefines" references="#//Class/nestedClassifier">

-        <details key="org.eclipse.uml2.Class#getNestedClassifiers" value=""/>

+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"

+        upperBound="-1" eType="#//PackageableElement" containment="true">

+      <eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">

+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>

       </eAnnotations>

     </eStructuralFeatures>

   </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node"/>

-  <eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node"/>

-  <eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association"/>

-  <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode"/>

-  <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">

-    <eLiterals name="create"/>

-    <eLiterals name="read" value="1"/>

-    <eLiterals name="update" value="2"/>

-    <eLiterals name="delete" value="3"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">

-    <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"

-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"

-        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">

-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">

-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">

-    <eLiterals name="unordered"/>

-    <eLiterals name="ordered" value="1"/>

-    <eLiterals name="LIFO" value="2"/>

-    <eLiterals name="FIFO" value="3"/>

-  </eClassifiers>

-  <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">

-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">

-      <eAnnotations source="feature">

-        <details key="derived" value="true"/>

-        <details key="eOpposite.upperBound" value="1"/>

-        <details key="name" value="ownedElement"/>

-        <details key="eType" value="org.eclipse.uml2.Element"/>

-        <details key="eOpposite" value="owner"/>

-        <details key="eOpposite.containment" value="false"/>

-        <details key="containment" value="false"/>

-        <details key="eOpposite.lowerBound" value="0"/>

-      </eAnnotations>

-      <eAnnotations source="union" references="#//ParameterSet/condition"/>

-    </eOperations>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"

-        lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>

-    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"

-        upperBound="-1" eType="#//Constraint" containment="true">

-      <eAnnotations source="subsets">

-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>

-      </eAnnotations>

-    </eStructuralFeatures>

+  <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">

+    <eLiterals name="assembly"/>

+    <eLiterals name="delegation" value="1"/>

   </eClassifiers>

   <eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">

     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"

diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel b/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
index 3d2251c..48069d4 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
@@ -7,9 +7,9 @@
     runtimeJar="true" modelName="UML2" modelPluginClass="org.eclipse.uml2.UML2Plugin"

     editPluginClass="org.eclipse.uml2.provider.UML2EditPlugin" editorPluginClass="org.eclipse.uml2.presentation.UML2EditorPlugin"

     nonNLSMarkers="true" usedGenPackages="../../org.eclipse.emf.ecore_2.0.0/src/model/Ecore.genmodel#//ecore">

-  <foreignModel>C:\eclipse\uml2-workspace\org.eclipse.uml2\model\UML2.mdl</foreignModel>

+  <foreignModel>UML2.mdl</foreignModel>

   <foreignModel>VABASE_PLUGINS_PATH</foreignModel>

-  <foreignModel>C:\eclipse\uml2-workspace</foreignModel>

+  <foreignModel>../..</foreignModel>

   <genPackages prefix="UML2" basePackage="org.eclipse" resource="XMI" ecorePackage="UML2.ecore#/">

     <genEnums ecoreEnum="UML2.ecore#//VisibilityKind">

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//VisibilityKind/public"/>

@@ -28,6 +28,11 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//AggregationKind/shared"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//AggregationKind/composite"/>

     </genEnums>

+    <genEnums ecoreEnum="UML2.ecore#//CallConcurrencyKind">

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/sequential"/>

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/guarded"/>

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/concurrent"/>

+    </genEnums>

     <genEnums ecoreEnum="UML2.ecore#//MessageKind">

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//MessageKind/complete"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//MessageKind/lost"/>

@@ -40,11 +45,6 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//MessageSort/asynchCall"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//MessageSort/asynchSignal"/>

     </genEnums>

-    <genEnums ecoreEnum="UML2.ecore#//CallConcurrencyKind">

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/sequential"/>

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/guarded"/>

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/concurrent"/>

-    </genEnums>

     <genEnums ecoreEnum="UML2.ecore#//TransitionKind">

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//TransitionKind/internal"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//TransitionKind/local"/>

@@ -62,6 +62,11 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//PseudostateKind/exitPoint"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//PseudostateKind/terminate"/>

     </genEnums>

+    <genEnums ecoreEnum="UML2.ecore#//ExpansionKind">

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/parallel"/>

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/iterative"/>

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/stream"/>

+    </genEnums>

     <genEnums ecoreEnum="UML2.ecore#//InteractionOperator">

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/seq"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/alt"/>

@@ -76,15 +81,6 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/ignore"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/consider"/>

     </genEnums>

-    <genEnums ecoreEnum="UML2.ecore#//ExpansionKind">

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/parallel"/>

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/iterative"/>

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/stream"/>

-    </genEnums>

-    <genEnums ecoreEnum="UML2.ecore#//ConnectorKind">

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/assembly"/>

-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/delegation"/>

-    </genEnums>

     <genEnums ecoreEnum="UML2.ecore#//ParameterEffectKind">

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ParameterEffectKind/create"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ParameterEffectKind/read"/>

@@ -97,6 +93,10 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ObjectNodeOrderingKind/LIFO"/>

       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ObjectNodeOrderingKind/FIFO"/>

     </genEnums>

+    <genEnums ecoreEnum="UML2.ecore#//ConnectorKind">

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/assembly"/>

+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/delegation"/>

+    </genEnums>

     <genDataTypes ecoreDataType="UML2.ecore#//Integer"/>

     <genDataTypes ecoreDataType="UML2.ecore#//Boolean"/>

     <genDataTypes ecoreDataType="UML2.ecore#//String"/>

@@ -137,62 +137,6 @@
       <genOperations ecoreOperation="UML2.ecore#//MultiplicityElement/upper"/>

       <genOperations ecoreOperation="UML2.ecore#//MultiplicityElement/getOwnedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//NamedElement">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/name"/>

-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/qualifiedName.1"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/visibility"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/clientDependency"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/nameExpression"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateNoName"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateQualifiedName"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/allNamespaces"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/isDistinguishableFrom">

-        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/n"/>

-        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/ns"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/separator"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/qualifiedName"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateVisibilityNeedsOwnership"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getNamespace"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwner"/>

-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Namespace">

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/member"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/ownedRule"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/importedMember.1"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/elementImport"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/packageImport"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateMembersAreDistinguishable"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getNamesOfMember">

-        <genParameters ecoreParameter="UML2.ecore#//Namespace/getNamesOfMember/element"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/membersAreDistinguishable"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateImportedMemberDerived"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/importedMember"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/importMembers">

-        <genParameters ecoreParameter="UML2.ecore#//Namespace/importMembers/imps"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/excludeCollisions">

-        <genParameters ecoreParameter="UML2.ecore#//Namespace/excludeCollisions/imps"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedMembers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Comment">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Comment/body"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Comment/annotatedElement"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Comment/bodyExpression"/>

-      <genOperations ecoreOperation="UML2.ecore#//Comment/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//DirectedRelationship">

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/source"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/target"/>

-      <genOperations ecoreOperation="UML2.ecore#//DirectedRelationship/getRelatedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Relationship">

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Relationship/relatedElement"/>

-    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//OpaqueExpression">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//OpaqueExpression/body"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//OpaqueExpression/language"/>

@@ -215,8 +159,8 @@
     <genClasses ecoreClass="UML2.ecore#//Class">

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Class/ownedOperation"/>

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Class/superClass"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Class/extension"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Class/nestedClassifier"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Class/extension"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Class/isActive"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Class/ownedReception"/>

       <genOperations ecoreOperation="UML2.ecore#//Class/inherit">

@@ -331,14 +275,34 @@
       <genOperations ecoreOperation="UML2.ecore#//Parameter/getNamespace"/>

       <genOperations ecoreOperation="UML2.ecore#//Parameter/getOwnedElements"/>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//NamedElement">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/name"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/qualifiedName.1"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/visibility"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/clientDependency"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/nameExpression"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateNoName"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateQualifiedName"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/allNamespaces"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/isDistinguishableFrom">

+        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/n"/>

+        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/ns"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/separator"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/qualifiedName"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateVisibilityNeedsOwnership"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getNamespace"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwner"/>

+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwnedElements"/>

+    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//Package">

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/nestedPackage"/>

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/nestingPackage"/>

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/ownedType"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Package/ownedMember"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Package/packageMerge"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/appliedProfile"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Package/packageExtension"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/appliedProfile"/>

       <genOperations ecoreOperation="UML2.ecore#//Package/validateElementsPublicOrPrivate"/>

       <genOperations ecoreOperation="UML2.ecore#//Package/mustBeOwned"/>

       <genOperations ecoreOperation="UML2.ecore#//Package/visibleMembers"/>

@@ -368,38 +332,41 @@
       <genOperations ecoreOperation="UML2.ecore#//EnumerationLiteral/getNamespace"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//PrimitiveType"/>

-    <genClasses ecoreClass="UML2.ecore#//Constraint">

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/context"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/namespace"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/specification"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/constrainedElement"/>

-      <genOperations ecoreOperation="UML2.ecore#//Constraint/validateNotApplyToSelf"/>

-      <genOperations ecoreOperation="UML2.ecore#//Constraint/getOwnedElements"/>

+    <genClasses ecoreClass="UML2.ecore#//DirectedRelationship">

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/source"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/target"/>

+      <genOperations ecoreOperation="UML2.ecore#//DirectedRelationship/getRelatedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LiteralBoolean">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralBoolean/value"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralBoolean/isComputable"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralBoolean/booleanValue"/>

+    <genClasses ecoreClass="UML2.ecore#//Relationship">

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Relationship/relatedElement"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LiteralSpecification"/>

-    <genClasses ecoreClass="UML2.ecore#//LiteralString">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralString/value"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralString/isComputable"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralString/stringValue"/>

+    <genClasses ecoreClass="UML2.ecore#//Namespace">

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/member"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/ownedRule"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/importedMember.1"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/elementImport"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/packageImport"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateMembersAreDistinguishable"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getNamesOfMember">

+        <genParameters ecoreParameter="UML2.ecore#//Namespace/getNamesOfMember/element"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/membersAreDistinguishable"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateImportedMemberDerived"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/importedMember"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/importMembers">

+        <genParameters ecoreParameter="UML2.ecore#//Namespace/importMembers/imps"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/excludeCollisions">

+        <genParameters ecoreParameter="UML2.ecore#//Namespace/excludeCollisions/imps"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedMembers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LiteralNull">

-      <genOperations ecoreOperation="UML2.ecore#//LiteralNull/isComputable"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralNull/isNull"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LiteralInteger">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralInteger/value"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralInteger/isComputable"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralInteger/integerValue"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LiteralUnlimitedNatural">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralUnlimitedNatural/value"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralUnlimitedNatural/isComputable"/>

-      <genOperations ecoreOperation="UML2.ecore#//LiteralUnlimitedNatural/unlimitedValue"/>

+    <genClasses ecoreClass="UML2.ecore#//Comment">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Comment/body"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Comment/annotatedElement"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Comment/bodyExpression"/>

+      <genOperations ecoreOperation="UML2.ecore#//Comment/getOwnedElements"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//Classifier">

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/feature"/>

@@ -448,6 +415,39 @@
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Feature/featuringClassifier"/>

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Feature/isStatic"/>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Constraint">

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/context"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/namespace"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/specification"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/constrainedElement"/>

+      <genOperations ecoreOperation="UML2.ecore#//Constraint/validateNotApplyToSelf"/>

+      <genOperations ecoreOperation="UML2.ecore#//Constraint/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LiteralBoolean">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralBoolean/value"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralBoolean/isComputable"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralBoolean/booleanValue"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LiteralSpecification"/>

+    <genClasses ecoreClass="UML2.ecore#//LiteralString">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralString/value"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralString/isComputable"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralString/stringValue"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LiteralNull">

+      <genOperations ecoreOperation="UML2.ecore#//LiteralNull/isComputable"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralNull/isNull"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LiteralInteger">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralInteger/value"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralInteger/isComputable"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralInteger/integerValue"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LiteralUnlimitedNatural">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LiteralUnlimitedNatural/value"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralUnlimitedNatural/isComputable"/>

+      <genOperations ecoreOperation="UML2.ecore#//LiteralUnlimitedNatural/unlimitedValue"/>

+    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//BehavioralFeature">

       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//BehavioralFeature/parameter"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//BehavioralFeature/formalParameter"/>

@@ -576,33 +576,6 @@
         <genParameters ecoreParameter="UML2.ecore#//ExtensionEnd/setType/newType"/>

       </genOperations>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Permission"/>

-    <genClasses ecoreClass="UML2.ecore#//Dependency">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Dependency/client"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Dependency/supplier"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Usage"/>

-    <genClasses ecoreClass="UML2.ecore#//Abstraction">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Abstraction/mapping"/>

-      <genOperations ecoreOperation="UML2.ecore#//Abstraction/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Realization">

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Realization/abstraction"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Realization/realizingClassifier"/>

-      <genOperations ecoreOperation="UML2.ecore#//Realization/getSources"/>

-      <genOperations ecoreOperation="UML2.ecore#//Realization/getOwner"/>

-      <genOperations ecoreOperation="UML2.ecore#//Realization/getClients"/>

-      <genOperations ecoreOperation="UML2.ecore#//Realization/getSuppliers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Realization/getTargets"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Substitution">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Substitution/contract"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Substitution/substitutingClassifier"/>

-      <genOperations ecoreOperation="UML2.ecore#//Substitution/getSuppliers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Substitution/getTargets"/>

-      <genOperations ecoreOperation="UML2.ecore#//Substitution/getClients"/>

-      <genOperations ecoreOperation="UML2.ecore#//Substitution/getSources"/>

-    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//Behavior">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Behavior/isReentrant"/>

       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Behavior/context"/>

@@ -638,16 +611,36 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Activity/isReadOnly"/>

       <genOperations ecoreOperation="UML2.ecore#//Activity/getOwnedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//AssociationClass"/>

     <genClasses ecoreClass="UML2.ecore#//Model">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Model/viewpoint"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//InformationItem">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationItem/represented"/>

+    <genClasses ecoreClass="UML2.ecore#//AssociationClass"/>

+    <genClasses ecoreClass="UML2.ecore#//Permission"/>

+    <genClasses ecoreClass="UML2.ecore#//Dependency">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Dependency/client"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Dependency/supplier"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//InformationFlow">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/realization"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/conveyed"/>

+    <genClasses ecoreClass="UML2.ecore#//Usage"/>

+    <genClasses ecoreClass="UML2.ecore#//Abstraction">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Abstraction/mapping"/>

+      <genOperations ecoreOperation="UML2.ecore#//Abstraction/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Realization">

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Realization/abstraction"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Realization/realizingClassifier"/>

+      <genOperations ecoreOperation="UML2.ecore#//Realization/getSources"/>

+      <genOperations ecoreOperation="UML2.ecore#//Realization/getOwner"/>

+      <genOperations ecoreOperation="UML2.ecore#//Realization/getClients"/>

+      <genOperations ecoreOperation="UML2.ecore#//Realization/getSuppliers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Realization/getTargets"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Substitution">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Substitution/contract"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Substitution/substitutingClassifier"/>

+      <genOperations ecoreOperation="UML2.ecore#//Substitution/getSuppliers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Substitution/getTargets"/>

+      <genOperations ecoreOperation="UML2.ecore#//Substitution/getClients"/>

+      <genOperations ecoreOperation="UML2.ecore#//Substitution/getSources"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//GeneralizationSet">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//GeneralizationSet/isCovering"/>

@@ -655,52 +648,12 @@
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/powertype"/>

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/generalization"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ConnectorEnd">

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/definingEnd"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/role"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/partWithPort"/>

+    <genClasses ecoreClass="UML2.ecore#//InformationItem">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationItem/represented"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ConnectableElement">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectableElement/end"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Connector">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/type"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/redefinedConnector"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Connector/end"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Connector/kind"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/contract"/>

-      <genOperations ecoreOperation="UML2.ecore#//Connector/getRedefinedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//Connector/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//StructuredClassifier">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedAttribute"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/part"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/role"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedConnector"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getAttributes"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getOwnedMembers"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getMembers"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getFeatures"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Interface">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedAttribute"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedOperation"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Interface/redefinedInterface"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/nestedClassifier"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedReception"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/protocol"/>

-      <genOperations ecoreOperation="UML2.ecore#//Interface/getAttributes"/>

-      <genOperations ecoreOperation="UML2.ecore#//Interface/getOwnedMembers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Interface/getFeatures"/>

-      <genOperations ecoreOperation="UML2.ecore#//Interface/getRedefinedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Implementation">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/contract"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/implementingClassifier"/>

-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSuppliers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getTargets"/>

-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getClients"/>

-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSources"/>

+    <genClasses ecoreClass="UML2.ecore#//InformationFlow">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/realization"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/conveyed"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//Actor"/>

     <genClasses ecoreClass="UML2.ecore#//Extend">

@@ -728,23 +681,6 @@
       <genOperations ecoreOperation="UML2.ecore#//Include/getSources"/>

       <genOperations ecoreOperation="UML2.ecore#//Include/getTargets"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Artifact">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Artifact/fileName"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/nestedArtifact"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/manifestation"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedOperation"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedAttribute"/>

-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getClientDependencies"/>

-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getFeatures"/>

-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedMembers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getAttributes"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Manifestation">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Manifestation/utilizedElement"/>

-      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getSuppliers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getTargets"/>

-    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//ActivityEdge">

       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityEdge/activity"/>

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityEdge/source"/>

@@ -827,15 +763,161 @@
     <genClasses ecoreClass="UML2.ecore#//ValuePin">

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ValuePin/value"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//CollaborationOccurrence">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/type"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/roleBinding"/>

-      <genOperations ecoreOperation="UML2.ecore#//CollaborationOccurrence/getOwnedElements"/>

+    <genClasses ecoreClass="UML2.ecore#//Interface">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedAttribute"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedOperation"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Interface/redefinedInterface"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/nestedClassifier"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedReception"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/protocol"/>

+      <genOperations ecoreOperation="UML2.ecore#//Interface/getAttributes"/>

+      <genOperations ecoreOperation="UML2.ecore#//Interface/getOwnedMembers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Interface/getFeatures"/>

+      <genOperations ecoreOperation="UML2.ecore#//Interface/getRedefinedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Collaboration">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Collaboration/collaborationRole"/>

-      <genOperations ecoreOperation="UML2.ecore#//Collaboration/getRoles"/>

+    <genClasses ecoreClass="UML2.ecore#//Implementation">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/contract"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/implementingClassifier"/>

+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSuppliers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getTargets"/>

+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getClients"/>

+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSources"/>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ConnectorEnd">

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/definingEnd"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/role"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/partWithPort"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ConnectableElement">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectableElement/end"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Connector">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/type"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/redefinedConnector"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Connector/end"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Connector/kind"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/contract"/>

+      <genOperations ecoreOperation="UML2.ecore#//Connector/getRedefinedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//Connector/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//StructuredClassifier">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedAttribute"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/part"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/role"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedConnector"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getAttributes"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getOwnedMembers"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getMembers"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getFeatures"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Artifact">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Artifact/fileName"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/nestedArtifact"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/manifestation"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedOperation"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedAttribute"/>

+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getClientDependencies"/>

+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getFeatures"/>

+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedMembers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getAttributes"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Manifestation">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Manifestation/utilizedElement"/>

+      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getSuppliers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getTargets"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Port">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isBehavior"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isService"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/required"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/redefinedPort"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/provided"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/protocol"/>

+      <genOperations ecoreOperation="UML2.ecore#//Port/getRedefinedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//EncapsulatedClassifier">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//EncapsulatedClassifier/ownedPort"/>

+      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getFeatures"/>

+      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getOwnedMembers"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Variable">

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Variable/scope"/>

+      <genOperations ecoreOperation="UML2.ecore#//Variable/getOwner"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//StructuredActivityNode">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/variable"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/containedNode"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/containedEdge"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//StructuredActivityNode/mustIsolate"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getActivity"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/setActivity">

+        <genParameters ecoreParameter="UML2.ecore#//StructuredActivityNode/setActivity/newActivity"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getActivityGroup_activity"/>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/setActivityGroup_activity">

+        <genParameters ecoreParameter="UML2.ecore#//StructuredActivityNode/setActivityGroup_activity/newActivityGroup_activity"/>

+      </genOperations>

+      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getOwnedMembers"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ConditionalNode">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ConditionalNode/isDeterminate"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ConditionalNode/isAssured"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ConditionalNode/clause"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ConditionalNode/result"/>

+      <genOperations ecoreOperation="UML2.ecore#//ConditionalNode/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//ConditionalNode/getOutputs"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Clause">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/test"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/body"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/predecessorClause"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/successorClause"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/decider"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/bodyOutput"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//LoopNode">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LoopNode/isTestedFirst"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/bodyPart"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/setupPart"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/decider"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/test"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/result"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/loopVariable"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/bodyOutput"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/loopVariableInput"/>

+      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getOutputs"/>

+      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getInputs"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//CallTrigger">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallTrigger/operation"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//MessageTrigger"/>

+    <genClasses ecoreClass="UML2.ecore#//ChangeTrigger">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ChangeTrigger/changeExpression"/>

+      <genOperations ecoreOperation="UML2.ecore#//ChangeTrigger/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Trigger">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Trigger/port"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Reception">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Reception/signal"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Signal">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Signal/ownedAttribute"/>

+      <genOperations ecoreOperation="UML2.ecore#//Signal/getAttributes"/>

+      <genOperations ecoreOperation="UML2.ecore#//Signal/getOwnedMembers"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//SignalTrigger">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//SignalTrigger/signal"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//TimeTrigger">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeTrigger/isRelative"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TimeTrigger/when"/>

+      <genOperations ecoreOperation="UML2.ecore#//TimeTrigger/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//AnyTrigger"/>

     <genClasses ecoreClass="UML2.ecore#//Interaction">

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interaction/lifeline"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interaction/message"/>

@@ -898,97 +980,6 @@
       <genOperations ecoreOperation="UML2.ecore#//StateInvariant/getOwnedElements"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//Stop"/>

-    <genClasses ecoreClass="UML2.ecore#//Port">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isBehavior"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isService"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/required"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/redefinedPort"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/provided"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/protocol"/>

-      <genOperations ecoreOperation="UML2.ecore#//Port/getRedefinedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//EncapsulatedClassifier">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//EncapsulatedClassifier/ownedPort"/>

-      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getFeatures"/>

-      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getOwnedMembers"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//CallTrigger">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallTrigger/operation"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//MessageTrigger"/>

-    <genClasses ecoreClass="UML2.ecore#//ChangeTrigger">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ChangeTrigger/changeExpression"/>

-      <genOperations ecoreOperation="UML2.ecore#//ChangeTrigger/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Trigger">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Trigger/port"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Reception">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Reception/signal"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Signal">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Signal/ownedAttribute"/>

-      <genOperations ecoreOperation="UML2.ecore#//Signal/getAttributes"/>

-      <genOperations ecoreOperation="UML2.ecore#//Signal/getOwnedMembers"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//SignalTrigger">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//SignalTrigger/signal"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//TimeTrigger">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeTrigger/isRelative"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TimeTrigger/when"/>

-      <genOperations ecoreOperation="UML2.ecore#//TimeTrigger/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//AnyTrigger"/>

-    <genClasses ecoreClass="UML2.ecore#//Variable">

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Variable/scope"/>

-      <genOperations ecoreOperation="UML2.ecore#//Variable/getOwner"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//StructuredActivityNode">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/variable"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/containedNode"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredActivityNode/containedEdge"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//StructuredActivityNode/mustIsolate"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getActivity"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/setActivity">

-        <genParameters ecoreParameter="UML2.ecore#//StructuredActivityNode/setActivity/newActivity"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getActivityGroup_activity"/>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/setActivityGroup_activity">

-        <genParameters ecoreParameter="UML2.ecore#//StructuredActivityNode/setActivityGroup_activity/newActivityGroup_activity"/>

-      </genOperations>

-      <genOperations ecoreOperation="UML2.ecore#//StructuredActivityNode/getOwnedMembers"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ConditionalNode">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ConditionalNode/isDeterminate"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ConditionalNode/isAssured"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ConditionalNode/clause"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ConditionalNode/result"/>

-      <genOperations ecoreOperation="UML2.ecore#//ConditionalNode/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//ConditionalNode/getOutputs"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Clause">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/test"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/body"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/predecessorClause"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/successorClause"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/decider"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Clause/bodyOutput"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//LoopNode">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//LoopNode/isTestedFirst"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/bodyPart"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/setupPart"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/decider"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/test"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/result"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/loopVariable"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/bodyOutput"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//LoopNode/loopVariableInput"/>

-      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getOutputs"/>

-      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//LoopNode/getInputs"/>

-    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//TemplateSignature">

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/parameter"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/ownedParameter"/>

@@ -1041,6 +1032,10 @@
       <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwner"/>

       <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwnedElements"/>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Collaboration">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Collaboration/collaborationRole"/>

+      <genOperations ecoreOperation="UML2.ecore#//Collaboration/getRoles"/>

+    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//OperationTemplateParameter"/>

     <genClasses ecoreClass="UML2.ecore#//ClassifierTemplateParameter">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ClassifierTemplateParameter/allowSubstitutable"/>

@@ -1049,86 +1044,10 @@
     <genClasses ecoreClass="UML2.ecore#//RedefinableTemplateSignature"/>

     <genClasses ecoreClass="UML2.ecore#//TemplateableClassifier"/>

     <genClasses ecoreClass="UML2.ecore#//ConnectableElementTemplateParameter"/>

-    <genClasses ecoreClass="UML2.ecore#//StateMachine">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/region"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/connectionPoint"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/extendedStateMachine"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/stateMachine_redefinitionContext"/>

-      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getRedefinedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getRedefinitionContexts"/>

-      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getOwnedMembers"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Region">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Region/subvertex"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Region/transition"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Region/extendedRegion"/>

-      <genOperations ecoreOperation="UML2.ecore#//Region/getRedefinitionContexts"/>

-      <genOperations ecoreOperation="UML2.ecore#//Region/getRedefinedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//Region/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Pseudostate">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Pseudostate/kind"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//State">

-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isComposite"/>

-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isOrthogonal"/>

-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isSimple"/>

-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isSubmachineState"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/submachine"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/connection"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/redefinedState"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/deferrableTrigger"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/region"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/entry"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/exit"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/doActivity"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/stateInvariant"/>

-      <genOperations ecoreOperation="UML2.ecore#//State/getRedefinitionContexts"/>

-      <genOperations ecoreOperation="UML2.ecore#//State/getRedefinedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//State/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Vertex">

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/container"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/outgoing"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/incoming"/>

-      <genOperations ecoreOperation="UML2.ecore#//Vertex/getOwner"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ConnectionPointReference">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectionPointReference/entry"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectionPointReference/exit"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Transition">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Transition/kind"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/container"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/source"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/target"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/redefinedTransition"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/trigger"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Transition/guard"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Transition/effect"/>

-      <genOperations ecoreOperation="UML2.ecore#//Transition/getRedefinitionContexts"/>

-      <genOperations ecoreOperation="UML2.ecore#//Transition/getRedefinedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//Transition/getOwner"/>

-      <genOperations ecoreOperation="UML2.ecore#//Transition/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//FinalState"/>

-    <genClasses ecoreClass="UML2.ecore#//ForkNode"/>

-    <genClasses ecoreClass="UML2.ecore#//JoinNode">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//JoinNode/isCombineDuplicate"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//JoinNode/joinSpec"/>

-      <genOperations ecoreOperation="UML2.ecore#//JoinNode/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//FlowFinalNode"/>

-    <genClasses ecoreClass="UML2.ecore#//CentralBufferNode"/>

-    <genClasses ecoreClass="UML2.ecore#//ActivityPartition">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isDimension"/>

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isExternal"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedEdge"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedNode"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/subgroup"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/superPartition"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/represents"/>

-      <genOperations ecoreOperation="UML2.ecore#//ActivityPartition/getSuperGroup"/>

+    <genClasses ecoreClass="UML2.ecore#//CollaborationOccurrence">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/type"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/roleBinding"/>

+      <genOperations ecoreOperation="UML2.ecore#//CollaborationOccurrence/getOwnedElements"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//CreateObjectAction">

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CreateObjectAction/classifier"/>

@@ -1258,6 +1177,103 @@
     <genClasses ecoreClass="UML2.ecore#//CallBehaviorAction">

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallBehaviorAction/behavior"/>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//StateMachine">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/region"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/connectionPoint"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/extendedStateMachine"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/stateMachine_redefinitionContext"/>

+      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getRedefinedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getRedefinitionContexts"/>

+      <genOperations ecoreOperation="UML2.ecore#//StateMachine/getOwnedMembers"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Region">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Region/subvertex"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Region/transition"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Region/extendedRegion"/>

+      <genOperations ecoreOperation="UML2.ecore#//Region/getRedefinitionContexts"/>

+      <genOperations ecoreOperation="UML2.ecore#//Region/getRedefinedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//Region/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Pseudostate">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Pseudostate/kind"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//State">

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isComposite"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isOrthogonal"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isSimple"/>

+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//State/isSubmachineState"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/submachine"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/connection"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/redefinedState"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//State/deferrableTrigger"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/region"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/entry"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/exit"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/doActivity"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//State/stateInvariant"/>

+      <genOperations ecoreOperation="UML2.ecore#//State/getRedefinitionContexts"/>

+      <genOperations ecoreOperation="UML2.ecore#//State/getRedefinedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//State/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Vertex">

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/container"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/outgoing"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Vertex/incoming"/>

+      <genOperations ecoreOperation="UML2.ecore#//Vertex/getOwner"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ConnectionPointReference">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectionPointReference/entry"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectionPointReference/exit"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Transition">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Transition/kind"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/container"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/source"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/target"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/redefinedTransition"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Transition/trigger"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Transition/guard"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Transition/effect"/>

+      <genOperations ecoreOperation="UML2.ecore#//Transition/getRedefinitionContexts"/>

+      <genOperations ecoreOperation="UML2.ecore#//Transition/getRedefinedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//Transition/getOwner"/>

+      <genOperations ecoreOperation="UML2.ecore#//Transition/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//FinalState"/>

+    <genClasses ecoreClass="UML2.ecore#//ForkNode"/>

+    <genClasses ecoreClass="UML2.ecore#//JoinNode">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//JoinNode/isCombineDuplicate"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//JoinNode/joinSpec"/>

+      <genOperations ecoreOperation="UML2.ecore#//JoinNode/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//FlowFinalNode"/>

+    <genClasses ecoreClass="UML2.ecore#//CentralBufferNode"/>

+    <genClasses ecoreClass="UML2.ecore#//ActivityPartition">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isDimension"/>

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isExternal"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedEdge"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedNode"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/subgroup"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/superPartition"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/represents"/>

+      <genOperations ecoreOperation="UML2.ecore#//ActivityPartition/getSuperGroup"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ExpansionNode">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionNode/regionAsOutput"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionNode/regionAsInput"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ExpansionRegion">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ExpansionRegion/mode"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionRegion/outputElement"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionRegion/inputElement"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ExceptionHandler">

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/protectedNode"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/handlerBody"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/exceptionInput"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/exceptionType"/>

+      <genOperations ecoreOperation="UML2.ecore#//ExceptionHandler/getOwner"/>

+    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//InteractionOccurrence">

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/refersTo"/>

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/actualGate"/>

@@ -1285,51 +1301,6 @@
     <genClasses ecoreClass="UML2.ecore#//Continuation">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Continuation/setting"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ExpansionNode">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionNode/regionAsOutput"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionNode/regionAsInput"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ExpansionRegion">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ExpansionRegion/mode"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionRegion/outputElement"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionRegion/inputElement"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ExceptionHandler">

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/protectedNode"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/handlerBody"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/exceptionInput"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExceptionHandler/exceptionType"/>

-      <genOperations ecoreOperation="UML2.ecore#//ExceptionHandler/getOwner"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ProtocolConformance">

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolConformance/specificMachine"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolConformance/generalMachine"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getSources"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getOwner"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getTargets"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ProtocolStateMachine">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolStateMachine/conformance"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolStateMachine/getOwnedElements"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ProtocolTransition">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/postCondition"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/referred"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/preCondition"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolTransition/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//ProtocolTransition/setGuard">

-        <genParameters ecoreParameter="UML2.ecore#//ProtocolTransition/setGuard/newGuard"/>

-      </genOperations>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Component">

-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Component/isIndirectlyInstantiated"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/required"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/provided"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/realization"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/ownedMember"/>

-      <genOperations ecoreOperation="UML2.ecore#//Component/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//Component/getClientDependencies"/>

-    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//TimeExpression">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeExpression/firstTime"/>

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TimeExpression/event"/>

@@ -1382,6 +1353,40 @@
         <genParameters ecoreParameter="UML2.ecore#//DurationConstraint/setSpecification/newSpecification"/>

       </genOperations>

     </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Deployment">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/deployedArtifact"/>

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/location"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/configuration"/>

+      <genOperations ecoreOperation="UML2.ecore#//Deployment/getSuppliers"/>

+      <genOperations ecoreOperation="UML2.ecore#//Deployment/getTargets"/>

+      <genOperations ecoreOperation="UML2.ecore#//Deployment/getSources"/>

+      <genOperations ecoreOperation="UML2.ecore#//Deployment/getClients"/>

+      <genOperations ecoreOperation="UML2.ecore#//Deployment/getOwnedElements"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//DeployedArtifact"/>

+    <genClasses ecoreClass="UML2.ecore#//DeploymentTarget">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//DeploymentTarget/deployment"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DeploymentTarget/deployedElement"/>

+      <genOperations ecoreOperation="UML2.ecore#//DeploymentTarget/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//DeploymentTarget/getClientDependencies"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Node">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Node/nestedNode"/>

+      <genOperations ecoreOperation="UML2.ecore#//Node/getNestedClassifiers"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//Device"/>

+    <genClasses ecoreClass="UML2.ecore#//ExecutionEnvironment"/>

+    <genClasses ecoreClass="UML2.ecore#//CommunicationPath"/>

+    <genClasses ecoreClass="UML2.ecore#//DataStoreNode"/>

+    <genClasses ecoreClass="UML2.ecore#//InterruptibleActivityRegion">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/interruptingEdge"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/containedNode"/>

+    </genClasses>

+    <genClasses ecoreClass="UML2.ecore#//ParameterSet">

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/parameter"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/condition"/>

+      <genOperations ecoreOperation="UML2.ecore#//ParameterSet/getOwnedElements"/>

+    </genClasses>

     <genClasses ecoreClass="UML2.ecore#//ReadExtentAction">

       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ReadExtentAction/result"/>

       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ReadExtentAction/classifier"/>

@@ -1449,39 +1454,34 @@
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//RaiseExceptionAction/exception"/>

       <genOperations ecoreOperation="UML2.ecore#//RaiseExceptionAction/getInputs"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Deployment">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/deployedArtifact"/>

-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/location"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/configuration"/>

-      <genOperations ecoreOperation="UML2.ecore#//Deployment/getSuppliers"/>

-      <genOperations ecoreOperation="UML2.ecore#//Deployment/getTargets"/>

-      <genOperations ecoreOperation="UML2.ecore#//Deployment/getSources"/>

-      <genOperations ecoreOperation="UML2.ecore#//Deployment/getClients"/>

-      <genOperations ecoreOperation="UML2.ecore#//Deployment/getOwnedElements"/>

+    <genClasses ecoreClass="UML2.ecore#//ProtocolConformance">

+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolConformance/specificMachine"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolConformance/generalMachine"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getSources"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getOwner"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolConformance/getTargets"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//DeployedArtifact"/>

-    <genClasses ecoreClass="UML2.ecore#//DeploymentTarget">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//DeploymentTarget/deployment"/>

-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DeploymentTarget/deployedElement"/>

-      <genOperations ecoreOperation="UML2.ecore#//DeploymentTarget/getOwnedElements"/>

-      <genOperations ecoreOperation="UML2.ecore#//DeploymentTarget/getClientDependencies"/>

+    <genClasses ecoreClass="UML2.ecore#//ProtocolStateMachine">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolStateMachine/conformance"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolStateMachine/getOwnedElements"/>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Node">

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Node/nestedNode"/>

-      <genOperations ecoreOperation="UML2.ecore#//Node/getNestedClassifiers"/>

+    <genClasses ecoreClass="UML2.ecore#//ProtocolTransition">

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/postCondition"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/referred"/>

+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ProtocolTransition/preCondition"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolTransition/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//ProtocolTransition/setGuard">

+        <genParameters ecoreParameter="UML2.ecore#//ProtocolTransition/setGuard/newGuard"/>

+      </genOperations>

     </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//Device"/>

-    <genClasses ecoreClass="UML2.ecore#//ExecutionEnvironment"/>

-    <genClasses ecoreClass="UML2.ecore#//CommunicationPath"/>

-    <genClasses ecoreClass="UML2.ecore#//DataStoreNode"/>

-    <genClasses ecoreClass="UML2.ecore#//InterruptibleActivityRegion">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/interruptingEdge"/>

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/containedNode"/>

-    </genClasses>

-    <genClasses ecoreClass="UML2.ecore#//ParameterSet">

-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/parameter"/>

-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/condition"/>

-      <genOperations ecoreOperation="UML2.ecore#//ParameterSet/getOwnedElements"/>

+    <genClasses ecoreClass="UML2.ecore#//Component">

+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Component/isIndirectlyInstantiated"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/required"/>

+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/provided"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/realization"/>

+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/ownedMember"/>

+      <genOperations ecoreOperation="UML2.ecore#//Component/getOwnedElements"/>

+      <genOperations ecoreOperation="UML2.ecore#//Component/getClientDependencies"/>

     </genClasses>

     <genClasses ecoreClass="UML2.ecore#//DeploymentSpecification">

       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//DeploymentSpecification/deploymentLocation"/>