[160679] Regenerating with Java 5.0 compliance level.
diff --git a/plugins/org.eclipse.uml2.uml/model/UML.ecore b/plugins/org.eclipse.uml2.uml/model/UML.ecore
index 3a707c4..2ef4847 100644
--- a/plugins/org.eclipse.uml2.uml/model/UML.ecore
+++ b/plugins/org.eclipse.uml2.uml/model/UML.ecore
@@ -52,14 +52,24 @@
         <details key="documentation" value="An element may not directly or indirectly own itself.&#xD;&#xA;not self.allOwnedElements()->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_owner" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Elements that must be owned must have an owner.&#xD;&#xA;self.mustBeOwned() implies owner->notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="destroy" ordered="false" lowerBound="1">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -304,7 +314,12 @@
         <details key="documentation" value="If an element that is owned by a package has visibility, it is public or private.&#xD;&#xA;self.ownedElements->forAll(e | e.visibility->notEmpty() implies e.visbility = #public or e.visibility = #private)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -476,21 +491,36 @@
         <details key="documentation" value="If there is no name, or one of the containing namespaces has no name, there is no qualified name.&#xD;&#xA;(self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty())&#xD;&#xA;  implies self.qualifiedName->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="When there is a name, and all of the containing namespaces have a name, the qualified name is constructed from the names of the containing namespaces.&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xA;  self.qualifiedName = self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility_needs_ownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a NamedElement is not owned by a Namespace, it does not have a visibility.&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createDependency" ordered="false" lowerBound="1" eType="#//Dependency">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -667,7 +697,12 @@
         <details key="documentation" value="All the members of a Namespace are distinguishable within it.&#xD;&#xA;membersAreDistinguishable()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createElementImport" ordered="false" lowerBound="1" eType="#//ElementImport">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -777,14 +812,24 @@
         <details key="documentation" value="The visibility of an ElementImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="imported_element_is_public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An importedElement has either public visibility or no visibility at all.&#xD;&#xA;self.importedElement.visibility.notEmpty() implies self.importedElement.visibility = #public"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getName" ordered="false" lowerBound="1" eType="#//String">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -827,7 +872,12 @@
         <details key="documentation" value="The visibility of a PackageImport is either public or private.&#xD;&#xA;self.visibility = #public or self.visibility = #private"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
         lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public">
@@ -859,35 +909,60 @@
         <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;self.specification().booleanValue().isOclKindOf(Boolean)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="boolean_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The value specification for a constraint must evaluate to a Boolean value.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Evaluating the value specification for a constraint must not have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_applied_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A constraint cannot be applied to itself.&#xD;&#xA;not constrainedElement->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
         eType="#//Element">
@@ -1014,28 +1089,48 @@
         <details key="documentation" value="An association specializing another association has the same number of ends as the other association.&#xD;&#xA;self.parents()->forAll(p | p.memberEnd.size() = self.memberEnd.size())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="specialized_end_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="When an association specializes another association, every end of the specific association corresponds to an end of the general association, and the specific end reaches the same type or a subtype of the more general end.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only binary associations can be aggregations.&#xD;&#xA;self.memberEnd->exists(aggregation &lt;> Aggregation::none) implies self.memberEnd->size() = 2"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Association ends of associations with more than two ends must be owned by the association.&#xD;&#xA;if memberEnd->size() > 2 then ownedEnd->includesAll(memberEnd)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isBinary" ordered="false" lowerBound="1" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1116,28 +1211,48 @@
         <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="generalization_hierarchies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Generalization hierarchies must be directed and acyclical. A classifier can not be both a transitively general and transitively specific classifier of the same classifier.&#xD;&#xA;not self.allParents()->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="specialize_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A classifier may only specialize classifiers of a valid type.&#xD;&#xA;self.parents()->forAll(c | self.maySpecializeType(c))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getAllAttributes" ordered="false" upperBound="-1" eType="#//Property">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1340,14 +1455,24 @@
         <details key="documentation" value="At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinition_consistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A redefining element must be consistent with each redefined element.&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1424,14 +1549,24 @@
         <details key="documentation" value="Each parameter substitution must refer to a formal template parameter of the target template signature.&#xD;&#xA;parameterSubstitution->forAll(b | template.parameter->includes(b.formal))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_parameter_substitution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A binding contains at most one parameter substitution for each formal template parameter of the target template signature.&#xD;&#xA;template.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
         lowerBound="1" eType="#//TemplateSignature">
@@ -1465,7 +1600,12 @@
         <details key="documentation" value="Parameters must own the elements they parameter or those elements must be owned by the element being templated.&#xD;&#xA;templatedElement.ownedElement->includesAll(parameter.parameteredElement - parameter.ownedParameteredElement)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
         upperBound="-1" eType="#//TemplateParameter">
@@ -1497,7 +1637,12 @@
         <details key="documentation" value="The default must be compatible with the formal template parameter.&#xD;&#xA;default->notEmpty() implies default->isCompatibleWith(parameteredElement)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
         lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
@@ -1572,7 +1717,12 @@
         <details key="documentation" value="The actual parameter must be compatible with the formal template parameter, e.g. the actual parameter for a class template parameter must be a class.&#xD;&#xA;actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
         lowerBound="1" eType="#//TemplateParameter">
@@ -1610,7 +1760,12 @@
         <details key="documentation" value="Every Generalization associated with a given GeneralizationSet must have the same general Classifier. That is, all Generalizations for a particular GeneralizationSet must have the same superclass.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
         eType="#//Boolean" unsettable="true">
@@ -1648,14 +1803,24 @@
         <details key="documentation" value="Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.&#xD;&#xA;generalization->collect(g | g.general)->asSet()->size() &lt;= 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -1752,21 +1917,36 @@
         <details key="documentation" value="If the language attribute is not empty, then the size of the body and language arrays must be the same.&#xD;&#xA;language->notEmpty() implies (body->size() = language->size())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="only_return_result_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The behavior may only have return result parameters.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA;  self.behavior.ownedParameters->select(p | p.direction&lt;>#return)->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_return_result_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The behavior must have exactly one return result parameter.&#xD;&#xA;self.behavior.notEmpty() implies&#xD;&#xA;  self.behavior.ownedParameter->select(p | p.direction=#return)->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getResult" ordered="false" eType="#//Parameter"/>
     <eOperations name="value" ordered="false" lowerBound="1" eType="#//Integer">
@@ -1826,35 +2006,60 @@
         <details key="documentation" value="A parameter may only be associated with a connector end within the context of a collaboration.&#xD;&#xA;self.end.notEmpty() implies self.collaboration.notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="stream_and_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A parameter cannot be a stream and exception at the same time.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An input parameter cannot be an exception.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="reentrant_behaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Reentrant behaviors cannot have stream parameters.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="in_and_out" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only in and inout parameters may have a delete effect. Only out, inout, and return parameters may have a create effect.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefault" ordered="false" eType="#//String"/>
     <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
@@ -1952,35 +2157,60 @@
         <details key="documentation" value="A multiplicity must define at least one valid cardinality that is greater than zero.&#xD;&#xA;upperBound()->notEmpty() implies upperBound() > 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="lower_ge_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The lower bound must be a non-negative integer literal.&#xD;&#xA;lowerBound()->notEmpty() implies lowerBound() >= 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="upper_ge_lower" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The upper bound must be greater than or equal to the lower bound.&#xD;&#xA;(upperBound()->notEmpty() and lowerBound()->notEmpty()) implies upperBound() >= lowerBound()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then evaluating that specification must not have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_constant" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a non-literal ValueSpecification is used for the lower or upper bound, then that specification must be a constant expression.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="setLower" ordered="false" lowerBound="1">
       <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
@@ -2109,28 +2339,48 @@
         <details key="documentation" value="The multiplicity of the connector end may not be more general than the multiplicity of the association typing the owning connector.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="part_with_port_empty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a connector end is attached to a port of the containing classifier, partWithPort will be empty.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="role_and_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a connector end references both a role and a partWithPort, then the role must be a port that is defined by the type of the partWithPort.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="self_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The property held in self.partWithPort must not be a Port.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefiningEnd" ordered="false" lowerBound="1" eType="#//Property"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
@@ -2186,70 +2436,120 @@
         <details key="documentation" value="A multiplicity of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;A multiplicity on an aggregate end of a composite aggregation must not have an upper bound greater than 1.&#xD;&#xA;isComposite implies (upperBound()->isEmpty() or upperBound() &lt;= 1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetting_context_conforms" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.&#xD;&#xA;self.subsettedProperty->notEmpty() implies&#xA;  (self.subsettingContext()->notEmpty() and self.subsettingContext()->forAll (sc |&#xA;    self.subsettedProperty->forAll(sp |&#xA;      sp.subsettingContext()->exists(c | sc.conformsTo(c)))))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefined_property_inherited" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A redefined property must be inherited from a more general classifier containing the redefining property.&#xD;&#xA;if (redefinedProperty->notEmpty()) then&#xD;&#xA;  (redefinitionContext->notEmpty() and&#xD;&#xA;      redefinedProperty->forAll(rp|&#xD;&#xA;        ((redefinitionContext->collect(fc|&#xD;&#xA;          fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetting_rules" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A subsetting property may strengthen the type of the subsetted property, and its upper bound may be less.&#xD;&#xA;self.subsettedProperty->forAll(sp |&#xA;  self.type.conformsTo(sp.type) and&#xA;    ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies&#xA;      self.upperBound()&lt;=sp.upperBound() ))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="navigable_readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only a navigable property can be marked as readOnly.&#xD;&#xA;isReadOnly implies isNavigable()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="derived_union_is_derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A derived union is derived.&#xD;&#xA;isDerivedUnion implies isDerived"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="derived_union_is_read_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A derived union is read only.&#xD;&#xA;isDerivedUnion implies isReadOnly"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetted_property_names" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A property may not subset a property with the same name.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binding_to_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A binding of a property template parameter representing an attribute must be to an attribute.&#xD;&#xA;(isAttribute(self) and (templateParameterSubstitution->notEmpty())&#xD;&#xA;  implies (templateParameterSubstitution->forAll(ts | isAttribute(ts.formal)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefault" ordered="false" eType="#//String"/>
     <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
@@ -2492,14 +2792,24 @@
         <details key="documentation" value="The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e. the configured components).&#xD;&#xA;self.deployment->forAll (d | d.location.deployedElements->forAll (de |&#xD;&#xA;  de.oclIsKindOf(Component)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.&#xD;&#xA;result = self.deployment->forAll (d | d.location..oclIsKindOf(ExecutionEnvironment))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
         eType="#//String" unsettable="true">
@@ -2629,14 +2939,24 @@
         <details key="documentation" value="An operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return'&#xD;&#xA;self.ownedParameter->select(par | par.direction = #return)->size() &lt;= 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="only_body_for_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A bodyCondition can only be specified for a query operation.&#xD;&#xA;bodyCondition->notEmpty() implies isQuery"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer"/>
     <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
@@ -2850,28 +3170,48 @@
         <details key="documentation" value="The parameters of the behavior must match the parameters of the implemented behavioral feature.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="feature_of_context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The implemented behavioral feature must be a feature (possibly inherited) of the context classifier of the behavior.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_realize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the implemented behavioral feature has been redefined in the ancestors of the owner of the behavior, then the behavior must realize the latest redefining behavioral feature.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="most_one_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="There may be at most one behavior for a given pairing of classifier (as owner of the behavior) and behavioral feature (as specification of the behavior).&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getContext" ordered="false" eType="#//BehavioredClassifier"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
@@ -2962,7 +3302,12 @@
         <details key="documentation" value="A passive class may not own receptions.&#xD;&#xA;not self.isActive implies self.ownedReception.isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getExtensions" ordered="false" upperBound="-1" eType="#//Extension"/>
     <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
@@ -3031,7 +3376,12 @@
         <details key="documentation" value="If a behavior is classifier behavior, it does not have a specification.&#xD;&#xA;self.classifierBehavior.notEmpty() implies self.specification.isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getImplementedInterfaces" ordered="false" upperBound="-1" eType="#//Interface">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3101,7 +3451,12 @@
         <details key="documentation" value="The visibility of all features owned by an interface must be public.&#xD;&#xA;self.feature->forAll(f | f.visibility = #public)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3173,7 +3528,12 @@
         <details key="documentation" value="A Reception can not be a query.&#xD;&#xA;not self.isQuery"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
         eType="#//Signal">
@@ -3214,7 +3574,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//StateMachine/classifier_context"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="protocol_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -3222,28 +3587,48 @@
         <details key="documentation" value="All transitions of a protocol state machine must be protocol transitions. (transitions as extended by the ProtocolStateMachines package)&#xD;&#xA;region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="entry_exit_do" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The states of a protocol state machine cannot have entry, exit, or do activity actions.&#xD;&#xA;region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies&#xA;(v.entry->isEmpty() and v.exit->isEmpty() and v.doActivity->isEmpty())))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deep_or_shallow_history" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Protocol state machines cannot have deep or shallow history pseudostates.&#xD;&#xA;region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Psuedostate) implies&#xA;((v.kind &lt;> #deepHistory) and (v.kind &lt;> #shallowHistory)))))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ports_connected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If two ports are connected, then the protocol state machine of the required interface (if defined) must be conformant to the protocol state machine of the provided interface (if defined).&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
         upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
@@ -3272,28 +3657,48 @@
         <details key="documentation" value="The classifier context of a state machine cannot be an interface.&#xD;&#xA;context->notEmpty() implies not context.oclIsKindOf(Interface)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The context classifier of the method state machine of a behavioral feature must be the classifier that owns the behavioral feature.&#xD;&#xA;specification->notEmpty() implies (context->notEmpty() and specification->featuringClassifier->exists (c | c = context))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="connection_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The connection points of a state machine are pseudostates of kind entry point or exit point.&#xD;&#xA;conectionPoint->forAll (c | c.kind = #entryPoint or c.kind = #exitPoint)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="method" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A state machine as the method for a behavioral feature cannot have entry/exit connection points.&#xD;&#xA;specification->notEmpty() implies connectionPoint->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="LCA" ordered="false" lowerBound="1" eType="#//Namespace">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3372,28 +3777,48 @@
         <details key="documentation" value="A region can have at most one initial vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #initial)->size() &lt;= 1&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deep_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A region can have at most one deep history vertex&#xD;&#xA;self.subvertex->select (v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #deepHistory)->size() &lt;= 1&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="shallow_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A region can have at most one shallow history vertex&#xD;&#xA;self.subvertex->select(v | v.oclIsKindOf(Pseudostate))->&#xA;select(p : Pseudostate | p.kind = #shallowHistory)->size() &lt;= 1&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.&#xD;&#xA;(stateMachine->notEmpty() implies state->isEmpty()) and (state->notEmpty() implies stateMachine->isEmpty())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3510,49 +3935,84 @@
         <details key="documentation" value="A fork segment must not have guards or triggers.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (guard->isEmpty() and trigger->isEmpty())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A join segment must not have guards or triggers.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (guard->isEmpty() and trigger->isEmpty())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="fork_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A fork segment must always target a state.&#xD;&#xA;(source.oclIsKindOf(Pseudostate) and source.kind = #fork) implies (target.oclIsKindOf(State))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A join segment must always originate from a state.&#xD;&#xA;(target.oclIsKindOf(Pseudostate) and target.kind = #join) implies (source.oclIsKindOf(State))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="outgoing_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Transitions outgoing pseudostates may not have a trigger.&#xD;&#xA;source.oclIsKindOf(Pseudostate) and&#xA;((source.kind &lt;> #junction) and (source.kind &lt;> #join) and (source.kind &lt;> #initial)) implies trigger->isEmpty()&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="initial_transition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An initial transition at the topmost level (region of a statemachine) either has no trigger or it has a trigger with the stereotype &lt;&lt;create>>.&#xD;&#xA;self.source.oclIsKindOf(Pseudostate) implies&#xA;(self.source.oclAsType(Pseudostate).kind = #initial) implies&#xA;(self.source.container = self.stateMachine.top) implies&#xA;((self.trigger->isEmpty) or&#xA;(self.trigger.stereotype.name = 'create'))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signatures_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In case of more than one trigger, the signatures of these must be compatible in case the parameters of the signal are assigned to local variables/attributes.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3671,28 +4131,48 @@
         <details key="documentation" value="The required interfaces of a port must be provided by elements to which the port is connected.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="port_aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Port.aggregation must be composite.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="port_destroyed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="When a port is destroyed, all connectors attached to this port will be destroyed also.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="default_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A defaultValue for port cannot be specified when the type of the Port is an Interface&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface"/>
     <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface"/>
@@ -3770,35 +4250,60 @@
         <details key="documentation" value="Only submachine states can have connection point references.&#xD;&#xA;isSubmachineState implies connection->notEmpty ( )"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="destinations_or_sources_of_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The connection point references used as destinations/sources of transitions associated with a submachine state must be defined as entry/exit points in the submachine state machine.&#xD;&#xA;self.isSubmachineState implies (self.connection->forAll (cp |&#xD;&#xA;cp.entry->forAll (p | p.statemachine = self.submachine) and&#xD;&#xA;cp.exit->forAll (p | p.statemachine = self.submachine)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="submachine_or_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A state is not allowed to have both a submachine and regions.&#xD;&#xA;isComposite implies not isSubmachineState"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="composite_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only composite states can have entry or exit pseudostates defined.&#xD;&#xA;connectionPoint->notEmpty() implies isComoposite"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="entry_or_exit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only entry or exit pseudostates can serve as connection points.&#xD;&#xA;connectionPoint->forAll(cp|cp.kind = #entry or cp.kind = #exit)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isSimple" ordered="false" lowerBound="1" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -3939,14 +4444,24 @@
         <details key="documentation" value="The entry Pseudostates must be Pseudostates with kind entryPoint.&#xD;&#xA;entry->notEmpty() implies entry->forAll(e | e.kind = #entryPoint)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="exit_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The exit Pseudostates must be Pseudostates with kind exitPoint.&#xD;&#xA;exit->notEmpty() implies exit->forAll(e | e.kind = #exitPoint)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
         upperBound="-1" eType="#//Pseudostate">
@@ -3977,63 +4492,108 @@
         <details key="documentation" value="An initial vertex can have at most one outgoing transition.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing->size &lt;= 1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="history_vertices" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="History vertices can have at most one outgoing transition.&#xD;&#xA;((self.kind = #deepHistory) or (self.kind = #shallowHistory)) implies&#xA;(self.outgoing->size &lt;= 1)&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In a complete statemachine, a join vertex must have at least two incoming transitions and exactly one outgoing transition.&#xD;&#xA;(self.kind = #join) implies&#xA;((self.outgoing->size = 1) and (self.incoming->size >= 2))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transitions_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="All transitions incoming a join vertex must originate in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #join) implies&#xA;  self.incoming->forAll (t1, t2 | t1&lt;>t2 implies&#xA;    (self.stateMachine.LCA(t1.source, t2.source).container.isOrthogonal))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="fork_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In a complete statemachine, a fork vertex must have at least two outgoing transitions and exactly one incoming transition.&#xD;&#xA;(self.kind = #fork) implies&#xA;((self.incoming->size = 1) and (self.outgoing->size >= 2))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transitions_outgoing" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.&#xD;&#xA;(self.kind = #fork) implies&#xA;  self.outgoing->forAll (t1, t2 | t1&lt;>t2 implies&#xA;    (self.stateMachine.LCA(t1.target, t2.target).container.isOrthogonal))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="junction_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In a complete statemachine, a junction vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #junction) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="choice_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In a complete statemachine, a choice vertex must have at least one incoming and one outgoing transition.&#xD;&#xA;(self.kind = #choice) implies&#xA;((self.incoming->size >= 1) and (self.outgoing->size >= 1))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="outgoing_from_initial" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The outgoing transition from and initial vertex may have a behavior, but not a trigger or a guard.&#xD;&#xA;(self.kind = #initial) implies (self.outgoing.guard->isEmpty()&#xD;&#xA;  and self.outgoing.trigger->isEmpty())"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
         eType="#//PseudostateKind" defaultValueLiteral="initial">
@@ -4153,7 +4713,12 @@
         <details key="documentation" value="The multiplicities on connected elements must be consistent.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4203,56 +4768,96 @@
         <details key="documentation" value="The types of the connectable elements that the ends of a connector are attached to must conform to the types of the association ends of the association that types the connector, if any.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The connectable elements attached to the ends of a connector must be compatible.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="roles" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be roles of the Classifier that owned the Connector, or they must be ports of such roles.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interfaces_ports" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A delegation connector must only be defined between used Interfaces or Ports of the same kind, e.g. between two provided Ports or between two required Ports.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interface_port_implements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a delegation connector is defined between a used Interface or Port and an internal Part Classifier, then that Classifier must have an 'implements' relationship to the Interface type of that Port.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interface_port_signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a delegation connector is defined between a source Interface or Port and a target Interface or Port, then the target Interface must support a signature compatible subset of Operations of the source Interface or Port.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="union_signature_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In a complete model, if a source Port has delegation connectors to a set of delegated target Ports, then the union of the Interfaces of these target Ports must be signature compatible with the Interface that types the source Port.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="assembly_connector" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An assembly connector must only be defined from a required Interface or Ports to a provided Interface or Port.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4319,14 +4924,24 @@
         <details key="documentation" value="The non-owned end of an Extension is typed by a Class.&#xD;&#xA;metaclassEnd()->notEmpty() and metaclass()->oclIsKindOf(Class)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="is_binary" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An Extension is binary, i.e., it has only two memberEnds.&#xD;&#xA;memberEnd->size() = 2"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getStereotypeEnd" ordered="false" eType="#//Property">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4407,14 +5022,24 @@
         <details key="documentation" value="The multiplicity of ExtensionEnd is 0..1 or 1.&#xD;&#xA;(self->lowerBound() = 0 or self->lowerBound() = 1) and self->upperBound() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The aggregation of an ExtensionEnd is composite.&#xD;&#xA;self.aggregation = #composite"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class">
@@ -4426,14 +5051,24 @@
         <details key="documentation" value="Stereotype names should not clash with keyword names for the extended model element.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="generalize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A Stereotype may only generalize or specialize another Stereotype.&#xD;&#xA;generalization.general->forAll(e |e.oclIsKindOf(Stereotype)) and generalization.specific->forAll(e | e.oclIsKindOf(Stereotype)) "/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createExtension" ordered="false" lowerBound="1" eType="#//Extension">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4526,14 +5161,24 @@
         <details key="documentation" value="An element imported as a metaclassReference is not specialized or generalized in a Profile.&#xD;&#xA;self.metaclassReference.importedElement->&#xD;&#xA;  select(c | c.oclIsKindOf(Classifier) and&#xD;&#xA;    (c.generalization.namespace = self or&#xD;&#xA;      (c.specialization.namespace = self) )->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="references_same_metamodel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.&#xD;&#xA;self.metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages())->&#xD;&#xA;  union(self.metaclassReference.importedElement.allOwningPackages() )->notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="create" ordered="false" lowerBound="1" eType="ecore:EClass ../../../plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EObject">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4632,21 +5277,36 @@
         <details key="documentation" value="The parameters in a parameter set must all be inputs or all be outputs of the same parameterized entity, and the parameter set is owned by that entity.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a behavior has input parameters that are in a parameter set, then any inputs that are not in a parameter set must be streaming. Same for output parameters.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="two_parameter_sets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Two parameter sets cannot have exactly the same set of parameters.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
         lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet">
@@ -4848,21 +5508,36 @@
         <details key="documentation" value="All the client elements of a roleBinding are in one classifier and all supplier elements of a roleBinding are in one collaboration and they are compatible.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="every_role" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Every role in the collaboration is bound within the collaboration use to a connectable element within the classifier or operation.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="connectors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The connectors in the classifier connect according to the connectors in the collaboration&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
         eType="#//Collaboration">
@@ -4899,28 +5574,48 @@
         <details key="documentation" value="A UseCase must have a name.&#xD;&#xA;self.name -> notEmpty ()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="UseCases can only be involved in binary Associations.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_association_to_use_case" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="UseCases can not have Associations to UseCases specifying the same subject.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_include_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A use case cannot include use cases that directly or indirectly include it.&#xD;&#xA;not self.allIncludedUseCases()->includes(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="allIncludedUseCases" ordered="false" upperBound="-1" eType="#//UseCase">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -4983,7 +5678,12 @@
         <details key="documentation" value="The extension points referenced by the extend relationship must belong to the use case that is being extended.&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
         lowerBound="1" eType="#//UseCase">
@@ -5022,7 +5722,12 @@
         <details key="documentation" value="An ExtensionPoint must have a name.&#xD;&#xA;self.name->notEmpty ()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
         lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extensionPoint">
@@ -5050,7 +5755,12 @@
         <details key="documentation" value="The inherited parameters are the parameters of the extended template signature.&#xD;&#xA;if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter endif"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getInheritedParameters" ordered="false" upperBound="-1" eType="#//TemplateParameter"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extendedSignature" ordered="false"
@@ -5094,7 +5804,12 @@
         <details key="documentation" value="If &quot;allowSubstitutable&quot; is true, then there must be a constrainingClassifier.&#xD;&#xA;allowSubstitutable implies constrainingClassifier->notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
@@ -5133,14 +5848,24 @@
         <details key="documentation" value="All the operands of a StringExpression must be LiteralStrings&#xD;&#xA;operand->forAll (op | op.oclIsKindOf (LiteralString))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subexpressions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to&#xA;define a collating sequence between operands and subexpressions).&#xA;&#xD;&#xA;if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" ordered="false"
         upperBound="-1" eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
@@ -5263,28 +5988,48 @@
         <details key="documentation" value="The defining feature of each slot is a structural feature (directly or inherited) of a classifier of the instance specification.&#xD;&#xA;slot->forAll(s | classifier->exists (c | c.allFeatures()->includes (s.definingFeature)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="One structural feature (including the same feature inherited from multiple classifiers) is the defining feature of at most one slot in an instance specification.&#xD;&#xA;classifier->forAll(c | (c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An InstanceSpecification can be a DeploymentTarget if it is the instance specification of a Node and functions as a part in the internal structure of an encompassing Node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_artifact" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An InstanceSpecification can be a DeployedArtifact if it is the instance specification of an Artifact.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
         upperBound="-1" eType="#//Classifier">
@@ -5538,14 +6283,24 @@
         <details key="documentation" value="A function behavior has at least one output parameter.&#xD;&#xA;self.ownedParameters->&#xD;&#xA;  select(p | p.direction=#out or p.direction=#inout or p.direction=#return)->size() >= 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="types_of_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The types of parameters are all data types, which may not nest anything but other datatypes.&#xD;&#xA;def: hasAllDataTypeAttributes(d : DataType) : Boolean =&#xD;&#xA;  d.ownedAttribute->forAll(a |&#xD;&#xA;    a.type.oclIsTypeOf(DataType) and&#xD;&#xA;      hasAllDataTypeAttributes(a.type))&#xD;&#xA;self.ownedParameters->forAll(p | p.type.notEmpty() and&#xD;&#xA;  p.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="OpaqueAction" eSuperTypes="#//Action">
@@ -5645,14 +6400,24 @@
         <details key="documentation" value="Activity nodes may be owned by at most one structured node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Activity nodes can only be owned by activities or groups.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
         eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/node">
@@ -5728,7 +6493,12 @@
         <details key="documentation" value="The edges owned by a structured node must have source and target nodes in the structured node, and vice versa.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
         upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
@@ -5767,21 +6537,36 @@
         <details key="documentation" value="All nodes and edges of the group must be in the same activity as the group.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="No node or edge in a group may be contained by its subgroups or its containing groups, transitively.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="group_owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Groups may only be owned by activities or groups.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
         upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
@@ -5834,21 +6619,36 @@
         <details key="documentation" value="The groups of an activity have no supergroups.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="activity_parameter_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The nodes of the activity must include one ActivityParameterNode for each parameter.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="autonomous" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An activity cannot be autonomous and have a classifier or behavioral feature context at the same time.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
         upperBound="-1" eType="#//StructuredActivityNode" changeable="false" volatile="true"
@@ -5915,7 +6715,12 @@
         <details key="documentation" value="A variable is owned by a StructuredNode or Activity, but not both.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isAccessibleBy" ordered="false" lowerBound="1" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -5947,21 +6752,36 @@
         <details key="documentation" value="The source and target of an edge must be in the same activity as the edge.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Activity edges may be owned only by activities or groups.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Activity edges may be owned by at most one structured node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
         lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing">
@@ -6041,28 +6861,48 @@
         <details key="documentation" value="A partition with isDimension = true may not be contained by another partition.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_part" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a partition represents a part, then all the non-external partitions in the same dimension and at the same level of nesting in that dimension must represent parts directly contained in the internal structure of the same classifier.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a non-external partition represents a classifier and is contained in another partition, then the containing partition must represent a classifier, and the classifier of the subpartition must be nested in the classifier represented by the containing partition, or be at the contained end of a strong composition association with the classifier represented by the containing partition.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_part_and_is_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a partition represents a part and is contained by another partition, then the part must be of a classifier represented by the containing partition, or of a classifier that is the type of a part representing the containing partition.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -6120,7 +6960,12 @@
         <details key="documentation" value="Interrupting edges of a region must have their source node in the region and their target node outside the region in the same activity containing the region.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
         eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
@@ -6145,28 +6990,48 @@
         <details key="documentation" value="The exception handler and its input object node are not the source or target of any edge.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The result pins of the exception handler body must correspond in number and types to the result pins of the protected node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The handler body has one input, and that input is the same as the exception input.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edge_source_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An edge that has a source in an exception handler structured node must have its target in the handler also, and vice versa.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"
         lowerBound="1" eType="#//ExecutableNode">
@@ -6203,28 +7068,48 @@
         <details key="documentation" value="All edges coming into or going out of object nodes must be object flow edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Object nodes are not unique typed elements&#xD;&#xA;isUnique = false"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selection_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If an object node has a selection behavior, then the ordering of the object node is ordered, and vice versa.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same type as the object node or a supertype of the type of object node. The output parameter must be the same or a subtype of the type of object node. The behavior cannot have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
         lowerBound="1" eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO">
@@ -6292,7 +7177,12 @@
         <details key="documentation" value="Output pins may have incoming edges only when they are on actions that are structured nodes, and these edges may not target a node contained by the structured node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Pin" eSuperTypes="#//ObjectNode #//MultiplicityElement">
@@ -6304,7 +7194,12 @@
         <details key="documentation" value="Control pins have a control type&#xD;&#xA;isControl implies isControlType"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControl" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -6322,7 +7217,12 @@
         <details key="documentation" value="Input pins may have outgoing edges only when they are on actions that are structured nodes, and these edges must target a node contained by the structured node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
@@ -6334,21 +7234,36 @@
         <details key="documentation" value="Only synchronous call actions can have result pins.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The number and order of argument pins must be the same as the number and order of parameters of the invoked behavior or behavioral feature. Pins are matched to parameters by order.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding parameter of the behavior or behavioral feature.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
@@ -6373,7 +7288,12 @@
         <details key="documentation" value="The onPort must be a port on the receiver object.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
         eType="#//InputPin" containment="true">
@@ -6398,14 +7318,24 @@
         <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -6432,7 +7362,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -6440,21 +7375,36 @@
         <details key="documentation" value="The number of argument pins and the number of owned parameters of the operation of type in and in-out must be equal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The number of result pins and the number of owned parameters of the operation of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_target_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the target pin must be the same as the type that owns the operation.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
         lowerBound="1" eType="#//Operation">
@@ -6481,7 +7431,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -6489,14 +7444,24 @@
         <details key="documentation" value="The number of argument pins and the number of parameters of the behavior of type in and in-out must be equal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The number of result pins and the number of parameters of the behavior of type return, out, and in-out must be equal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
         lowerBound="1" eType="#//Behavior">
@@ -6536,7 +7501,12 @@
         <details key="documentation" value="Control flows may not have object nodes at either end, except for object nodes with control type.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode">
@@ -6548,14 +7518,24 @@
         <details key="documentation" value="An initial node has no incoming edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="control_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Only control edges can have initial nodes as source.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
@@ -6567,35 +7547,60 @@
         <details key="documentation" value="Activity parameter nodes must have parameters from the containing activity.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of an activity parameter node is the same as the type of its parameter.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An activity parameter node may have all incoming edges or all outgoing edges, but it must not have both incoming and outgoing edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Activity parameter object nodes with no incoming edges and one or more outgoing edges must have a parameter with in or inout direction.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Activity parameter object nodes with no outgoing edges and one or more incoming edges must have a parameter with out, inout, or return direction.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
         lowerBound="1" eType="#//Parameter">
@@ -6613,14 +7618,24 @@
         <details key="documentation" value="The type of value specification must be compatible with the type of the value pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Value pins have no incoming edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//ValueSpecification" containment="true">
@@ -6638,49 +7653,84 @@
         <details key="documentation" value="If the sending MessageEvent and the receiving MessageEvent of the same Message are on the same Lifeline, the sending MessageEvent must be ordered before the receiving MessageEvent.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_refer_to" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_is_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In the case when the Message signature is an Operation, the arguments of the Message must correspond to the parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_is_signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Arguement is of the same Class or a specialization of that of the Attribute.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Arguments of a Message must only be:&#xA;i) attributes of the sending lifeline&#xA;ii) constants&#xA;iii) symbolic values (which are wildcard values representing any legal value)&#xA;iv) explicit parameters of the enclosing Interaction&#xA;v) attributes of the class owning the Interaction&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_cross_boundaries" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Messages cannot cross bounderies of CombinedFragments or their operands.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="occurrence_specifications" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the MessageEnds are both OccurrenceSpecifications then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getMessageKind" ordered="false" lowerBound="1" eType="#//MessageKind"/>
     <eOperations name="getSignature" ordered="false" eType="#//NamedElement"/>
@@ -6889,21 +7939,36 @@
         <details key="documentation" value="If two (or more) InteractionUses within one Interaction, refer to Interactions with 'common Lifelines,' those Lifelines must also appear in the Interaction with the InteractionUses. By common Lifelines we mean Lifelines with the same selector and represents associations.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selector_specified" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The selector for a Lifeline must only be specified if the referenced Part is multivalued.&#xD;&#xA;(self.selector->isEmpty() implies not self.represents.isMultivalued()) or&#xA;(not self.selector->isEmpty() implies self.represents.isMultivalued())&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.&#xD;&#xA;if (represents->notEmpty()) then&#xA;(if selector->notEmpty() then represents.isMultivalued() else not represents.isMultivalued())&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
         eType="#//ConnectableElement">
@@ -6947,21 +8012,36 @@
         <details key="documentation" value="PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="assume" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order.&#xD;&#xA;&#xD;&#xA;i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D&#xD;&#xA;ii) An InteractionUse covering L are matched with a global (i.e. covering all Lifelines) InteractionUse in D.&#xD;&#xA;iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="commutativity_of_decomposition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an&#xD;&#xA;InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition)&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InteractionUse" eSuperTypes="#//InteractionFragment">
@@ -6973,28 +8053,48 @@
         <details key="documentation" value="Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="all_lifelines" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The InteractionUse must cover all Lifelines of the enclosing Interaction which appear within the referred Interaction.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments_correspond_to_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The arguments of the InteractionUse must correspond to parameters of the referred Interaction&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments_are_constants" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
         lowerBound="1" eType="#//Interaction">
@@ -7025,14 +8125,24 @@
         <details key="documentation" value="The message leading to/from an actualGate of an InteractionUse must correspond to the message leading from/to the formalGate with the same name of the Interaction referenced by the InteractionUse.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="messages_combined_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The message leading to/from an (expression) Gate within a CombinedFragment must correspond to the message leading from/to the CombinedFragment on its outside.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
@@ -7093,14 +8203,24 @@
         <details key="documentation" value="The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="guard_contain_references" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
         eType="#//InteractionConstraint" containment="true">
@@ -7126,42 +8246,72 @@
         <details key="documentation" value="The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="global_data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The constraint may contain references to global data or write-once data.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If minint is specified, then the expression must evaluate to a non-negative integer.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maxint_positive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If maxint is specified, then the expression must evaluate to a positive integer.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maxint_greater_equal_minint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
         eType="#//ValueSpecification" containment="true">
@@ -7188,7 +8338,12 @@
         <details key="documentation" value="The startEvent and the finishEvent must be on the same Lifeline&#xD;&#xA;start.lifeline = finish.lifeline"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
         lowerBound="1" eType="#//OccurrenceSpecification">
@@ -7233,7 +8388,12 @@
         <details key="documentation" value="The Action referenced by the ActionExecutionSpecification, if any, must be owned by the Interaction owning the ActionExecutionOccurrence.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
         lowerBound="1" eType="#//Action">
@@ -7267,7 +8427,12 @@
         <details key="documentation" value="No othet OccurrenceSpecification may appear above an OccurrenceSpecification which references a CreationEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DestructionEvent" eSuperTypes="#//Event">
@@ -7279,7 +8444,12 @@
         <details key="documentation" value="No other OccurrenceSpecifications may appear below an OccurrenceSpecification which references a DestructionEvent on a given Lifeline in an InteractionOperand.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="SendOperationEvent" eSuperTypes="#//MessageEvent">
@@ -7365,14 +8535,24 @@
         <details key="documentation" value="An actor can only have associations to use cases, components and classes. Furthermore these associations must be binary.&#xD;&#xA;self.ownedAttribute->forAll ( a |&#xA;(a.association->notEmpty()) implies&#xA;((a.association.memberEnd.size() = 2) and&#xA;(a.opposite.class.oclIsKindOf(UseCase) or&#xA;(a.opposite.class.oclIsKindOf(Class) and not a.opposite.class.oclIsKindOf(Behavior))))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An actor must have a name.&#xD;&#xA;name->notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CallEvent" eSuperTypes="#//MessageEvent">
@@ -7423,14 +8603,24 @@
         <details key="documentation" value="A fork node has one incoming edge.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The edges coming into and out of a fork node must be either all object flows or all control flows.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode">
@@ -7447,7 +8637,12 @@
         <details key="documentation" value="A final node has no outgoing edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode">
@@ -7464,14 +8659,24 @@
         <details key="documentation" value="A merge node has one outgoing edge.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The edges coming into and out of a merge node must be either all object flows or all control flows.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
@@ -7483,21 +8688,36 @@
         <details key="documentation" value="A decision node has one incoming edge.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A decision input behavior has zero or one input parameter and one output parameter. Any input parameter must be the same as or a supertype of the type of object tokens coming along the incoming edge. The behavior cannot have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The edges coming into and out of a decision node must be either all object flows or all control flows.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
         eType="#//Behavior">
@@ -7625,7 +8845,12 @@
         <details key="documentation" value="The internal structure of a Node (if defined) consists solely of parts of type Node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
         upperBound="-1" eType="#//Node" containment="true">
@@ -7656,7 +8881,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//Association/association_ends"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
   </eClassifiers>
@@ -7669,28 +8899,48 @@
         <details key="documentation" value="If the interactionOperator is opt, loop, break, or neg there must be exactly one operand&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_and_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The InteractionConstraint with minint and maxint only apply when attached to an InteractionOperand where the interactionOperator is loop.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="break" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines within the enclosing InteractionFragment.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="consider_and_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The interaction operators 'consider' and 'ignore' can only be used for the CombineIgnoreFragment subtype of CombinedFragment&#xD;&#xA;((interactionOperator = #consider) or (interactionOperator = #ignore)) implies oclsisTypeOf(CombineIgnoreFragment)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
         lowerBound="1" eType="#//InteractionOperatorKind" defaultValueLiteral="seq">
@@ -7787,21 +9037,36 @@
         <details key="documentation" value="Continuations with the same name may only cover the same set of Lifelines (within one Classifier).&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="global" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Continuations are always global in the enclosing InteractionFragment e.g. it always covers all Lifelines covered by the enclosing InteractionFragment.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="first_or_last_interaction_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionFragment.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
@@ -7819,14 +9084,24 @@
         <details key="documentation" value="The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.&#xD;&#xA;(interactionOperator = #consider) or (interactionOperator = #ignore)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The NamedElements must be of a type of element that identifies a message (e.g., an Operation, Reception, or a Signal).&#xD;&#xA;message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Reception) or m.oclIsKindOf(Signal))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
         upperBound="-1" eType="#//NamedElement">
@@ -7844,28 +9119,48 @@
         <details key="documentation" value="The classifier cannot be abstract.&#xD;&#xA;not (self.classifier.isAbstract = #true)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="classifier_not_association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The classifier cannot be an association class&#xD;&#xA;not self.classifier.oclIsKindOf(AssociationClass)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result pin must be the same as the classifier of the action.&#xD;&#xA;self.result.type = self.classifier"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
         lowerBound="1" eType="#//Classifier">
@@ -7890,14 +9185,24 @@
         <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.target.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.target.type->size() = 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -7928,21 +9233,36 @@
         <details key="documentation" value="The input pins have no type.&#xD;&#xA;self.first.type->size() = 0&#xA;and self.second.type->size() = 0&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the input pins is 1..1.&#xD;&#xA;self.first.multiplicity.is(1,1)&#xA;and self.second.multiplicity.is(1,1)&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_is_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result is Boolean.&#xD;&#xA;self.result.type.oclIsTypeOf(Boolean)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -7975,28 +9295,48 @@
         <details key="documentation" value="The action must be contained in an behavior that has a host classifier.&#xD;&#xA;self.context->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the action is contained in an behavior that is acting as the body of a method, then the operation of the method must not be static.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result output pin is the host classifier.&#xD;&#xA;self.result.type = self.context"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -8016,35 +9356,60 @@
         <details key="documentation" value="The structural feature must not be static.&#xD;&#xA;self.structuralFeature.isStatic = #false"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the object input pin is the same as the classifier of the object passed on this pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the input pin must be 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Visibility of structural feature must allow access to the object performing the action.&#xD;&#xA;let host : Classifier = self.context in&#xA;self.structuralFeature.visibility = #public&#xA;or host = self.structuralFeature.featuringClassifier.type&#xA;or (self.structuralFeature.visibility = #protected and host.allSupertypes&#xA;->includes(self.structuralFeature.featuringClassifier.type)))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_featuring_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A structural feature has exactly one featuringClassifier.&#xD;&#xA;self.structuralFeature.featuringClassifier->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
         lowerBound="1" eType="#//StructuralFeature">
@@ -8071,7 +9436,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -8079,7 +9449,12 @@
         <details key="documentation" value="The type and ordering of the result output pin are the same as the type and ordering of the structural feature.&#xD;&#xA;self.result.type = self.structuralFeature.type&#xA;and self.result.ordering = self.structuralFeature.ordering&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -8101,7 +9476,12 @@
         </eAnnotations>
         <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -8109,7 +9489,12 @@
         <details key="documentation" value="The type input pin is the same as the classifier of the structural feature.&#xD;&#xA;self.value.type = self.structuralFeature.featuringClassifier"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -8134,7 +9519,12 @@
         <details key="documentation" value="Actions removing a value from ordered nonunique structural features must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the action has no removeAt input pin.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8159,7 +9549,12 @@
         <details key="documentation" value="Actions adding a value to ordered structural features must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.structuralFeature.isOrdered = #false&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin= insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8184,21 +9579,36 @@
         <details key="documentation" value="The association ends of the link end data must all be from the same association and include all and only the association ends of that association.&#xD;&#xA;self.endData->collect(end) = self.association()->collect(connection))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The association ends of the link end data must not be static.&#xD;&#xA;self.endData->forall(end.oclisKindOf(NavigableEnd) implies end.isStatic = #false"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The input pins of the action are the same as the pins of the link end data and insertion pins.&#xD;&#xA;self.input->asSet() =&#xA;let ledpins : Set = self.endData->collect(value) in&#xA;if self.oclIsKindOf(LinkEndCreationData)&#xA;then ledpins->union(self.endData.oclAsType(LinkEndCreationData).insertAt)&#xA;else ledpins&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association" ordered="false" lowerBound="1" eType="#//Association">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -8228,35 +9638,60 @@
         <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the end object input pin is the same as the type of the association end.&#xD;&#xA;self.value.type = self.end.type"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the end object input pin must be 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="qualifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The qualifiers include all and only the qualifiers of the association end.&#xD;&#xA;self.qualifier->collect(qualifier) = self.end.qualifier"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="end_object_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The end object input pin is not also a qualifier value input pin.&#xD;&#xA;self.value->excludesAll(self.qualifier.value)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         eType="#//InputPin">
@@ -8286,21 +9721,36 @@
         <details key="documentation" value="The qualifier attribute must be a qualifier of the association end of the link-end data.&#xD;&#xA;self.LinkEndData.end->collect(qualifier)->includes(self.qualifier)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the qualifier value input pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.value.type = self.qualifier.type"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the qualifier value input pin is &quot;1..1&quot;.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
         lowerBound="1" eType="#//Property">
@@ -8324,35 +9774,60 @@
         <details key="documentation" value="Exactly one link-end data specification (the 'open' end) must not have an end object input pin.&#xD;&#xA;self.endData->select(ed | ed.value->size() = 0)->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type and ordering of the result output pin are same as the type and ordering of the open association end.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;self.result.type = openend.type&#xA;and self.result.ordering = openend.ordering&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the open association end must be compatible with the multiplicity of the result output pin.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.multiplicity.compatibleWith(self.result.multiplicity)&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="navigable_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The open end must be navigable.&#xD;&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.isNavigable()&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Visibility of the open end must allow access to the object performing the action.&#xD;&#xA;let host : Classifier = self.context in&#xA;let openend : AssociationEnd = self.endData->select(ed | ed.value->size() = 0)->asSequence()->first().end in&#xA;openend.visibility = #public&#xA;or self.endData->exists(oed | not oed.end = openend&#xA;and (host = oed.end.participant&#xA;or (openend.visibility = #protected&#xA;and host.allSupertypes->includes(oed.end.participant))))&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -8371,14 +9846,24 @@
         <details key="documentation" value="LinkEndCreationData can only be end data for CreateLinkAction or one of its specializations.&#xD;&#xA;self.LinkAction.oclIsKindOf(CreateLinkAction)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Link end creation data for ordered association ends must have a single input pin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.end.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAts->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8411,7 +9896,12 @@
         <details key="documentation" value="The association cannot be an abstract classifier.&#xD;&#xA;self.association().isAbstract = #false"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction">
@@ -8423,7 +9913,12 @@
         <details key="documentation" value="The visibility of at least one end must allow access to the class using the action.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction">
@@ -8449,14 +9944,24 @@
         <details key="documentation" value="LinkEndDestructionData can only be end data for DestroyLinkAction or one of its specializations.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="LinkEndDestructionData for ordered nonunique association ends must have a single destroyAt input pin if isDestroyDuplicates is false. It must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no input pin for the removal position.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8480,14 +9985,24 @@
         <details key="documentation" value="The type of the input pin must be the same as the type of at least one of the association ends of the association.&#xD;&#xA;self.association->exists(end.type = self.object.type)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -8512,14 +10027,24 @@
         <details key="documentation" value="The number and order of argument pins must be the same as the number and order of attributes in the signal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type, ordering, and multiplicity of an argument pin must be the same as the corresponding attribute of the signal.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
         lowerBound="1" eType="#//Signal">
@@ -8556,14 +10081,24 @@
         <details key="documentation" value="The type of value specification must be compatible with the type of the result pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the result pin is 1..1&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//ValueSpecification" containment="true">
@@ -8739,7 +10274,12 @@
         <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (constrainedElement->size() =2)&#xD;&#xA;  then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
         upperBound="2" eType="#//Boolean" defaultValueLiteral="true">
@@ -8774,7 +10314,12 @@
         <details key="documentation" value="The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.&#xD;&#xA;if (event->size() = 2)&#xD;&#xA;  then (firstEvent->size() = 2) else (firstEvent->size() = 0)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
         lowerBound="1" upperBound="2" eType="#//NamedElement">
@@ -8798,42 +10343,72 @@
         <details key="documentation" value="A final state cannot have any outgoing transitions.&#xD;&#xA;self.outgoing->size() = 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A final state cannot have regions.&#xD;&#xA;self.region->size() = 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_reference_submachine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A final state cannot reference a submachine.&#xD;&#xA;self.submachine->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_entry_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A final state has no entry behavior.&#xD;&#xA;self.entry->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_exit_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A final state has no exit behavior.&#xD;&#xA;self.exit->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_state_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A final state has no state (doActivity) behavior.&#xD;&#xA;self.doActivity->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TimeEvent" eSuperTypes="#//Event">
@@ -8845,14 +10420,24 @@
         <details key="documentation" value="The ValueSpecification when must return a non-negative Integer.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="starting_time" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The starting time for a relative time event may only be omitted for a time event that is the trigger of a state machine.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8877,7 +10462,12 @@
         <details key="documentation" value="The action must be in the scope of the variable.&#xD;&#xA;self.variable.isAccessibleBy(self)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
         lowerBound="1" eType="#//Variable">
@@ -8895,14 +10485,24 @@
         <details key="documentation" value="The type and ordering of the result output pin of a read-variable action are the same as the type and ordering of the variable.&#xD;&#xA;self.result.type =self.variable.type&#xA;and self.result.ordering = self.variable.ordering&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the variable must be compatible with the multiplicity of the output pin.&#xD;&#xA;self.variable.multiplicity.compatibleWith(self.result.multiplicity)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -8922,14 +10522,24 @@
         <details key="documentation" value="The type input pin is the same as the type of the variable.&#xD;&#xA;self.value.type = self.variable.type"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.value.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -8953,7 +10563,12 @@
         <details key="documentation" value="Actions adding values to ordered variables must have a single input pin for the insertion point with type UnlimtedNatural and multiplicity of 1..1, otherwise the action has no input pin for the insertion point.&#xD;&#xA;let insertAtPins : Collection = self.insertAt in&#xA;if self.variable.ordering = #unordered&#xA;then insertAtPins->size() = 0&#xA;else let insertAtPin : InputPin = insertAt->asSequence()->first() in&#xA;insertAtPins->size() = 1&#xA;and insertAtPin.type = UnlimitedNatural&#xA;and insertAtPin.multiplicity.is(1,1))&#xA;endif&#xA;"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -8978,7 +10593,12 @@
         <details key="documentation" value="Actions removing a value from ordered nonunique variables must have a single removeAt input pin if isRemoveDuplicates is false. It must be of type UnlimitedNatural with multiplicity of 1..1, otherwise the action has no removeAt input pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9015,21 +10635,36 @@
         <details key="documentation" value="The fromAction of an action input pin must have exactly one output pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The fromAction of an action input pin must only have action input pins as input pins.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_control_or_data_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The fromAction of an action input pin cannot have control or data flows coming into or out of it or its pins.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="fromAction" ordered="false"
         lowerBound="1" eType="#//Action" containment="true">
@@ -9048,21 +10683,36 @@
         <details key="documentation" value="The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any.The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.&#xD;&#xA;(self.represented->select(p | p->oclIsKindOf(InformationItem))->forAll(p |&#xD;&#xA;  p.informationFlow.source->forAll(q | self.informationFlow.source->include(q)) and&#xD;&#xA;    p.informationFlow.target->forAll(q | self.informationFlow.target->include(q)))) and&#xD;&#xA;      (self.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;&#xA;        oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_no" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An informationItem has no feature, no generalization, and no associations.&#xD;&#xA;self.generalization->isEmpty() and self.feature->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_instantiable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="It is not instantiable.&#xD;&#xA;isAbstract"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
         upperBound="-1" eType="#//Classifier">
@@ -9080,21 +10730,36 @@
         <details key="documentation" value="The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).&#xD;&#xA;(self.source->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA;  oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA;  oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA;  oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA;  oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification))) and&#xD;&#xA;    (self.target->forAll(p | p->oclIsKindOf(Actor) or oclIsKindOf(Node) or&#xD;&#xA;      oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or oclIsKindOf(Class) or&#xD;&#xA;      oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or&#xD;&#xA;      oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or&#xD;&#xA;      oclIsKindOf(ActivityPartition) or oclIsKindOf(InstanceSpecification)))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_conform" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The sources and targets of the information flow must conform with the sources and targets or conversely the targets and sources of the realization relationships.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="convey_classifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An information flow can only convey classifiers that are allowed to represent an information item.&#xD;&#xA;&#xD;&#xA;self.conveyed.represented->forAll(p | p->oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;&#xA;  or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
         upperBound="-1" eType="#//Relationship">
@@ -9150,14 +10815,24 @@
         <details key="documentation" value="The type of the result output pin is the classifier.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the result output pin is 0..*.&#xD;&#xA;self.result.multiplicity.is(0,#null)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -9182,21 +10857,36 @@
         <details key="documentation" value="None of the new classifiers may be abstract.&#xD;&#xA;not self.newClassifier->exists(isAbstract = true)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.argument.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.argument.type->size() = 0"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9233,28 +10923,48 @@
         <details key="documentation" value="The multiplicity of the input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The input pin has no type.&#xD;&#xA;self.object.type->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="boolean_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the output pin is Boolean&#xD;&#xA;self.result.type = Boolean"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9292,14 +11002,24 @@
         <details key="documentation" value="The multiplicity of the input pin is 1..1&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_has_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the input pin has a type, then the type must have a classifier behavior.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -9318,49 +11038,84 @@
         <details key="documentation" value="The property must be an association end.&#xD;&#xA;self.end.association.notEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The association of the association end must be an association class.&#xD;&#xA;self.end.Association.oclIsKindOf(AssociationClass)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.end.association.memberEnd->forall(e | not e.isStatic)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the object input pin is the association class that owns the association end.&#xD;&#xA;self.object.type = self.end.association"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result output pin is the same as the type of the association end.&#xD;&#xA;self.result.type = self.end.type"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -9392,56 +11147,96 @@
         <details key="documentation" value="The qualifier attribute must be a qualifier attribute of an association end.&#xD;&#xA;self.qualifier.associationEnd->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The association of the association end of the qualifier attribute must be an association class.&#xD;&#xA;self.qualifier.associationEnd.association.oclIsKindOf(AssociationClass)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The ends of the association must not be static.&#xD;&#xA;self.qualifier.associationEnd.association.memberEnd->forall(e | not e.isStatic)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the object input pin is the association class that owns the association end that has the given qualifier attribute.&#xD;&#xA;self.object.type = self.qualifier.associationEnd.association"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the qualifier attribute is 1..1.&#xD;&#xA;self.qualifier.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the object input pin is 1..1.&#xD;&#xA;self.object.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result output pin is the same as the type of the qualifier attribute.&#xD;&#xA;self.result.type = self.qualifier.type"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the result output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -9473,21 +11268,36 @@
         <details key="documentation" value="The association must be an association class.&#xD;&#xA;self.association().oclIsKindOf(Class)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the result pin must be the same as the association of the action.&#xD;&#xA;self.result.type = self.association()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the output pin is 1..1.&#xD;&#xA;self.result.multiplicity.is(1,1)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -9506,28 +11316,48 @@
         <details key="documentation" value="AcceptEventActions may have no input pins.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="There are no output pins if the trigger events are only ChangeEvents, or if they are only CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="trigger_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If the trigger events are all TimeEvents, there is exactly one output pin.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshall_signal_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If isUnmarshall is true, there must be exactly one trigger for events of type SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnmarshall" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9558,21 +11388,36 @@
         <details key="documentation" value="The result pins must match the in and inout parameters of the operation specified by the trigger event in number, type, and order.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="trigger_call_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The trigger event must be a CallEvent.&#xD;&#xA;trigger.event.oclIsKindOf(CallEvent)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="isUnmrashall must be true for an AcceptCallAction.&#xD;&#xA;isUnmarshall = true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -9591,14 +11436,24 @@
         <details key="documentation" value="The reply value pins must match the return, out, and inout parameters of the operation on the event on the trigger in number, type, and order.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="event_on_reply_to_call_trigger" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The event on replyToCall trigger must be a CallEvent replyToCallEvent.oclIsKindOf(CallEvent)&#xD;&#xA;replyToCallEvent.oclIsKindOf(CallEvent)"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
         lowerBound="1" eType="#//Trigger">
@@ -9630,49 +11485,84 @@
         <details key="documentation" value="The type of the object input pin must be the same as the unmarshall classifier.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of the object input pin is 1..1&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="number_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The number of result output pins must be the same as the number of structural features of the unmarshall classifier.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type and ordering of each result output pin must be the same as the corresponding structural feature of the unmarshall classifier.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding structural features of the unmarshall classifier.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The unmarshall classifier must have at least one structural feature.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshallType_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="unmarshallType must be a Classifier with ordered attributes&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" upperBound="-1" eType="#//OutputPin" containment="true">
@@ -9704,21 +11594,36 @@
         <details key="documentation" value="The type of the input must be a collection.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="output_types_are_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The type of the output must be compatible with the type of the output of the reducer behavior.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="reducer_inputs_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The reducer behavior must have two input parameters and one output parameter, of types compatible with the types of elements of the input collection.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="reducer" ordered="false"
         lowerBound="1" eType="#//Behavior">
@@ -9756,14 +11661,24 @@
         <details key="documentation" value="A join node has one outgoing edge.&#xD;&#xA;self.outgoing->size() = 1"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="incoming_object_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a join node has an incoming object flow, it must have an outgoing object flow, otherwise, it must have an outgoing control flow.&#xD;&#xA;(self.incoming.select(e | e.isTypeOf(ObjectFlow)->notEmpty() implies&#xD;&#xA;  self.outgoing.isTypeOf(ObjectFlow)) and&#xD;&#xA;    (self.incoming.select(e | e.isTypeOf(ObjectFlow)->empty() implies&#xD;&#xA;      self.outgoing.isTypeOf(ControlFlow))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true">
@@ -9793,56 +11708,96 @@
         <details key="documentation" value="Object flows may not have actions at either end.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Object nodes connected by an object flow, with optionally intervening control nodes, must have compatible types. In particular, the downstream object node type must be the same or a supertype of the upstream object node type.&#xD;&#xA;&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_upper_bounds" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="Object nodes connected by an object flow, with optionally intervening control nodes, must have the same upper bounds.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An edge with constant weight may not target an object node, or lead to an object node downstream with no intervening actions, that has an upper bound less than the weight.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transformation_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A transformation behavior has one input parameter and one output parameter. The input parameter must be the same as or a supertype of the type of object token coming from the source end. The output parameter must be the same or a subtype of the type of object token expected downstream. The behavior cannot have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selection_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="An object flow may have a selection behavior only if has an object node as a source.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_and_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A selection behavior has one input parameter and one output parameter. The input parameter must be a bag of elements of the same as or a supertype of the type of source object node. The output parameter must be the same or a subtype of the type of source object node. The behavior cannot have side effects.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="is_multicast_or_is_multireceive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="isMulticast and isMultireceive cannot both be true.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9878,7 +11833,12 @@
         <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -9916,14 +11876,24 @@
         <details key="documentation" value="The decider output pin must be for the test body or a node contained by the test body as a structured node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the clause.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
         eType="#//ExecutableNode">
@@ -9971,21 +11941,36 @@
         <details key="documentation" value="Loop variable inputs must not have outgoing edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The bodyOutput pins are output pins on actions in the body of the loop node.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="The result output pins have no incoming edges.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false">
@@ -10070,7 +12055,12 @@
         <details key="documentation" value="An ExpansionRegion must have one or more argument ExpansionNodes and zero or more result ExpansionNodes.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" lowerBound="1"
         eType="#//ExpansionKind" defaultValueLiteral="iterative">
@@ -10120,21 +12110,36 @@
         <details key="documentation" value="A protocol transition always belongs to a protocol state machine.&#xD;&#xA;container.belongsToPSM()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="associated_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="A protocol transition never has associated actions.&#xD;&#xA;effect->isEmpty()"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="refers_to_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
         <details key="documentation" value="If a protocol transition refers to an operation (i. e. has a call trigger corresponding to an operation), then that operation should apply to the context classifier of the state machine of the protocol transition.&#xD;&#xA;true"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
         eType="#//Constraint">
@@ -10167,7 +12172,12 @@
         <details key="documentation" value="An AssociationClass cannot be defined between itself and something else.&#xD;&#xA;self.endType->excludes(self) and self.endType>collect(et|et.allparents()->excludes(self))"/>
       </eAnnotations>
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="allConnections" ordered="false" lowerBound="2" upperBound="-1"
         eType="#//Property">
diff --git a/plugins/org.eclipse.uml2.uml/model/UML.genmodel b/plugins/org.eclipse.uml2.uml/model/UML.genmodel
index 06e2179..b385657 100644
--- a/plugins/org.eclipse.uml2.uml/model/UML.genmodel
+++ b/plugins/org.eclipse.uml2.uml/model/UML.genmodel
@@ -7,7 +7,8 @@
     editPluginClass="org.eclipse.uml2.uml.edit.UMLEditPlugin" editorPluginClass="org.eclipse.uml2.uml.editor.UMLEditorPlugin"
     nonNLSMarkers="true" rootExtendsInterface="" codeFormatting="true" booleanFlagsField="eFlags"
     booleanFlagsReservedBits="8" importerID="org.eclipse.uml2.uml.ecore.importer"
-    containmentProxies="true" minimalReflectiveMethods="false" usedGenPackages="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
+    containmentProxies="true" minimalReflectiveMethods="false" complianceLevel="5.0"
+    usedGenPackages="../../../plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
     factoryMethods="true" pluralizedGetters="true" cacheAdapterSupport="true" invariantPrefix="validate">
   <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
     <details key="DUPLICATE_FEATURES" value="PROCESS"/>
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptCallAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptCallAction.java
index ca0b7c7..8c4bf80 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptCallAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptCallAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptCallAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: AcceptCallAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -86,7 +86,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateResultPins(DiagnosticChain diagnostics, Map context);
+	boolean validateResultPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,7 +99,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTriggerCallEvent(DiagnosticChain diagnostics, Map context);
+	boolean validateTriggerCallEvent(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -110,6 +112,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateUnmarshall(DiagnosticChain diagnostics, Map context);
+	boolean validateUnmarshall(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // AcceptCallAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptEventAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptEventAction.java
index ba207a1..d9025f0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptEventAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AcceptEventAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptEventAction.java,v 1.10 2006/05/26 16:34:03 khussey Exp $
+ * $Id: AcceptEventAction.java,v 1.11 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -82,7 +82,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getResults();
+	EList<OutputPin> getResults();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Result</b></em>' containment reference list.
@@ -149,7 +149,7 @@
 	 * @model type="org.eclipse.uml2.uml.Trigger" containment="true" resolveProxies="true" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getTriggers();
+	EList<Trigger> getTriggers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Trigger}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Trigger</b></em>' containment reference list.
@@ -196,7 +196,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoInputPins(DiagnosticChain diagnostics, Map context);
+	boolean validateNoInputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -208,7 +209,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoOutputPins(DiagnosticChain diagnostics, Map context);
+	boolean validateNoOutputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -220,7 +222,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTriggerEvents(DiagnosticChain diagnostics, Map context);
+	boolean validateTriggerEvents(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -233,6 +236,6 @@
 	 * @generated
 	 */
 	boolean validateUnmarshallSignalEvents(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // AcceptEventAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Action.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Action.java
index 2485f37..bae01fa 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Action.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Action.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Action.java,v 1.11 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Action.java,v 1.12 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" transient="true" changeable="false" volatile="true" derived="true"
 	 * @generated
 	 */
-	EList getOutputs();
+	EList<OutputPin> getOutputs();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.OutputPin} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Output</b></em>' reference list.
@@ -98,7 +98,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" transient="true" changeable="false" volatile="true" derived="true"
 	 * @generated
 	 */
-	EList getInputs();
+	EList<InputPin> getInputs();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.InputPin} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Input</b></em>' reference list.
@@ -153,7 +153,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getLocalPreconditions();
+	EList<Constraint> getLocalPreconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Local Precondition</b></em>' containment reference list.
@@ -217,7 +217,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getLocalPostconditions();
+	EList<Constraint> getLocalPostconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Local Postcondition</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionExecutionSpecification.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionExecutionSpecification.java
index 3a5b769..768b9c2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionExecutionSpecification.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionExecutionSpecification.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionExecutionSpecification.java,v 1.2 2006/05/12 20:38:10 khussey Exp $
+ * $Id: ActionExecutionSpecification.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,6 +74,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateActionReferenced(DiagnosticChain diagnostics, Map context);
+	boolean validateActionReferenced(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActionExecutionSpecification
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionInputPin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionInputPin.java
index 0eaadd6..af74d96 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionInputPin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActionInputPin.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionInputPin.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ActionInputPin.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -88,7 +88,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneOutputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateOneOutputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -100,7 +101,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,6 +114,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoControlOrDataFlow(DiagnosticChain diagnostics, Map context);
+	boolean validateNoControlOrDataFlow(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActionInputPin
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Activity.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Activity.java
index e262650..ae3deed 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Activity.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Activity.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Activity.java,v 1.14 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Activity.java,v 1.15 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -91,7 +91,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityGroup" opposite="inActivity" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getGroups();
+	EList<ActivityGroup> getGroups();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityGroup} and appends it to the '<em><b>Group</b></em>' containment reference list.
@@ -143,7 +143,7 @@
 	 * @model type="org.eclipse.uml2.uml.StructuredActivityNode" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getStructuredNodes();
+	EList<StructuredActivityNode> getStructuredNodes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.StructuredActivityNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Structured Node</b></em>' reference list.
@@ -185,7 +185,7 @@
 	 * @model type="org.eclipse.uml2.uml.Variable" opposite="activityScope" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getVariables();
+	EList<Variable> getVariables();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Variable}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Variable</b></em>' containment reference list.
@@ -241,7 +241,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" opposite="activity" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getNodes();
+	EList<ActivityNode> getNodes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityNode}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Node</b></em>' containment reference list.
@@ -296,7 +296,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="activity" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getEdges();
+	EList<ActivityEdge> getEdges();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityEdge}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Edge</b></em>' containment reference list.
@@ -349,7 +349,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityPartition" ordered="false"
 	 * @generated
 	 */
-	EList getPartitions();
+	EList<ActivityPartition> getPartitions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityPartition}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Partition</b></em>' reference list.
@@ -397,7 +397,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoSupergroups(DiagnosticChain diagnostics, Map context);
+	boolean validateNoSupergroups(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -410,7 +411,7 @@
 	 * @generated
 	 */
 	boolean validateActivityParameterNode(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -422,6 +423,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAutonomous(DiagnosticChain diagnostics, Map context);
+	boolean validateAutonomous(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Activity
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityEdge.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityEdge.java
index 3671e79..25464bd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityEdge.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityEdge.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityEdge.java,v 1.13 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ActivityEdge.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -95,7 +95,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityGroup" opposite="containedEdge" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getInGroups();
+	EList<ActivityGroup> getInGroups();
 
 	/**
 	 * Returns the value of the '<em><b>In Partition</b></em>' reference list.
@@ -112,7 +112,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityPartition" opposite="edge" ordered="false"
 	 * @generated
 	 */
-	EList getInPartitions();
+	EList<ActivityPartition> getInPartitions();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityPartition} with the specified '<em><b>Name</b></em>' from the '<em><b>In Partition</b></em>' reference list.
@@ -204,7 +204,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedEdges();
+	EList<ActivityEdge> getRedefinedEdges();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Edge</b></em>' reference list.
@@ -370,7 +370,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSourceAndTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateSourceAndTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -382,7 +383,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwned(DiagnosticChain diagnostics, Map context);
+	boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -394,6 +396,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateStructuredNode(DiagnosticChain diagnostics, Map context);
+	boolean validateStructuredNode(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActivityEdge
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityGroup.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityGroup.java
index 1b52957..fa6aca7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityGroup.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityGroup.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityGroup.java,v 1.11 2006/05/24 20:54:28 khussey Exp $
+ * $Id: ActivityGroup.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -62,7 +62,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityGroup" opposite="superGroup" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getSubgroups();
+	EList<ActivityGroup> getSubgroups();
 
 	/**
 	 * Returns the value of the '<em><b>Super Group</b></em>' reference.
@@ -95,7 +95,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" opposite="inGroup" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getContainedNodes();
+	EList<ActivityNode> getContainedNodes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Contained Node</b></em>' reference list.
@@ -163,7 +163,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="inGroup" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getContainedEdges();
+	EList<ActivityEdge> getContainedEdges();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Contained Edge</b></em>' reference list.
@@ -199,7 +199,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNodesAndEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNodesAndEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -211,7 +212,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotContained(DiagnosticChain diagnostics, Map context);
+	boolean validateNotContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -223,6 +225,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGroupOwned(DiagnosticChain diagnostics, Map context);
+	boolean validateGroupOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActivityGroup
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityNode.java
index a883d7c..8f50050 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityNode.java,v 1.10 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ActivityNode.java,v 1.11 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -65,7 +65,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="source" ordered="false"
 	 * @generated
 	 */
-	EList getOutgoings();
+	EList<ActivityEdge> getOutgoings();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Outgoing</b></em>' reference list.
@@ -106,7 +106,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityGroup" opposite="containedNode" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getInGroups();
+	EList<ActivityGroup> getInGroups();
 
 	/**
 	 * Returns the value of the '<em><b>In Partition</b></em>' reference list.
@@ -123,7 +123,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityPartition" opposite="node" ordered="false"
 	 * @generated
 	 */
-	EList getInPartitions();
+	EList<ActivityPartition> getInPartitions();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityPartition} with the specified '<em><b>Name</b></em>' from the '<em><b>In Partition</b></em>' reference list.
@@ -217,7 +217,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="target" ordered="false"
 	 * @generated
 	 */
-	EList getIncomings();
+	EList<ActivityEdge> getIncomings();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Incoming</b></em>' reference list.
@@ -258,7 +258,7 @@
 	 * @model type="org.eclipse.uml2.uml.InterruptibleActivityRegion" opposite="node" ordered="false"
 	 * @generated
 	 */
-	EList getInInterruptibleRegions();
+	EList<InterruptibleActivityRegion> getInInterruptibleRegions();
 
 	/**
 	 * Returns the value of the '<em><b>Redefined Node</b></em>' reference list.
@@ -273,7 +273,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedNodes();
+	EList<ActivityNode> getRedefinedNodes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Node</b></em>' reference list.
@@ -309,7 +309,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwned(DiagnosticChain diagnostics, Map context);
+	boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -321,6 +322,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwnedStructuredNode(DiagnosticChain diagnostics, Map context);
+	boolean validateOwnedStructuredNode(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActivityNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityParameterNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityParameterNode.java
index 673a542..2a8aabd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityParameterNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityParameterNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityParameterNode.java,v 1.4 2006/05/12 20:38:10 khussey Exp $
+ * $Id: ActivityParameterNode.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,7 +74,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHasParameters(DiagnosticChain diagnostics, Map context);
+	boolean validateHasParameters(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -86,7 +87,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,7 +100,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -111,7 +114,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoIncomingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -124,6 +128,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoOutgoingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoOutgoingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ActivityParameterNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityPartition.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityPartition.java
index 6d96059..27642fb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityPartition.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ActivityPartition.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityPartition.java,v 1.15 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ActivityPartition.java,v 1.16 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -116,7 +116,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="inPartition" ordered="false"
 	 * @generated
 	 */
-	EList getEdges();
+	EList<ActivityEdge> getEdges();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Edge</b></em>' reference list.
@@ -157,7 +157,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" opposite="inPartition" ordered="false"
 	 * @generated
 	 */
-	EList getNodes();
+	EList<ActivityNode> getNodes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Node</b></em>' reference list.
@@ -198,7 +198,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityPartition" opposite="superPartition" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getSubpartitions();
+	EList<ActivityPartition> getSubpartitions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityPartition}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Subpartition</b></em>' containment reference list.
@@ -299,7 +299,7 @@
 	 * @generated
 	 */
 	boolean validateDimensionNotContained(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -311,7 +311,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateRepresentsPart(DiagnosticChain diagnostics, Map context);
+	boolean validateRepresentsPart(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -324,7 +325,7 @@
 	 * @generated
 	 */
 	boolean validateRepresentsClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -337,6 +338,6 @@
 	 * @generated
 	 */
 	boolean validateRepresentsPartAndIsContained(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ActivityPartition
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Actor.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Actor.java
index 7da9d93..2b2be51 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Actor.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Actor.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Actor.java,v 1.4 2006/05/12 20:38:08 khussey Exp $
+ * $Id: Actor.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -48,7 +48,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssociations(DiagnosticChain diagnostics, Map context);
+	boolean validateAssociations(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -60,6 +61,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustHaveName(DiagnosticChain diagnostics, Map context);
+	boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Actor
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddStructuralFeatureValueAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddStructuralFeatureValueAction.java
index e8b832c..e2bf284 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddStructuralFeatureValueAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddStructuralFeatureValueAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddStructuralFeatureValueAction.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: AddStructuralFeatureValueAction.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -137,6 +137,6 @@
 	 * @generated
 	 */
 	boolean validateUnlimitedNaturalAndMultiplicity(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 } // AddStructuralFeatureValueAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddVariableValueAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddVariableValueAction.java
index f35aff7..3cb356d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddVariableValueAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AddVariableValueAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddVariableValueAction.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: AddVariableValueAction.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -136,6 +136,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSingleInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateSingleInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // AddVariableValueAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AggregationKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AggregationKind.java
index 025f9e6..fb7ed26 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AggregationKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AggregationKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AggregationKind.java,v 1.3 2006/05/12 20:38:04 khussey Exp $
+ * $Id: AggregationKind.java,v 1.4 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,37 @@
  * @model
  * @generated
  */
-public final class AggregationKind
-		extends AbstractEnumerator {
+public enum AggregationKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @generated
+	 * @ordered
+	 */
+	NONE_LITERAL(0, "none", "none"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Shared</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SHARED
+	 * @generated
+	 * @ordered
+	 */
+	SHARED_LITERAL(1, "shared", "shared"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Composite</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COMPOSITE
+	 * @generated
+	 * @ordered
+	 */
+	COMPOSITE_LITERAL(2, "composite", "composite"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>None</b></em>' literal value.
@@ -76,39 +105,6 @@
 	public static final int COMPOSITE = 2;
 
 	/**
-	 * The '<em><b>None</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NONE
-	 * @generated
-	 * @ordered
-	 */
-	public static final AggregationKind NONE_LITERAL = new AggregationKind(
-		NONE, "none", "none"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Shared</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SHARED
-	 * @generated
-	 * @ordered
-	 */
-	public static final AggregationKind SHARED_LITERAL = new AggregationKind(
-		SHARED, "shared", "shared"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Composite</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #COMPOSITE
-	 * @generated
-	 * @ordered
-	 */
-	public static final AggregationKind COMPOSITE_LITERAL = new AggregationKind(
-		COMPOSITE, "composite", "composite"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Aggregation Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -123,8 +119,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<AggregationKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Aggregation Kind</b></em>' literal with the specified literal value.
@@ -177,13 +173,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private AggregationKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //AggregationKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Artifact.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Artifact.java
index df6795b..f0c694c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Artifact.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Artifact.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Artifact.java,v 1.10 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Artifact.java,v 1.11 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -111,7 +111,7 @@
 	 * @model type="org.eclipse.uml2.uml.Artifact" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getNestedArtifacts();
+	EList<Artifact> getNestedArtifacts();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Artifact}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Artifact</b></em>' containment reference list.
@@ -175,7 +175,7 @@
 	 * @model type="org.eclipse.uml2.uml.Manifestation" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getManifestations();
+	EList<Manifestation> getManifestations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Manifestation}, with the specified '<em><b>Name</b></em>', and '<em><b>Utilized Element</b></em>', and appends it to the '<em><b>Manifestation</b></em>' containment reference list.
@@ -232,7 +232,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedOperations();
+	EList<Operation> getOwnedOperations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Operation}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -245,8 +245,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation createOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -259,8 +259,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -275,8 +275,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -294,7 +294,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedAttributes();
+	EList<Property> getOwnedAttributes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Attribute</b></em>' containment reference list.
@@ -358,8 +358,8 @@
 	 * @model required="true" ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" returnTypeOrdered="false"
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType);
+	Operation createOwnedOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Association.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Association.java
index 05d4b2c..77e5545 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Association.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Association.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Association.java,v 1.12 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Association.java,v 1.13 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -86,7 +86,7 @@
 	 * @model type="org.eclipse.uml2.uml.Type" required="true" transient="true" changeable="false" volatile="true" derived="true"
 	 * @generated
 	 */
-	EList getEndTypes();
+	EList<Type> getEndTypes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Type} with the specified '<em><b>Name</b></em>' from the '<em><b>End Type</b></em>' reference list.
@@ -127,7 +127,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" opposite="association" lower="2"
 	 * @generated
 	 */
-	EList getMemberEnds();
+	EList<Property> getMemberEnds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Member End</b></em>' reference list.
@@ -169,7 +169,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" ordered="false"
 	 * @generated
 	 */
-	EList getNavigableOwnedEnds();
+	EList<Property> getNavigableOwnedEnds();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Navigable Owned End</b></em>' reference list.
@@ -239,7 +239,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" opposite="owningAssociation" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedEnds();
+	EList<Property> getOwnedEnds();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned End</b></em>' containment reference list.
@@ -305,7 +305,7 @@
 	 * @generated
 	 */
 	boolean validateSpecializedEndNumber(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -317,7 +317,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSpecializedEndTypes(DiagnosticChain diagnostics, Map context);
+	boolean validateSpecializedEndTypes(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -329,7 +330,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBinaryAssociations(DiagnosticChain diagnostics, Map context);
+	boolean validateBinaryAssociations(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -341,7 +343,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssociationEnds(DiagnosticChain diagnostics, Map context);
+	boolean validateAssociationEnds(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AssociationClass.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AssociationClass.java
index 00b2cae..179f531 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AssociationClass.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/AssociationClass.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AssociationClass.java,v 1.3 2006/05/12 20:38:08 khussey Exp $
+ * $Id: AssociationClass.java,v 1.4 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -45,7 +45,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCannotBeDefined(DiagnosticChain diagnostics, Map context);
+	boolean validateCannotBeDefined(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -57,6 +58,6 @@
 	 * @model type="org.eclipse.uml2.uml.Property" lower="2" ordered="false"
 	 * @generated
 	 */
-	EList allConnections();
+	EList<Property> allConnections();
 
 } // AssociationClass
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Behavior.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Behavior.java
index a576e86..bccc26c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Behavior.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Behavior.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Behavior.java,v 1.17 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Behavior.java,v 1.18 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -90,7 +90,7 @@
 	 * @model type="org.eclipse.uml2.uml.Behavior" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedBehaviors();
+	EList<Behavior> getRedefinedBehaviors();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Behavior} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Behavior</b></em>' reference list.
@@ -130,7 +130,7 @@
 	 * @model type="org.eclipse.uml2.uml.Parameter" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedParameters();
+	EList<Parameter> getOwnedParameters();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Parameter}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Parameter</b></em>' containment reference list.
@@ -198,7 +198,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPreconditions();
+	EList<Constraint> getPreconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Precondition</b></em>' containment reference list.
@@ -262,7 +262,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPostconditions();
+	EList<Constraint> getPostconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Postcondition</b></em>' containment reference list.
@@ -326,7 +326,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterSet" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedParameterSets();
+	EList<ParameterSet> getOwnedParameterSets();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ParameterSet}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Parameter Set</b></em>' containment reference list.
@@ -401,7 +401,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateParametersMatch(DiagnosticChain diagnostics, Map context);
+	boolean validateParametersMatch(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -414,7 +415,7 @@
 	 * @generated
 	 */
 	boolean validateFeatureOfContextClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -426,7 +427,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustRealize(DiagnosticChain diagnostics, Map context);
+	boolean validateMustRealize(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -438,6 +440,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMostOneBehaviour(DiagnosticChain diagnostics, Map context);
+	boolean validateMostOneBehaviour(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Behavior
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioralFeature.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioralFeature.java
index bc2aa3e..5ff4636 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioralFeature.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioralFeature.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioralFeature.java,v 1.12 2006/06/07 21:39:13 khussey Exp $
+ * $Id: BehavioralFeature.java,v 1.13 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -59,7 +59,7 @@
 	 * @model type="org.eclipse.uml2.uml.Parameter" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedParameters();
+	EList<Parameter> getOwnedParameters();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Parameter}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Parameter</b></em>' containment reference list.
@@ -141,7 +141,7 @@
 	 * @model type="org.eclipse.uml2.uml.Behavior" opposite="specification" ordered="false"
 	 * @generated
 	 */
-	EList getMethods();
+	EList<Behavior> getMethods();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Behavior} with the specified '<em><b>Name</b></em>' from the '<em><b>Method</b></em>' reference list.
@@ -210,7 +210,7 @@
 	 * @model type="org.eclipse.uml2.uml.Type" ordered="false"
 	 * @generated
 	 */
-	EList getRaisedExceptions();
+	EList<Type> getRaisedExceptions();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Type} with the specified '<em><b>Name</b></em>' from the '<em><b>Raised Exception</b></em>' reference list.
@@ -249,7 +249,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterSet" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedParameterSets();
+	EList<ParameterSet> getOwnedParameterSets();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ParameterSet}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Parameter Set</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioredClassifier.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioredClassifier.java
index efe0cc0..2089930 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioredClassifier.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BehavioredClassifier.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioredClassifier.java,v 1.10 2006/06/07 21:39:13 khussey Exp $
+ * $Id: BehavioredClassifier.java,v 1.11 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -60,7 +60,7 @@
 	 * @model type="org.eclipse.uml2.uml.Behavior" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedBehaviors();
+	EList<Behavior> getOwnedBehaviors();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Behavior}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Behavior</b></em>' containment reference list.
@@ -152,7 +152,7 @@
 	 * @model type="org.eclipse.uml2.uml.InterfaceRealization" opposite="implementingClassifier" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getInterfaceRealizations();
+	EList<InterfaceRealization> getInterfaceRealizations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InterfaceRealization}, with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>', and appends it to the '<em><b>Interface Realization</b></em>' containment reference list.
@@ -207,7 +207,7 @@
 	 * @model type="org.eclipse.uml2.uml.Trigger" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedTriggers();
+	EList<Trigger> getOwnedTriggers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Trigger}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Trigger</b></em>' containment reference list.
@@ -255,7 +255,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateClassBehavior(DiagnosticChain diagnostics, Map context);
+	boolean validateClassBehavior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -266,7 +267,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
 	 * @generated
 	 */
-	EList getImplementedInterfaces();
+	EList<Interface> getImplementedInterfaces();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -277,6 +278,6 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
 	 * @generated
 	 */
-	EList getAllImplementedInterfaces();
+	EList<Interface> getAllImplementedInterfaces();
 
 } // BehavioredClassifier
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BroadcastSignalAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BroadcastSignalAction.java
index 5666e3b..e2ed6fa 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BroadcastSignalAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/BroadcastSignalAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BroadcastSignalAction.java,v 1.2 2006/05/12 20:38:03 khussey Exp $
+ * $Id: BroadcastSignalAction.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,7 +74,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNumberAndOrder(DiagnosticChain diagnostics, Map context);
+	boolean validateNumberAndOrder(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -87,6 +88,6 @@
 	 * @generated
 	 */
 	boolean validateTypeOrderingMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // BroadcastSignalAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallAction.java
index c7bbeb8..47e52f9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallAction.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: CallAction.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -83,7 +83,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getResults();
+	EList<OutputPin> getResults();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Result</b></em>' containment reference list.
@@ -134,7 +134,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSynchronousCall(DiagnosticChain diagnostics, Map context);
+	boolean validateSynchronousCall(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -146,7 +147,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNumberAndOrder(DiagnosticChain diagnostics, Map context);
+	boolean validateNumberAndOrder(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -159,6 +161,6 @@
 	 * @generated
 	 */
 	boolean validateTypeOrderingMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // CallAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallBehaviorAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallBehaviorAction.java
index af6f9fd..5f50700 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallBehaviorAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallBehaviorAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallBehaviorAction.java,v 1.2 2006/05/12 20:38:07 khussey Exp $
+ * $Id: CallBehaviorAction.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -75,7 +75,7 @@
 	 * @generated
 	 */
 	boolean validateArgumentPinEqualParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -88,6 +88,6 @@
 	 * @generated
 	 */
 	boolean validateResultPinEqualParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // CallBehaviorAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallConcurrencyKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallConcurrencyKind.java
index b081723..398f497 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallConcurrencyKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallConcurrencyKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallConcurrencyKind.java,v 1.4 2006/05/12 20:38:05 khussey Exp $
+ * $Id: CallConcurrencyKind.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,37 @@
  * @model
  * @generated
  */
-public final class CallConcurrencyKind
-		extends AbstractEnumerator {
+public enum CallConcurrencyKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Sequential</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEQUENTIAL
+	 * @generated
+	 * @ordered
+	 */
+	SEQUENTIAL_LITERAL(0, "sequential", "sequential"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Guarded</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GUARDED
+	 * @generated
+	 * @ordered
+	 */
+	GUARDED_LITERAL(1, "guarded", "guarded"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Concurrent</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONCURRENT
+	 * @generated
+	 * @ordered
+	 */
+	CONCURRENT_LITERAL(2, "concurrent", "concurrent"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Sequential</b></em>' literal value.
@@ -76,39 +105,6 @@
 	public static final int CONCURRENT = 2;
 
 	/**
-	 * The '<em><b>Sequential</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEQUENTIAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final CallConcurrencyKind SEQUENTIAL_LITERAL = new CallConcurrencyKind(
-		SEQUENTIAL, "sequential", "sequential"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Guarded</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #GUARDED
-	 * @generated
-	 * @ordered
-	 */
-	public static final CallConcurrencyKind GUARDED_LITERAL = new CallConcurrencyKind(
-		GUARDED, "guarded", "guarded"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Concurrent</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CONCURRENT
-	 * @generated
-	 * @ordered
-	 */
-	public static final CallConcurrencyKind CONCURRENT_LITERAL = new CallConcurrencyKind(
-		CONCURRENT, "concurrent", "concurrent"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Call Concurrency Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -123,8 +119,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<CallConcurrencyKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Call Concurrency Kind</b></em>' literal with the specified literal value.
@@ -177,13 +173,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private CallConcurrencyKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //CallConcurrencyKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallOperationAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallOperationAction.java
index 4132cb8..e1a161d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallOperationAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CallOperationAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallOperationAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: CallOperationAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -128,7 +128,7 @@
 	 * @generated
 	 */
 	boolean validateArgumentPinEqualParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -141,7 +141,7 @@
 	 * @generated
 	 */
 	boolean validateResultPinEqualParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -153,6 +153,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeTargetPin(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeTargetPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CallOperationAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Class.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Class.java
index e1d553b..5f15a3f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Class.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Class.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Class.java,v 1.13 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Class.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -66,7 +66,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" opposite="class" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedOperations();
+	EList<Operation> getOwnedOperations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Operation}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -79,8 +79,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation createOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -93,8 +93,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -109,8 +109,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -126,7 +126,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getNestedClassifiers();
+	EList<Classifier> getNestedClassifiers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Classifier}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Classifier</b></em>' containment reference list.
@@ -179,7 +179,7 @@
 	 * @model type="org.eclipse.uml2.uml.Class" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getSuperClasses();
+	EList<Class> getSuperClasses();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Class} with the specified '<em><b>Name</b></em>' from the '<em><b>Super Class</b></em>' reference list.
@@ -244,7 +244,7 @@
 	 * @model type="org.eclipse.uml2.uml.Reception" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedReceptions();
+	EList<Reception> getOwnedReceptions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Reception}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -257,8 +257,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception createOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Reception createOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Reception} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -271,8 +271,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Reception getOwnedReception(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Reception} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -287,8 +287,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Reception getOwnedReception(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -306,7 +306,7 @@
 	 * @model type="org.eclipse.uml2.uml.Extension" opposite="metaclass" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getExtensions();
+	EList<Extension> getExtensions();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Extension} with the specified '<em><b>Name</b></em>' from the '<em><b>Extension</b></em>' reference list.
@@ -341,7 +341,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePassiveClass(DiagnosticChain diagnostics, Map context);
+	boolean validatePassiveClass(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -352,8 +353,8 @@
 	 * @model required="true" ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" returnTypeOrdered="false"
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType);
+	Operation createOwnedOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Classifier.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Classifier.java
index ce0603e..fddf437 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Classifier.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Classifier.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Classifier.java,v 1.19 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Classifier.java,v 1.20 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -100,7 +100,7 @@
 	 * @model type="org.eclipse.uml2.uml.Generalization" opposite="specific" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getGeneralizations();
+	EList<Generalization> getGeneralizations();
 
 	/**
 	 * Returns the value of the '<em><b>Powertype Extent</b></em>' reference list.
@@ -117,7 +117,7 @@
 	 * @model type="org.eclipse.uml2.uml.GeneralizationSet" opposite="powertype" ordered="false"
 	 * @generated
 	 */
-	EList getPowertypeExtents();
+	EList<GeneralizationSet> getPowertypeExtents();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>' from the '<em><b>Powertype Extent</b></em>' reference list.
@@ -158,7 +158,7 @@
 	 * @model type="org.eclipse.uml2.uml.Feature" opposite="featuringClassifier" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getFeatures();
+	EList<Feature> getFeatures();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Feature} with the specified '<em><b>Name</b></em>' from the '<em><b>Feature</b></em>' reference list.
@@ -197,7 +197,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getInheritedMembers();
+	EList<NamedElement> getInheritedMembers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Inherited Member</b></em>' reference list.
@@ -237,7 +237,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedClassifiers();
+	EList<Classifier> getRedefinedClassifiers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Classifier</b></em>' reference list.
@@ -278,7 +278,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getGenerals();
+	EList<Classifier> getGenerals();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>General</b></em>' reference list.
@@ -317,7 +317,7 @@
 	 * @model type="org.eclipse.uml2.uml.UseCase" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedUseCases();
+	EList<UseCase> getOwnedUseCases();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.UseCase}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Use Case</b></em>' containment reference list.
@@ -370,7 +370,7 @@
 	 * @model type="org.eclipse.uml2.uml.UseCase" opposite="subject" ordered="false"
 	 * @generated
 	 */
-	EList getUseCases();
+	EList<UseCase> getUseCases();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.UseCase} with the specified '<em><b>Name</b></em>' from the '<em><b>Use Case</b></em>' reference list.
@@ -410,7 +410,7 @@
 	 * @model type="org.eclipse.uml2.uml.Substitution" opposite="substitutingClassifier" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getSubstitutions();
+	EList<Substitution> getSubstitutions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Substitution}, with the specified '<em><b>Name</b></em>', and '<em><b>Contract</b></em>', and appends it to the '<em><b>Substitution</b></em>' containment reference list.
@@ -464,7 +464,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getAttributes();
+	EList<Property> getAttributes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Attribute</b></em>' reference list.
@@ -542,7 +542,7 @@
 	 * @model type="org.eclipse.uml2.uml.CollaborationUse" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getCollaborationUses();
+	EList<CollaborationUse> getCollaborationUses();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.CollaborationUse}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Collaboration Use</b></em>' containment reference list.
@@ -591,7 +591,7 @@
 	 * @generated
 	 */
 	boolean validateNoCyclesInGeneralization(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -603,7 +603,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSpecializeType(DiagnosticChain diagnostics, Map context);
+	boolean validateSpecializeType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -616,7 +617,7 @@
 	 * @generated
 	 */
 	boolean validateGeneralizationHierarchies(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -629,7 +630,7 @@
 	 * @generated
 	 */
 	boolean validateMapsToGeneralizationSet(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Generalization}, with the specified '<em><b>General</b></em>', and appends it to the '<em><b>Generalization</b></em>' containment reference list.
@@ -674,7 +675,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Property" ordered="false"
 	 * @generated
 	 */
-	EList getAllAttributes();
+	EList<Property> getAllAttributes();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -685,7 +686,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Operation" ordered="false"
 	 * @generated
 	 */
-	EList getOperations();
+	EList<Operation> getOperations();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -696,7 +697,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Operation" ordered="false"
 	 * @generated
 	 */
-	EList getAllOperations();
+	EList<Operation> getAllOperations();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -707,8 +708,8 @@
 	 * @model ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false"
 	 * @generated
 	 */
-	Operation getOperation(String name, EList parameterNames,
-			EList parameterTypes);
+	Operation getOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -719,8 +720,8 @@
 	 * @model ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" ignoreCaseDataType="org.eclipse.uml2.uml.Boolean" ignoreCaseRequired="true" ignoreCaseOrdered="false"
 	 * @generated
 	 */
-	Operation getOperation(String name, EList parameterNames,
-			EList parameterTypes, boolean ignoreCase);
+	Operation getOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, boolean ignoreCase);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -731,7 +732,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
 	 * @generated
 	 */
-	EList getUsedInterfaces();
+	EList<Interface> getUsedInterfaces();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -742,7 +743,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Interface" ordered="false"
 	 * @generated
 	 */
-	EList getAllUsedInterfaces();
+	EList<Interface> getAllUsedInterfaces();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -766,7 +767,7 @@
 	 * @model type="org.eclipse.uml2.uml.Feature" ordered="false"
 	 * @generated
 	 */
-	EList allFeatures();
+	EList<Feature> allFeatures();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -778,7 +779,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList parents();
+	EList<Classifier> parents();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -791,7 +792,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" ordered="false" cRequired="true" cOrdered="false"
 	 * @generated
 	 */
-	EList inheritableMembers(Classifier c);
+	EList<NamedElement> inheritableMembers(Classifier c);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -829,7 +830,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" ordered="false" inhsType="org.eclipse.uml2.uml.NamedElement" inhsMany="true" inhsOrdered="false"
 	 * @generated
 	 */
-	EList inherit(EList inhs);
+	EList<NamedElement> inherit(EList<NamedElement> inhs);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -841,6 +842,6 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList allParents();
+	EList<Classifier> allParents();
 
 } // Classifier
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClassifierTemplateParameter.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClassifierTemplateParameter.java
index 0626894..abc9dd2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClassifierTemplateParameter.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClassifierTemplateParameter.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassifierTemplateParameter.java,v 1.5 2006/05/12 20:38:03 khussey Exp $
+ * $Id: ClassifierTemplateParameter.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -128,6 +128,6 @@
 	 * @generated
 	 */
 	boolean validateHasConstrainingClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ClassifierTemplateParameter
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Clause.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Clause.java
index c429972..e23158c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Clause.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Clause.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Clause.java,v 1.5 2006/02/22 20:48:15 khussey Exp $
+ * $Id: Clause.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -61,7 +61,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" ordered="false"
 	 * @generated
 	 */
-	EList getTests();
+	EList<ExecutableNode> getTests();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExecutableNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Test</b></em>' reference list.
@@ -100,7 +100,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" ordered="false"
 	 * @generated
 	 */
-	EList getBodies();
+	EList<ExecutableNode> getBodies();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExecutableNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Body</b></em>' reference list.
@@ -141,7 +141,7 @@
 	 * @model type="org.eclipse.uml2.uml.Clause" opposite="successorClause" ordered="false"
 	 * @generated
 	 */
-	EList getPredecessorClauses();
+	EList<Clause> getPredecessorClauses();
 
 	/**
 	 * Returns the value of the '<em><b>Successor Clause</b></em>' reference list.
@@ -158,7 +158,7 @@
 	 * @model type="org.eclipse.uml2.uml.Clause" opposite="predecessorClause" ordered="false"
 	 * @generated
 	 */
-	EList getSuccessorClauses();
+	EList<Clause> getSuccessorClauses();
 
 	/**
 	 * Returns the value of the '<em><b>Decider</b></em>' reference.
@@ -198,7 +198,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin"
 	 * @generated
 	 */
-	EList getBodyOutputs();
+	EList<OutputPin> getBodyOutputs();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.OutputPin} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Body Output</b></em>' reference list.
@@ -235,7 +235,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeciderOutput(DiagnosticChain diagnostics, Map context);
+	boolean validateDeciderOutput(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -247,6 +248,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBodyOutputPins(DiagnosticChain diagnostics, Map context);
+	boolean validateBodyOutputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Clause
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClearAssociationAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClearAssociationAction.java
index 68429ea..eacb3b8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClearAssociationAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ClearAssociationAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClearAssociationAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ClearAssociationAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -127,7 +127,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -139,6 +140,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ClearAssociationAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Collaboration.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Collaboration.java
index d09fd3c..dde6210 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Collaboration.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Collaboration.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Collaboration.java,v 1.5 2006/05/12 20:38:05 khussey Exp $
+ * $Id: Collaboration.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -52,7 +52,7 @@
 	 * @model type="org.eclipse.uml2.uml.ConnectableElement" ordered="false"
 	 * @generated
 	 */
-	EList getCollaborationRoles();
+	EList<ConnectableElement> getCollaborationRoles();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ConnectableElement} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Collaboration Role</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CollaborationUse.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CollaborationUse.java
index 410270a..fc60217 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CollaborationUse.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CollaborationUse.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CollaborationUse.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: CollaborationUse.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -84,7 +84,7 @@
 	 * @model type="org.eclipse.uml2.uml.Dependency" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getRoleBindings();
+	EList<Dependency> getRoleBindings();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Dependency}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Role Binding</b></em>' containment reference list.
@@ -145,7 +145,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateClientElements(DiagnosticChain diagnostics, Map context);
+	boolean validateClientElements(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -157,7 +158,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEveryRole(DiagnosticChain diagnostics, Map context);
+	boolean validateEveryRole(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -169,6 +171,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConnectors(DiagnosticChain diagnostics, Map context);
+	boolean validateConnectors(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CollaborationUse
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CombinedFragment.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CombinedFragment.java
index dc43eaf..af1aab9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CombinedFragment.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CombinedFragment.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CombinedFragment.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: CombinedFragment.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -85,7 +85,7 @@
 	 * @model type="org.eclipse.uml2.uml.InteractionOperand" containment="true" resolveProxies="true" required="true"
 	 * @generated
 	 */
-	EList getOperands();
+	EList<InteractionOperand> getOperands();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InteractionOperand}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Operand</b></em>' containment reference list.
@@ -136,7 +136,7 @@
 	 * @model type="org.eclipse.uml2.uml.Gate" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getCfragmentGates();
+	EList<Gate> getCfragmentGates();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Gate}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Cfragment Gate</b></em>' containment reference list.
@@ -184,7 +184,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOptLoopBreakNeg(DiagnosticChain diagnostics, Map context);
+	boolean validateOptLoopBreakNeg(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -196,7 +197,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMinintAndMaxint(DiagnosticChain diagnostics, Map context);
+	boolean validateMinintAndMaxint(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -208,7 +210,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBreak(DiagnosticChain diagnostics, Map context);
+	boolean validateBreak(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -220,6 +223,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConsiderAndIgnore(DiagnosticChain diagnostics, Map context);
+	boolean validateConsiderAndIgnore(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CombinedFragment
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Comment.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Comment.java
index 572206b..0239896 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Comment.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Comment.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Comment.java,v 1.5 2006/05/12 20:38:04 khussey Exp $
+ * $Id: Comment.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -104,6 +104,6 @@
 	 * @model type="org.eclipse.uml2.uml.Element" ordered="false"
 	 * @generated
 	 */
-	EList getAnnotatedElements();
+	EList<Element> getAnnotatedElements();
 
 } // Comment
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Component.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Component.java
index c6f1af9..0ea1457 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Component.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Component.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Component.java,v 1.19 2006/10/10 20:41:28 khussey Exp $
+ * $Id: Component.java,v 1.20 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -83,7 +83,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRequireds();
+	EList<Interface> getRequireds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Interface} with the specified '<em><b>Name</b></em>' from the '<em><b>Required</b></em>' reference list.
@@ -121,7 +121,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getProvideds();
+	EList<Interface> getProvideds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Interface} with the specified '<em><b>Name</b></em>' from the '<em><b>Provided</b></em>' reference list.
@@ -159,7 +159,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPackagedElements();
+	EList<PackageableElement> getPackagedElements();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.PackageableElement}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Packaged Element</b></em>' containment reference list.
@@ -214,7 +214,7 @@
 	 * @model type="org.eclipse.uml2.uml.ComponentRealization" opposite="abstraction" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getRealizations();
+	EList<ComponentRealization> getRealizations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ComponentRealization}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Realization</b></em>' containment reference list.
@@ -308,7 +308,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" ordered="false" classifierRequired="true" classifierOrdered="false"
 	 * @generated
 	 */
-	EList realizedInterfaces(Classifier classifier);
+	EList<Interface> realizedInterfaces(Classifier classifier);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -322,6 +322,6 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" ordered="false" classifierRequired="true" classifierOrdered="false"
 	 * @generated
 	 */
-	EList usedInterfaces(Classifier classifier);
+	EList<Interface> usedInterfaces(Classifier classifier);
 
 } // Component
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConditionalNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConditionalNode.java
index 95d10ba..218cfd0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConditionalNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConditionalNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConditionalNode.java,v 1.10 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ConditionalNode.java,v 1.11 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -109,7 +109,7 @@
 	 * @model type="org.eclipse.uml2.uml.Clause" containment="true" resolveProxies="true" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getClauses();
+	EList<Clause> getClauses();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Clause} and appends it to the '<em><b>Clause</b></em>' containment reference list.
@@ -134,7 +134,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getResults();
+	EList<OutputPin> getResults();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Result</b></em>' containment reference list.
@@ -185,6 +185,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateResultNoIncoming(DiagnosticChain diagnostics, Map context);
+	boolean validateResultNoIncoming(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ConditionalNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectableElement.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectableElement.java
index 8e2ba03..85fc20d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectableElement.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectableElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectableElement.java,v 1.4 2006/05/12 20:38:04 khussey Exp $
+ * $Id: ConnectableElement.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -53,6 +53,6 @@
 	 * @model type="org.eclipse.uml2.uml.ConnectorEnd" opposite="role"
 	 * @generated
 	 */
-	EList getEnds();
+	EList<ConnectorEnd> getEnds();
 
 } // ConnectableElement
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectionPointReference.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectionPointReference.java
index 04eddbe..5d9cd39 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectionPointReference.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectionPointReference.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectionPointReference.java,v 1.6 2006/05/12 20:38:09 khussey Exp $
+ * $Id: ConnectionPointReference.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.Pseudostate" ordered="false"
 	 * @generated
 	 */
-	EList getEntries();
+	EList<Pseudostate> getEntries();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Pseudostate} with the specified '<em><b>Name</b></em>' from the '<em><b>Entry</b></em>' reference list.
@@ -94,7 +94,7 @@
 	 * @model type="org.eclipse.uml2.uml.Pseudostate" ordered="false"
 	 * @generated
 	 */
-	EList getExits();
+	EList<Pseudostate> getExits();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Pseudostate} with the specified '<em><b>Name</b></em>' from the '<em><b>Exit</b></em>' reference list.
@@ -156,7 +156,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEntryPseudostates(DiagnosticChain diagnostics, Map context);
+	boolean validateEntryPseudostates(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -168,6 +169,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateExitPseudostates(DiagnosticChain diagnostics, Map context);
+	boolean validateExitPseudostates(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ConnectionPointReference
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Connector.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Connector.java
index 2ef3ea5..bc37a54 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Connector.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Connector.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Connector.java,v 1.13 2006/10/10 20:41:28 khussey Exp $
+ * $Id: Connector.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -87,7 +87,7 @@
 	 * @model type="org.eclipse.uml2.uml.Connector" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedConnectors();
+	EList<Connector> getRedefinedConnectors();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Connector} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Connector</b></em>' reference list.
@@ -125,7 +125,7 @@
 	 * @model type="org.eclipse.uml2.uml.ConnectorEnd" containment="true" resolveProxies="true" lower="2"
 	 * @generated
 	 */
-	EList getEnds();
+	EList<ConnectorEnd> getEnds();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ConnectorEnd} and appends it to the '<em><b>End</b></em>' containment reference list.
@@ -205,7 +205,7 @@
 	 * @model type="org.eclipse.uml2.uml.Behavior" ordered="false"
 	 * @generated
 	 */
-	EList getContracts();
+	EList<Behavior> getContracts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Behavior} with the specified '<em><b>Name</b></em>' from the '<em><b>Contract</b></em>' reference list.
@@ -241,7 +241,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypes(DiagnosticChain diagnostics, Map context);
+	boolean validateTypes(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -253,7 +254,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCompatible(DiagnosticChain diagnostics, Map context);
+	boolean validateCompatible(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -265,7 +267,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateRoles(DiagnosticChain diagnostics, Map context);
+	boolean validateRoles(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -278,7 +281,7 @@
 	 * @generated
 	 */
 	boolean validateBetweenInterfacesPorts(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -291,7 +294,7 @@
 	 * @generated
 	 */
 	boolean validateBetweenInterfacePortImplements(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -304,7 +307,7 @@
 	 * @generated
 	 */
 	boolean validateBetweenInterfacePortSignature(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -317,7 +320,7 @@
 	 * @generated
 	 */
 	boolean validateUnionSignatureCompatible(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -329,6 +332,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssemblyConnector(DiagnosticChain diagnostics, Map context);
+	boolean validateAssemblyConnector(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Connector
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorEnd.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorEnd.java
index c0ba5bb..37e7527 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorEnd.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorEnd.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorEnd.java,v 1.2 2006/04/05 13:49:57 khussey Exp $
+ * $Id: ConnectorEnd.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -119,7 +119,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -131,7 +132,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePartWithPortEmpty(DiagnosticChain diagnostics, Map context);
+	boolean validatePartWithPortEmpty(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -143,7 +145,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateRoleAndPartWithPort(DiagnosticChain diagnostics, Map context);
+	boolean validateRoleAndPartWithPort(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -155,6 +158,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSelfPartWithPort(DiagnosticChain diagnostics, Map context);
+	boolean validateSelfPartWithPort(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ConnectorEnd
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorKind.java
index 566ff1a..53f3ae1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConnectorKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorKind.java,v 1.3 2006/05/12 20:38:04 khussey Exp $
+ * $Id: ConnectorKind.java,v 1.4 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,27 @@
  * @model
  * @generated
  */
-public final class ConnectorKind
-		extends AbstractEnumerator {
+public enum ConnectorKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Assembly</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASSEMBLY
+	 * @generated
+	 * @ordered
+	 */
+	ASSEMBLY_LITERAL(0, "assembly", "assembly"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Delegation</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DELEGATION
+	 * @generated
+	 * @ordered
+	 */
+	DELEGATION_LITERAL(1, "delegation", "delegation"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Assembly</b></em>' literal value.
@@ -62,28 +81,6 @@
 	public static final int DELEGATION = 1;
 
 	/**
-	 * The '<em><b>Assembly</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ASSEMBLY
-	 * @generated
-	 * @ordered
-	 */
-	public static final ConnectorKind ASSEMBLY_LITERAL = new ConnectorKind(
-		ASSEMBLY, "assembly", "assembly"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Delegation</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DELEGATION
-	 * @generated
-	 * @ordered
-	 */
-	public static final ConnectorKind DELEGATION_LITERAL = new ConnectorKind(
-		DELEGATION, "delegation", "delegation"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Connector Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -98,8 +95,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<ConnectorKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Connector Kind</b></em>' literal with the specified literal value.
@@ -150,13 +147,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private ConnectorKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //ConnectorKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConsiderIgnoreFragment.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConsiderIgnoreFragment.java
index 11d543d..02ec459 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConsiderIgnoreFragment.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ConsiderIgnoreFragment.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConsiderIgnoreFragment.java,v 1.4 2006/05/12 20:38:10 khussey Exp $
+ * $Id: ConsiderIgnoreFragment.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" ordered="false"
 	 * @generated
 	 */
-	EList getMessages();
+	EList<NamedElement> getMessages();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Message</b></em>' reference list.
@@ -92,7 +92,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConsiderOrIgnore(DiagnosticChain diagnostics, Map context);
+	boolean validateConsiderOrIgnore(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -104,6 +105,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateType(DiagnosticChain diagnostics, Map context);
+	boolean validateType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ConsiderIgnoreFragment
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Constraint.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Constraint.java
index f9fe526..20058f3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Constraint.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Constraint.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Constraint.java,v 1.10 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Constraint.java,v 1.11 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.Element"
 	 * @generated
 	 */
-	EList getConstrainedElements();
+	EList<Element> getConstrainedElements();
 
 	/**
 	 * Returns the value of the '<em><b>Specification</b></em>' containment reference.
@@ -135,7 +135,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotApplyToSelf(DiagnosticChain diagnostics, Map context);
+	boolean validateNotApplyToSelf(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -148,7 +149,7 @@
 	 * @generated
 	 */
 	boolean validateValueSpecificationBoolean(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -160,7 +161,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBooleanValue(DiagnosticChain diagnostics, Map context);
+	boolean validateBooleanValue(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -172,7 +174,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoSideEffects(DiagnosticChain diagnostics, Map context);
+	boolean validateNoSideEffects(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -184,6 +187,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotAppliedToSelf(DiagnosticChain diagnostics, Map context);
+	boolean validateNotAppliedToSelf(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Constraint
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Continuation.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Continuation.java
index b72409b..31bb0b9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Continuation.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Continuation.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Continuation.java,v 1.4 2006/05/12 20:38:08 khussey Exp $
+ * $Id: Continuation.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -75,7 +75,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameName(DiagnosticChain diagnostics, Map context);
+	boolean validateSameName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -87,7 +88,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGlobal(DiagnosticChain diagnostics, Map context);
+	boolean validateGlobal(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -100,6 +102,6 @@
 	 * @generated
 	 */
 	boolean validateFirstOrLastInteractionFragment(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // Continuation
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ControlFlow.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ControlFlow.java
index a254d77..eed83d0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ControlFlow.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ControlFlow.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ControlFlow.java,v 1.2 2006/05/12 20:38:07 khussey Exp $
+ * $Id: ControlFlow.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,6 +43,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateObjectNodes(DiagnosticChain diagnostics, Map context);
+	boolean validateObjectNodes(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ControlFlow
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkAction.java
index 5d98d92..acdffe0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkAction.java,v 1.3 2006/05/12 20:38:04 khussey Exp $
+ * $Id: CreateLinkAction.java,v 1.4 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,6 +44,6 @@
 	 * @generated
 	 */
 	boolean validateAssociationNotAbstract(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // CreateLinkAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkObjectAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkObjectAction.java
index 2580119..d450f6e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkObjectAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateLinkObjectAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkObjectAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: CreateLinkObjectAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -86,7 +86,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssociationClass(DiagnosticChain diagnostics, Map context);
+	boolean validateAssociationClass(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,7 +99,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeOfResult(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeOfResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -110,6 +112,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CreateLinkObjectAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateObjectAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateObjectAction.java
index 4372eda..0f9be04 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateObjectAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreateObjectAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateObjectAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: CreateObjectAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -113,7 +113,7 @@
 	 * @generated
 	 */
 	boolean validateClassifierNotAbstract(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -126,7 +126,7 @@
 	 * @generated
 	 */
 	boolean validateClassifierNotAssociationClass(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -138,7 +138,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -150,6 +151,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CreateObjectAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreationEvent.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreationEvent.java
index 44d9322..c1782f1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreationEvent.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/CreationEvent.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreationEvent.java,v 1.2 2006/05/12 20:38:05 khussey Exp $
+ * $Id: CreationEvent.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,6 +43,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoOccurrenceAbove(DiagnosticChain diagnostics, Map context);
+	boolean validateNoOccurrenceAbove(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // CreationEvent
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DataType.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DataType.java
index ac98b4c..ae2eaf7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DataType.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DataType.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DataType.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: DataType.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" opposite="datatype" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedAttributes();
+	EList<Property> getOwnedAttributes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Attribute</b></em>' containment reference list.
@@ -125,7 +125,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" opposite="datatype" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedOperations();
+	EList<Operation> getOwnedOperations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Operation}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -138,8 +138,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation createOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -152,8 +152,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -168,8 +168,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -181,8 +181,8 @@
 	 * @model required="true" ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" returnTypeOrdered="false"
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType);
+	Operation createOwnedOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DecisionNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DecisionNode.java
index 6370d26..ff104cd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DecisionNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DecisionNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DecisionNode.java,v 1.2 2006/05/12 20:38:09 khussey Exp $
+ * $Id: DecisionNode.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,7 +74,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneIncomingEdge(DiagnosticChain diagnostics, Map context);
+	boolean validateOneIncomingEdge(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -86,7 +87,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInputParameter(DiagnosticChain diagnostics, Map context);
+	boolean validateInputParameter(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,6 +100,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // DecisionNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Dependency.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Dependency.java
index 9bd67cd..b0a607a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Dependency.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Dependency.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Dependency.java,v 1.3 2006/02/22 20:48:15 khussey Exp $
+ * $Id: Dependency.java,v 1.4 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -53,7 +53,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getSuppliers();
+	EList<NamedElement> getSuppliers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Supplier</b></em>' reference list.
@@ -94,7 +94,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" opposite="clientDependency" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getClients();
+	EList<NamedElement> getClients();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Client</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Deployment.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Deployment.java
index 00cd6ac..24c74a4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Deployment.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Deployment.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Deployment.java,v 1.7 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Deployment.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.DeployedArtifact" ordered="false"
 	 * @generated
 	 */
-	EList getDeployedArtifacts();
+	EList<DeployedArtifact> getDeployedArtifacts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.DeployedArtifact} with the specified '<em><b>Name</b></em>' from the '<em><b>Deployed Artifact</b></em>' reference list.
@@ -97,7 +97,7 @@
 	 * @model type="org.eclipse.uml2.uml.DeploymentSpecification" opposite="deployment" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConfigurations();
+	EList<DeploymentSpecification> getConfigurations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.DeploymentSpecification}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Configuration</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentSpecification.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentSpecification.java
index 83fb102..e448b76 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentSpecification.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentSpecification.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentSpecification.java,v 1.7 2006/05/12 20:38:07 khussey Exp $
+ * $Id: DeploymentSpecification.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -183,7 +183,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeployedElements(DiagnosticChain diagnostics, Map context);
+	boolean validateDeployedElements(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -195,6 +196,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeploymentTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateDeploymentTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // DeploymentSpecification
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentTarget.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentTarget.java
index 9e98d49..b44fa76 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentTarget.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DeploymentTarget.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentTarget.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: DeploymentTarget.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.Deployment" opposite="location" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getDeployments();
+	EList<Deployment> getDeployments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Deployment}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Deployment</b></em>' containment reference list.
@@ -106,7 +106,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getDeployedElements();
+	EList<PackageableElement> getDeployedElements();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.PackageableElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Deployed Element</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestroyObjectAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestroyObjectAction.java
index 9d74c41..ec78b9f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestroyObjectAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestroyObjectAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestroyObjectAction.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: DestroyObjectAction.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -155,7 +155,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -167,6 +168,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoType(DiagnosticChain diagnostics, Map context);
+	boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // DestroyObjectAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestructionEvent.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestructionEvent.java
index 872462e..6bd8b94 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestructionEvent.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DestructionEvent.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestructionEvent.java,v 1.2 2006/05/12 20:38:05 khussey Exp $
+ * $Id: DestructionEvent.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,6 +44,6 @@
 	 * @generated
 	 */
 	boolean validateNoOccurrenceSpecificationsBelow(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 } // DestructionEvent
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DirectedRelationship.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DirectedRelationship.java
index 4585e7a..0c1bb56 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DirectedRelationship.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DirectedRelationship.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DirectedRelationship.java,v 1.4 2006/05/24 20:54:29 khussey Exp $
+ * $Id: DirectedRelationship.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -51,7 +51,7 @@
 	 * @model type="org.eclipse.uml2.uml.Element" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getSources();
+	EList<Element> getSources();
 
 	/**
 	 * Returns the value of the '<em><b>Target</b></em>' reference list.
@@ -66,6 +66,6 @@
 	 * @model type="org.eclipse.uml2.uml.Element" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getTargets();
+	EList<Element> getTargets();
 
 } // DirectedRelationship
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Duration.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Duration.java
index 54d5fc9..0ccca13 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Duration.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Duration.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Duration.java,v 1.6 2006/05/12 20:38:03 khussey Exp $
+ * $Id: Duration.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -78,7 +78,7 @@
 	 * @model type="org.eclipse.uml2.uml.Observation" ordered="false"
 	 * @generated
 	 */
-	EList getObservations();
+	EList<Observation> getObservations();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Observation} with the specified '<em><b>Name</b></em>' from the '<em><b>Observation</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationConstraint.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationConstraint.java
index 5e7a4dd..29627a4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationConstraint.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationConstraint.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationConstraint.java,v 1.6 2006/05/12 20:38:05 khussey Exp $
+ * $Id: DurationConstraint.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -53,7 +53,7 @@
 	 * @model type="boolean" default="true" dataType="org.eclipse.uml2.uml.Boolean" upper="2" ordered="false"
 	 * @generated
 	 */
-	EList getFirstEvents();
+	EList<Boolean> getFirstEvents();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -67,6 +67,6 @@
 	 * @generated
 	 */
 	boolean validateFirstEventMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // DurationConstraint
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationObservation.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationObservation.java
index 68dec1b..ea969d5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationObservation.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/DurationObservation.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationObservation.java,v 1.5 2006/04/05 13:49:57 khussey Exp $
+ * $Id: DurationObservation.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" required="true" upper="2" ordered="false"
 	 * @generated
 	 */
-	EList getEvents();
+	EList<NamedElement> getEvents();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Event</b></em>' reference list.
@@ -95,7 +95,7 @@
 	 * @model type="boolean" default="true" dataType="org.eclipse.uml2.uml.Boolean" upper="2" ordered="false"
 	 * @generated
 	 */
-	EList getFirstEvents();
+	EList<Boolean> getFirstEvents();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -109,6 +109,6 @@
 	 * @generated
 	 */
 	boolean validateFirstEventMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // DurationObservation
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Element.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Element.java
index f1f33f5..781276c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Element.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Element.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Element.java,v 1.15 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Element.java,v 1.16 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -63,7 +63,7 @@
 	 * @model type="org.eclipse.uml2.uml.Element" opposite="owner" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedElements();
+	EList<Element> getOwnedElements();
 
 	/**
 	 * Returns the value of the '<em><b>Owner</b></em>' reference.
@@ -94,7 +94,7 @@
 	 * @model type="org.eclipse.uml2.uml.Comment" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedComments();
+	EList<Comment> getOwnedComments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Comment} and appends it to the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -116,7 +116,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotOwnSelf(DiagnosticChain diagnostics, Map context);
+	boolean validateNotOwnSelf(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -128,7 +129,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHasOwner(DiagnosticChain diagnostics, Map context);
+	boolean validateHasOwner(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -139,7 +141,7 @@
 	 * @model kind="operation" type="org.eclipse.emf.ecore.EObject" ordered="false"
 	 * @generated
 	 */
-	EList getStereotypeApplications();
+	EList<EObject> getStereotypeApplications();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -161,7 +163,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Stereotype" ordered="false"
 	 * @generated
 	 */
-	EList getRequiredStereotypes();
+	EList<Stereotype> getRequiredStereotypes();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -183,7 +185,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Stereotype" ordered="false"
 	 * @generated
 	 */
-	EList getAppliedStereotypes();
+	EList<Stereotype> getAppliedStereotypes();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -205,7 +207,7 @@
 	 * @model type="org.eclipse.uml2.uml.Stereotype" ordered="false" stereotypeRequired="true" stereotypeOrdered="false"
 	 * @generated
 	 */
-	EList getAppliedSubstereotypes(Stereotype stereotype);
+	EList<Stereotype> getAppliedSubstereotypes(Stereotype stereotype);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -272,7 +274,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Relationship" ordered="false"
 	 * @generated
 	 */
-	EList getRelationships();
+	EList<Relationship> getRelationships();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -283,7 +285,7 @@
 	 * @model type="org.eclipse.uml2.uml.Relationship" ordered="false" eClassRequired="true" eClassOrdered="false"
 	 * @generated
 	 */
-	EList getRelationships(EClass eClass);
+	EList<Relationship> getRelationships(EClass eClass);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -294,7 +296,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.DirectedRelationship" ordered="false"
 	 * @generated
 	 */
-	EList getSourceDirectedRelationships();
+	EList<DirectedRelationship> getSourceDirectedRelationships();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -305,7 +307,7 @@
 	 * @model type="org.eclipse.uml2.uml.DirectedRelationship" ordered="false" eClassRequired="true" eClassOrdered="false"
 	 * @generated
 	 */
-	EList getSourceDirectedRelationships(EClass eClass);
+	EList<DirectedRelationship> getSourceDirectedRelationships(EClass eClass);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -316,7 +318,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.DirectedRelationship" ordered="false"
 	 * @generated
 	 */
-	EList getTargetDirectedRelationships();
+	EList<DirectedRelationship> getTargetDirectedRelationships();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -327,7 +329,7 @@
 	 * @model type="org.eclipse.uml2.uml.DirectedRelationship" ordered="false" eClassRequired="true" eClassOrdered="false"
 	 * @generated
 	 */
-	EList getTargetDirectedRelationships(EClass eClass);
+	EList<DirectedRelationship> getTargetDirectedRelationships(EClass eClass);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -338,7 +340,7 @@
 	 * @model kind="operation" type="java.lang.String" dataType="org.eclipse.uml2.uml.String" ordered="false"
 	 * @generated
 	 */
-	EList getKeywords();
+	EList<String> getKeywords();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -448,7 +450,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Stereotype" ordered="false"
 	 * @generated
 	 */
-	EList getApplicableStereotypes();
+	EList<Stereotype> getApplicableStereotypes();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -493,7 +495,7 @@
 	 * @model type="org.eclipse.uml2.uml.Element" ordered="false"
 	 * @generated
 	 */
-	EList allOwnedElements();
+	EList<Element> allOwnedElements();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ElementImport.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ElementImport.java
index 60d1eb2..2d84823 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ElementImport.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ElementImport.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ElementImport.java,v 1.7 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ElementImport.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -186,7 +186,7 @@
 	 * @generated
 	 */
 	boolean validateVisibilityPublicOrPrivate(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -199,7 +199,7 @@
 	 * @generated
 	 */
 	boolean validateImportedElementIsPublic(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/EncapsulatedClassifier.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/EncapsulatedClassifier.java
index c6ef7f6..326e701 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/EncapsulatedClassifier.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/EncapsulatedClassifier.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: EncapsulatedClassifier.java,v 1.7 2006/05/12 20:38:08 khussey Exp $
+ * $Id: EncapsulatedClassifier.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -50,7 +50,7 @@
 	 * @model type="org.eclipse.uml2.uml.Port" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedPorts();
+	EList<Port> getOwnedPorts();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Port}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Port</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Enumeration.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Enumeration.java
index 2c3b8dd..f564c96 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Enumeration.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Enumeration.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Enumeration.java,v 1.8 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Enumeration.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -52,7 +52,7 @@
 	 * @model type="org.eclipse.uml2.uml.EnumerationLiteral" opposite="enumeration" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedLiterals();
+	EList<EnumerationLiteral> getOwnedLiterals();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.EnumerationLiteral} with the specified '<em><b>Name</b></em>' from the '<em><b>Owned Literal</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExceptionHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExceptionHandler.java
index 4c81798..19f30db 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExceptionHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExceptionHandler.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExceptionHandler.java,v 1.5 2006/03/15 19:33:55 khussey Exp $
+ * $Id: ExceptionHandler.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -109,7 +109,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getExceptionTypes();
+	EList<Classifier> getExceptionTypes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Exception Type</b></em>' reference list.
@@ -172,7 +172,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateExceptionBody(DiagnosticChain diagnostics, Map context);
+	boolean validateExceptionBody(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -184,7 +185,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateResultPins(DiagnosticChain diagnostics, Map context);
+	boolean validateResultPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -196,7 +198,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneInput(DiagnosticChain diagnostics, Map context);
+	boolean validateOneInput(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -208,6 +211,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEdgeSourceTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateEdgeSourceTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ExceptionHandler
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutableNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutableNode.java
index eab2814..c1c5562 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutableNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutableNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutableNode.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ExecutableNode.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -52,7 +52,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExceptionHandler" opposite="protectedNode" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getHandlers();
+	EList<ExceptionHandler> getHandlers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ExceptionHandler} and appends it to the '<em><b>Handler</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutionSpecification.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutionSpecification.java
index 146bad3..6b255dc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutionSpecification.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExecutionSpecification.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionSpecification.java,v 1.3 2006/05/12 20:38:09 khussey Exp $
+ * $Id: ExecutionSpecification.java,v 1.4 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -100,6 +100,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameLifeline(DiagnosticChain diagnostics, Map context);
+	boolean validateSameLifeline(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ExecutionSpecification
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionKind.java
index d47289c..3bf54cd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpansionKind.java,v 1.1 2005/11/14 22:25:59 khussey Exp $
+ * $Id: ExpansionKind.java,v 1.2 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,37 @@
  * @model
  * @generated
  */
-public final class ExpansionKind
-		extends AbstractEnumerator {
+public enum ExpansionKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Parallel</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PARALLEL
+	 * @generated
+	 * @ordered
+	 */
+	PARALLEL_LITERAL(0, "parallel", "parallel"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Iterative</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ITERATIVE
+	 * @generated
+	 * @ordered
+	 */
+	ITERATIVE_LITERAL(1, "iterative", "iterative"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Stream</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STREAM
+	 * @generated
+	 * @ordered
+	 */
+	STREAM_LITERAL(2, "stream", "stream"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Parallel</b></em>' literal value.
@@ -76,39 +105,6 @@
 	public static final int STREAM = 2;
 
 	/**
-	 * The '<em><b>Parallel</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PARALLEL
-	 * @generated
-	 * @ordered
-	 */
-	public static final ExpansionKind PARALLEL_LITERAL = new ExpansionKind(
-		PARALLEL, "parallel", "parallel"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Iterative</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ITERATIVE
-	 * @generated
-	 * @ordered
-	 */
-	public static final ExpansionKind ITERATIVE_LITERAL = new ExpansionKind(
-		ITERATIVE, "iterative", "iterative"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Stream</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #STREAM
-	 * @generated
-	 * @ordered
-	 */
-	public static final ExpansionKind STREAM_LITERAL = new ExpansionKind(
-		STREAM, "stream", "stream"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Expansion Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -123,8 +119,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<ExpansionKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Expansion Kind</b></em>' literal with the specified literal value.
@@ -177,13 +173,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private ExpansionKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //ExpansionKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionRegion.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionRegion.java
index c334541..63e8583 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionRegion.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExpansionRegion.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpansionRegion.java,v 1.7 2006/05/12 20:38:10 khussey Exp $
+ * $Id: ExpansionRegion.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -91,7 +91,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExpansionNode" opposite="regionAsInput" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getInputElements();
+	EList<ExpansionNode> getInputElements();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExpansionNode} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Input Element</b></em>' reference list.
@@ -133,7 +133,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExpansionNode" opposite="regionAsOutput" ordered="false"
 	 * @generated
 	 */
-	EList getOutputElements();
+	EList<ExpansionNode> getOutputElements();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExpansionNode} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Output Element</b></em>' reference list.
@@ -170,6 +170,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateExpansionNodes(DiagnosticChain diagnostics, Map context);
+	boolean validateExpansionNodes(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ExpansionRegion
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Expression.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Expression.java
index 5df975c..fed2279 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Expression.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Expression.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Expression.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Expression.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -106,7 +106,7 @@
 	 * @model type="org.eclipse.uml2.uml.ValueSpecification" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOperands();
+	EList<ValueSpecification> getOperands();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ValueSpecification}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Operand</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extend.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extend.java
index 564577c..49a189a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extend.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extend.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Extend.java,v 1.9 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Extend.java,v 1.10 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -134,7 +134,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExtensionPoint" required="true"
 	 * @generated
 	 */
-	EList getExtensionLocations();
+	EList<ExtensionPoint> getExtensionLocations();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExtensionPoint} with the specified '<em><b>Name</b></em>' from the '<em><b>Extension Location</b></em>' reference list.
@@ -198,6 +198,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateExtensionPoints(DiagnosticChain diagnostics, Map context);
+	boolean validateExtensionPoints(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Extend
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extension.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extension.java
index 85c7a13..26182fa 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extension.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Extension.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Extension.java,v 1.10 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Extension.java,v 1.11 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -81,7 +81,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNonOwnedEnd(DiagnosticChain diagnostics, Map context);
+	boolean validateNonOwnedEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -93,7 +94,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateIsBinary(DiagnosticChain diagnostics, Map context);
+	boolean validateIsBinary(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionEnd.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionEnd.java
index dc4bee3..648f60c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionEnd.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionEnd.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionEnd.java,v 1.2 2006/05/12 20:38:08 khussey Exp $
+ * $Id: ExtensionEnd.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,7 +44,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -56,6 +57,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAggregation(DiagnosticChain diagnostics, Map context);
+	boolean validateAggregation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ExtensionEnd
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionPoint.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionPoint.java
index c8e604c..69927bf 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionPoint.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ExtensionPoint.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionPoint.java,v 1.4 2006/05/12 20:38:03 khussey Exp $
+ * $Id: ExtensionPoint.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -76,6 +76,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustHaveName(DiagnosticChain diagnostics, Map context);
+	boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ExtensionPoint
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Feature.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Feature.java
index a35a2bd..7704cb4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Feature.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Feature.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Feature.java,v 1.8 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Feature.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -81,7 +81,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" opposite="feature" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getFeaturingClassifiers();
+	EList<Classifier> getFeaturingClassifiers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Featuring Classifier</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalNode.java
index 3f8594e..87b2ca3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalNode.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalNode.java,v 1.1 2005/11/14 22:26:00 khussey Exp $
+ * $Id: FinalNode.java,v 1.2 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,6 +43,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoOutgoingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoOutgoingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // FinalNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalState.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalState.java
index aeef768..aac3104 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalState.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FinalState.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalState.java,v 1.2 2006/02/23 17:20:47 khussey Exp $
+ * $Id: FinalState.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,7 +44,7 @@
 	 * @generated
 	 */
 	boolean validateNoOutgoingTransitions(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -56,7 +56,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoRegions(DiagnosticChain diagnostics, Map context);
+	boolean validateNoRegions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -69,7 +70,7 @@
 	 * @generated
 	 */
 	boolean validateCannotReferenceSubmachine(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -81,7 +82,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoEntryBehavior(DiagnosticChain diagnostics, Map context);
+	boolean validateNoEntryBehavior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -93,7 +95,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoExitBehavior(DiagnosticChain diagnostics, Map context);
+	boolean validateNoExitBehavior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -105,6 +108,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoStateBehavior(DiagnosticChain diagnostics, Map context);
+	boolean validateNoStateBehavior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // FinalState
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ForkNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ForkNode.java
index edb9c34..309ff5c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ForkNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ForkNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ForkNode.java,v 1.2 2006/05/12 20:38:03 khussey Exp $
+ * $Id: ForkNode.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,7 +43,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneIncomingEdge(DiagnosticChain diagnostics, Map context);
+	boolean validateOneIncomingEdge(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -55,6 +56,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ForkNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FunctionBehavior.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FunctionBehavior.java
index d5331fa..a3a7ecd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FunctionBehavior.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/FunctionBehavior.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FunctionBehavior.java,v 1.2 2006/04/05 13:49:57 khussey Exp $
+ * $Id: FunctionBehavior.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,7 +44,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneOutputParameter(DiagnosticChain diagnostics, Map context);
+	boolean validateOneOutputParameter(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -61,6 +62,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypesOfParameters(DiagnosticChain diagnostics, Map context);
+	boolean validateTypesOfParameters(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // FunctionBehavior
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Gate.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Gate.java
index 09b6427..2587535 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Gate.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Gate.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Gate.java,v 1.2 2006/05/12 20:38:03 khussey Exp $
+ * $Id: Gate.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,7 +43,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMessagesActualGate(DiagnosticChain diagnostics, Map context);
+	boolean validateMessagesActualGate(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -56,6 +57,6 @@
 	 * @generated
 	 */
 	boolean validateMessagesCombinedFragment(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // Gate
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Generalization.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Generalization.java
index 3afb957..06c7c90 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Generalization.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Generalization.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Generalization.java,v 1.9 2006/05/12 20:38:03 khussey Exp $
+ * $Id: Generalization.java,v 1.10 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -137,7 +137,7 @@
 	 * @model type="org.eclipse.uml2.uml.GeneralizationSet" opposite="generalization" ordered="false"
 	 * @generated
 	 */
-	EList getGeneralizationSets();
+	EList<GeneralizationSet> getGeneralizationSets();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.GeneralizationSet} with the specified '<em><b>Name</b></em>' from the '<em><b>Generalization Set</b></em>' reference list.
@@ -200,6 +200,6 @@
 	 * @generated
 	 */
 	boolean validateGeneralizationSameClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // Generalization
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/GeneralizationSet.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/GeneralizationSet.java
index cabd31d..a60c813 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/GeneralizationSet.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/GeneralizationSet.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralizationSet.java,v 1.9 2006/06/07 21:39:13 khussey Exp $
+ * $Id: GeneralizationSet.java,v 1.10 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -138,7 +138,7 @@
 	 * @model type="org.eclipse.uml2.uml.Generalization" opposite="generalizationSet" ordered="false"
 	 * @generated
 	 */
-	EList getGeneralizations();
+	EList<Generalization> getGeneralizations();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Generalization} with the specified '<em><b>General</b></em>' from the '<em><b>Generalization</b></em>' reference list.
@@ -162,7 +162,7 @@
 	 * @generated
 	 */
 	boolean validateGeneralizationSameClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -175,6 +175,6 @@
 	 * @generated
 	 */
 	boolean validateMapsToGeneralizationSet(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // GeneralizationSet
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationFlow.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationFlow.java
index 228bb53..b5abc77 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationFlow.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationFlow.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationFlow.java,v 1.5 2006/05/12 20:38:10 khussey Exp $
+ * $Id: InformationFlow.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -62,7 +62,7 @@
 	 * @model type="org.eclipse.uml2.uml.Relationship" ordered="false"
 	 * @generated
 	 */
-	EList getRealizations();
+	EList<Relationship> getRealizations();
 
 	/**
 	 * Returns the value of the '<em><b>Conveyed</b></em>' reference list.
@@ -77,7 +77,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getConveyeds();
+	EList<Classifier> getConveyeds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Conveyed</b></em>' reference list.
@@ -116,7 +116,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getInformationSources();
+	EList<NamedElement> getInformationSources();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Information Source</b></em>' reference list.
@@ -156,7 +156,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getInformationTargets();
+	EList<NamedElement> getInformationTargets();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Information Target</b></em>' reference list.
@@ -196,7 +196,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" ordered="false"
 	 * @generated
 	 */
-	EList getRealizingActivityEdges();
+	EList<ActivityEdge> getRealizingActivityEdges();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Realizing Activity Edge</b></em>' reference list.
@@ -236,7 +236,7 @@
 	 * @model type="org.eclipse.uml2.uml.Connector" ordered="false"
 	 * @generated
 	 */
-	EList getRealizingConnectors();
+	EList<Connector> getRealizingConnectors();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Connector} with the specified '<em><b>Name</b></em>' from the '<em><b>Realizing Connector</b></em>' reference list.
@@ -274,7 +274,7 @@
 	 * @model type="org.eclipse.uml2.uml.Message" ordered="false"
 	 * @generated
 	 */
-	EList getRealizingMessages();
+	EList<Message> getRealizingMessages();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Message} with the specified '<em><b>Name</b></em>' from the '<em><b>Realizing Message</b></em>' reference list.
@@ -319,7 +319,7 @@
 	 * @generated
 	 */
 	boolean validateSourcesAndTargetsKind(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -331,7 +331,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustConform(DiagnosticChain diagnostics, Map context);
+	boolean validateMustConform(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -345,6 +346,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConveyClassifiers(DiagnosticChain diagnostics, Map context);
+	boolean validateConveyClassifiers(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InformationFlow
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationItem.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationItem.java
index d937aab..eba3fef 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationItem.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InformationItem.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationItem.java,v 1.5 2006/05/12 20:38:08 khussey Exp $
+ * $Id: InformationItem.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList getRepresenteds();
+	EList<Classifier> getRepresenteds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Represented</b></em>' reference list.
@@ -96,7 +96,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSourcesAndTargets(DiagnosticChain diagnostics, Map context);
+	boolean validateSourcesAndTargets(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -108,7 +109,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHasNo(DiagnosticChain diagnostics, Map context);
+	boolean validateHasNo(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -120,6 +122,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotInstantiable(DiagnosticChain diagnostics, Map context);
+	boolean validateNotInstantiable(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InformationItem
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InitialNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InitialNode.java
index 960443c..8b4afbe 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InitialNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InitialNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InitialNode.java,v 1.2 2006/05/12 20:38:06 khussey Exp $
+ * $Id: InitialNode.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,7 +43,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoIncomingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -55,6 +56,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateControlEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateControlEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InitialNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InputPin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InputPin.java
index 58d26c9..0ea932b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InputPin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InputPin.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InputPin.java,v 1.2 2006/05/16 15:07:25 khussey Exp $
+ * $Id: InputPin.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,6 +44,6 @@
 	 * @generated
 	 */
 	boolean validateOutgoingEdgesStructuredOnly(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // InputPin
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InstanceSpecification.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InstanceSpecification.java
index 078662c..17c50bb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InstanceSpecification.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InstanceSpecification.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InstanceSpecification.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: InstanceSpecification.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -59,7 +59,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList getClassifiers();
+	EList<Classifier> getClassifiers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Classifier</b></em>' reference list.
@@ -138,7 +138,7 @@
 	 * @model type="org.eclipse.uml2.uml.Slot" opposite="owningInstance" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getSlots();
+	EList<Slot> getSlots();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Slot} and appends it to the '<em><b>Slot</b></em>' containment reference list.
@@ -160,7 +160,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDefiningFeature(DiagnosticChain diagnostics, Map context);
+	boolean validateDefiningFeature(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -172,7 +173,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateStructuralFeature(DiagnosticChain diagnostics, Map context);
+	boolean validateStructuralFeature(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -184,7 +186,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeploymentTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateDeploymentTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -196,6 +199,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeploymentArtifact(DiagnosticChain diagnostics, Map context);
+	boolean validateDeploymentArtifact(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InstanceSpecification
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interaction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interaction.java
index df09a42..a28f249 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interaction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interaction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Interaction.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Interaction.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.Lifeline" opposite="interaction" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getLifelines();
+	EList<Lifeline> getLifelines();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Lifeline}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Lifeline</b></em>' containment reference list.
@@ -110,7 +110,7 @@
 	 * @model type="org.eclipse.uml2.uml.InteractionFragment" opposite="enclosingInteraction" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getFragments();
+	EList<InteractionFragment> getFragments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InteractionFragment}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Fragment</b></em>' containment reference list.
@@ -163,7 +163,7 @@
 	 * @model type="org.eclipse.uml2.uml.Action" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getActions();
+	EList<Action> getActions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Action}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Action</b></em>' containment reference list.
@@ -217,7 +217,7 @@
 	 * @model type="org.eclipse.uml2.uml.Gate" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getFormalGates();
+	EList<Gate> getFormalGates();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Gate}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Formal Gate</b></em>' containment reference list.
@@ -269,7 +269,7 @@
 	 * @model type="org.eclipse.uml2.uml.Message" opposite="interaction" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getMessages();
+	EList<Message> getMessages();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Message}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Message</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionConstraint.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionConstraint.java
index 79a0e80..503d4ea 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionConstraint.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionConstraint.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionConstraint.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: InteractionConstraint.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -128,7 +128,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDynamicVariables(DiagnosticChain diagnostics, Map context);
+	boolean validateDynamicVariables(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -140,7 +141,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGlobalData(DiagnosticChain diagnostics, Map context);
+	boolean validateGlobalData(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -152,7 +154,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMinintMaxint(DiagnosticChain diagnostics, Map context);
+	boolean validateMinintMaxint(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -164,7 +167,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMinintNonNegative(DiagnosticChain diagnostics, Map context);
+	boolean validateMinintNonNegative(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -176,7 +180,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMaxintPositive(DiagnosticChain diagnostics, Map context);
+	boolean validateMaxintPositive(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -189,6 +194,6 @@
 	 * @generated
 	 */
 	boolean validateMaxintGreaterEqualMinint(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // InteractionConstraint
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionFragment.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionFragment.java
index ec54382..ca16cd7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionFragment.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionFragment.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionFragment.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: InteractionFragment.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.Lifeline" opposite="coveredBy" ordered="false"
 	 * @generated
 	 */
-	EList getCovereds();
+	EList<Lifeline> getCovereds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Lifeline} with the specified '<em><b>Name</b></em>' from the '<em><b>Covered</b></em>' reference list.
@@ -93,7 +93,7 @@
 	 * @model type="org.eclipse.uml2.uml.GeneralOrdering" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getGeneralOrderings();
+	EList<GeneralOrdering> getGeneralOrderings();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.GeneralOrdering}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>General Ordering</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperand.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperand.java
index 876a105..2e398ff 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperand.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperand.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionOperand.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: InteractionOperand.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -95,7 +95,7 @@
 	 * @model type="org.eclipse.uml2.uml.InteractionFragment" opposite="enclosingOperand" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getFragments();
+	EList<InteractionFragment> getFragments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InteractionFragment}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Fragment</b></em>' containment reference list.
@@ -145,7 +145,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGuardDirectlyPrior(DiagnosticChain diagnostics, Map context);
+	boolean validateGuardDirectlyPrior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -158,6 +159,6 @@
 	 * @generated
 	 */
 	boolean validateGuardContainReferences(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // InteractionOperand
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperatorKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperatorKind.java
index 649b6c7..b2a25eb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperatorKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionOperatorKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionOperatorKind.java,v 1.2 2006/05/12 20:38:05 khussey Exp $
+ * $Id: InteractionOperatorKind.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,127 @@
  * @model
  * @generated
  */
-public final class InteractionOperatorKind
-		extends AbstractEnumerator {
+public enum InteractionOperatorKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Seq</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SEQ
+	 * @generated
+	 * @ordered
+	 */
+	SEQ_LITERAL(0, "seq", "seq"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Alt</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ALT
+	 * @generated
+	 * @ordered
+	 */
+	ALT_LITERAL(1, "alt", "alt"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Opt</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OPT
+	 * @generated
+	 * @ordered
+	 */
+	OPT_LITERAL(2, "opt", "opt"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Break</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BREAK
+	 * @generated
+	 * @ordered
+	 */
+	BREAK_LITERAL(3, "break", "break"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Par</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PAR
+	 * @generated
+	 * @ordered
+	 */
+	PAR_LITERAL(4, "par", "par"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Strict</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STRICT
+	 * @generated
+	 * @ordered
+	 */
+	STRICT_LITERAL(5, "strict", "strict"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Loop</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOOP
+	 * @generated
+	 * @ordered
+	 */
+	LOOP_LITERAL(6, "loop", "loop"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Critical</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CRITICAL
+	 * @generated
+	 * @ordered
+	 */
+	CRITICAL_LITERAL(7, "critical", "critical"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Neg</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NEG
+	 * @generated
+	 * @ordered
+	 */
+	NEG_LITERAL(8, "neg", "neg"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Assert</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASSERT
+	 * @generated
+	 * @ordered
+	 */
+	ASSERT_LITERAL(9, "assert", "assert"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Ignore</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IGNORE
+	 * @generated
+	 * @ordered
+	 */
+	IGNORE_LITERAL(10, "ignore", "ignore"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Consider</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CONSIDER
+	 * @generated
+	 * @ordered
+	 */
+	CONSIDER_LITERAL(11, "consider", "consider"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Seq</b></em>' literal value.
@@ -202,138 +321,6 @@
 	public static final int CONSIDER = 11;
 
 	/**
-	 * The '<em><b>Seq</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SEQ
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind SEQ_LITERAL = new InteractionOperatorKind(
-		SEQ, "seq", "seq"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Alt</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ALT
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind ALT_LITERAL = new InteractionOperatorKind(
-		ALT, "alt", "alt"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Opt</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OPT
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind OPT_LITERAL = new InteractionOperatorKind(
-		OPT, "opt", "opt"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Break</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #BREAK
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind BREAK_LITERAL = new InteractionOperatorKind(
-		BREAK, "break", "break"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Par</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PAR
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind PAR_LITERAL = new InteractionOperatorKind(
-		PAR, "par", "par"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Strict</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #STRICT
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind STRICT_LITERAL = new InteractionOperatorKind(
-		STRICT, "strict", "strict"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Loop</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #LOOP
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind LOOP_LITERAL = new InteractionOperatorKind(
-		LOOP, "loop", "loop"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Critical</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CRITICAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind CRITICAL_LITERAL = new InteractionOperatorKind(
-		CRITICAL, "critical", "critical"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Neg</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #NEG
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind NEG_LITERAL = new InteractionOperatorKind(
-		NEG, "neg", "neg"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Assert</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ASSERT
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind ASSERT_LITERAL = new InteractionOperatorKind(
-		ASSERT, "assert", "assert"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Ignore</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #IGNORE
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind IGNORE_LITERAL = new InteractionOperatorKind(
-		IGNORE, "ignore", "ignore"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Consider</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CONSIDER
-	 * @generated
-	 * @ordered
-	 */
-	public static final InteractionOperatorKind CONSIDER_LITERAL = new InteractionOperatorKind(
-		CONSIDER, "consider", "consider"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Interaction Operator Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -350,8 +337,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<InteractionOperatorKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Interaction Operator Kind</b></em>' literal with the specified literal value.
@@ -422,13 +409,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private InteractionOperatorKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //InteractionOperatorKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionUse.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionUse.java
index 25a3e13..b0a99ca 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionUse.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InteractionUse.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionUse.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: InteractionUse.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -83,7 +83,7 @@
 	 * @model type="org.eclipse.uml2.uml.Gate" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getActualGates();
+	EList<Gate> getActualGates();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Gate}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Actual Gate</b></em>' containment reference list.
@@ -133,7 +133,7 @@
 	 * @model type="org.eclipse.uml2.uml.Action" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getArguments();
+	EList<Action> getArguments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Action}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Argument</b></em>' containment reference list.
@@ -183,7 +183,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGatesMatch(DiagnosticChain diagnostics, Map context);
+	boolean validateGatesMatch(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -195,7 +196,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAllLifelines(DiagnosticChain diagnostics, Map context);
+	boolean validateAllLifelines(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -208,7 +210,7 @@
 	 * @generated
 	 */
 	boolean validateArgumentsCorrespondToParameters(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -221,6 +223,6 @@
 	 * @generated
 	 */
 	boolean validateArgumentsAreConstants(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // InteractionUse
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interface.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interface.java
index 84b5974..d434a99 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interface.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Interface.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Interface.java,v 1.10 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Interface.java,v 1.11 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -63,7 +63,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedAttributes();
+	EList<Property> getOwnedAttributes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Attribute</b></em>' containment reference list.
@@ -131,7 +131,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getNestedClassifiers();
+	EList<Classifier> getNestedClassifiers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Classifier}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Classifier</b></em>' containment reference list.
@@ -184,7 +184,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedInterfaces();
+	EList<Interface> getRedefinedInterfaces();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Interface} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Interface</b></em>' reference list.
@@ -222,7 +222,7 @@
 	 * @model type="org.eclipse.uml2.uml.Reception" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedReceptions();
+	EList<Reception> getOwnedReceptions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Reception}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -235,8 +235,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception createOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Reception createOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Reception} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -249,8 +249,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Reception getOwnedReception(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Reception} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Reception</b></em>' containment reference list.
@@ -265,8 +265,8 @@
 	 * @see #getOwnedReceptions()
 	 * @generated
 	 */
-	Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Reception getOwnedReception(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -320,7 +320,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" opposite="interface" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedOperations();
+	EList<Operation> getOwnedOperations();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Operation}, with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>', and appends it to the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -333,8 +333,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation createOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -347,8 +347,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Owned Operation</b></em>' containment reference list.
@@ -363,8 +363,8 @@
 	 * @see #getOwnedOperations()
 	 * @generated
 	 */
-	Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
+	Operation getOwnedOperation(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase,
 			boolean createOnDemand);
 
 	/**
@@ -377,7 +377,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateVisibility(DiagnosticChain diagnostics, Map context);
+	boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -388,8 +389,8 @@
 	 * @model required="true" ordered="false" nameDataType="org.eclipse.uml2.uml.String" nameOrdered="false" parameterNamesType="java.lang.String" parameterNamesDataType="org.eclipse.uml2.uml.String" parameterNamesMany="true" parameterNamesOrdered="false" parameterTypesType="org.eclipse.uml2.uml.Type" parameterTypesMany="true" parameterTypesOrdered="false" returnTypeOrdered="false"
 	 * @generated
 	 */
-	Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType);
+	Operation createOwnedOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InterruptibleActivityRegion.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InterruptibleActivityRegion.java
index ad6cb8f..15aefbb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InterruptibleActivityRegion.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InterruptibleActivityRegion.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterruptibleActivityRegion.java,v 1.5 2006/05/12 20:38:06 khussey Exp $
+ * $Id: InterruptibleActivityRegion.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -59,7 +59,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" opposite="inInterruptibleRegion" ordered="false"
 	 * @generated
 	 */
-	EList getNodes();
+	EList<ActivityNode> getNodes();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Node</b></em>' reference list.
@@ -100,7 +100,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="interrupts" ordered="false"
 	 * @generated
 	 */
-	EList getInterruptingEdges();
+	EList<ActivityEdge> getInterruptingEdges();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ActivityEdge} with the specified '<em><b>Name</b></em>' from the '<em><b>Interrupting Edge</b></em>' reference list.
@@ -138,6 +138,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInterruptingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateInterruptingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InterruptibleActivityRegion
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InvocationAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InvocationAction.java
index a478cea..c2057dc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InvocationAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/InvocationAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InvocationAction.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: InvocationAction.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getArguments();
+	EList<InputPin> getArguments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Argument</b></em>' containment reference list.
@@ -148,6 +148,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOnPortReceiver(DiagnosticChain diagnostics, Map context);
+	boolean validateOnPortReceiver(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // InvocationAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/JoinNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/JoinNode.java
index 6e6bc3f..f108dd5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/JoinNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/JoinNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: JoinNode.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: JoinNode.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -117,7 +117,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneOutgoingEdge(DiagnosticChain diagnostics, Map context);
+	boolean validateOneOutgoingEdge(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -132,6 +133,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateIncomingObjectFlow(DiagnosticChain diagnostics, Map context);
+	boolean validateIncomingObjectFlow(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // JoinNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Lifeline.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Lifeline.java
index c0b26dd..1c61471 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Lifeline.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Lifeline.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Lifeline.java,v 1.11 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Lifeline.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -177,7 +177,7 @@
 	 * @model type="org.eclipse.uml2.uml.InteractionFragment" opposite="covered" ordered="false"
 	 * @generated
 	 */
-	EList getCoveredBys();
+	EList<InteractionFragment> getCoveredBys();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.InteractionFragment} with the specified '<em><b>Name</b></em>' from the '<em><b>Covered By</b></em>' reference list.
@@ -215,7 +215,7 @@
 	 * @generated
 	 */
 	boolean validateInteractionUsesShareLifeline(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -229,7 +229,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSelectorSpecified(DiagnosticChain diagnostics, Map context);
+	boolean validateSelectorSpecified(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -243,6 +244,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameClassifier(DiagnosticChain diagnostics, Map context);
+	boolean validateSameClassifier(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Lifeline
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkAction.java
index bd6c921..cc42538 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkAction.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: LinkAction.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -57,7 +57,7 @@
 	 * @model type="org.eclipse.uml2.uml.LinkEndData" containment="true" resolveProxies="true" lower="2" ordered="false"
 	 * @generated
 	 */
-	EList getEndData();
+	EList<LinkEndData> getEndData();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.LinkEndData} and appends it to the '<em><b>End Data</b></em>' containment reference list.
@@ -93,7 +93,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" containment="true" resolveProxies="true" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getInputValues();
+	EList<InputPin> getInputValues();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Input Value</b></em>' containment reference list.
@@ -158,7 +158,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameAssociation(DiagnosticChain diagnostics, Map context);
+	boolean validateSameAssociation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -170,7 +171,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotStatic(DiagnosticChain diagnostics, Map context);
+	boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -187,7 +189,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSamePins(DiagnosticChain diagnostics, Map context);
+	boolean validateSamePins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndCreationData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndCreationData.java
index ec172fc..a6cf937 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndCreationData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndCreationData.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndCreationData.java,v 1.5 2006/05/12 20:38:04 khussey Exp $
+ * $Id: LinkEndCreationData.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -101,7 +101,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCreateLinkAction(DiagnosticChain diagnostics, Map context);
+	boolean validateCreateLinkAction(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -121,6 +122,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSingleInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateSingleInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // LinkEndCreationData
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndData.java
index 7f94904..aeb6eca 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndData.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndData.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: LinkEndData.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -106,7 +106,7 @@
 	 * @model type="org.eclipse.uml2.uml.QualifierValue" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getQualifiers();
+	EList<QualifierValue> getQualifiers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.QualifierValue} and appends it to the '<em><b>Qualifier</b></em>' containment reference list.
@@ -129,7 +129,7 @@
 	 * @generated
 	 */
 	boolean validatePropertyIsAssociationEnd(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -141,7 +141,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -153,7 +154,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -165,7 +167,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateQualifiers(DiagnosticChain diagnostics, Map context);
+	boolean validateQualifiers(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -177,6 +180,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEndObjectInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateEndObjectInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // LinkEndData
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndDestructionData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndDestructionData.java
index fdf44a2..f3bc78b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndDestructionData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LinkEndDestructionData.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndDestructionData.java,v 1.5 2006/05/12 20:38:08 khussey Exp $
+ * $Id: LinkEndDestructionData.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -101,7 +101,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDestroyLinkAction(DiagnosticChain diagnostics, Map context);
+	boolean validateDestroyLinkAction(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -114,6 +115,6 @@
 	 * @generated
 	 */
 	boolean validateUnlimitedNaturalAndMultiplicity(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 } // LinkEndDestructionData
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LoopNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LoopNode.java
index 433302a..a077d92 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LoopNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/LoopNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LoopNode.java,v 1.11 2006/05/26 16:34:02 khussey Exp $
+ * $Id: LoopNode.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -92,7 +92,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" ordered="false"
 	 * @generated
 	 */
-	EList getBodyParts();
+	EList<ExecutableNode> getBodyParts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExecutableNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Body Part</b></em>' reference list.
@@ -131,7 +131,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" ordered="false"
 	 * @generated
 	 */
-	EList getSetupParts();
+	EList<ExecutableNode> getSetupParts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExecutableNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Setup Part</b></em>' reference list.
@@ -195,7 +195,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" ordered="false"
 	 * @generated
 	 */
-	EList getTests();
+	EList<ExecutableNode> getTests();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ExecutableNode} with the specified '<em><b>Name</b></em>' from the '<em><b>Test</b></em>' reference list.
@@ -234,7 +234,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getResults();
+	EList<OutputPin> getResults();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Result</b></em>' containment reference list.
@@ -288,7 +288,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin"
 	 * @generated
 	 */
-	EList getLoopVariables();
+	EList<OutputPin> getLoopVariables();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.OutputPin} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Loop Variable</b></em>' reference list.
@@ -328,7 +328,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin"
 	 * @generated
 	 */
-	EList getBodyOutputs();
+	EList<OutputPin> getBodyOutputs();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.OutputPin} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Body Output</b></em>' reference list.
@@ -368,7 +368,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getLoopVariableInputs();
+	EList<InputPin> getLoopVariableInputs();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Loop Variable Input</b></em>' containment reference list.
@@ -433,7 +433,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInputEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateInputEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -445,7 +446,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBodyOutputPins(DiagnosticChain diagnostics, Map context);
+	boolean validateBodyOutputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -457,6 +459,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateResultNoIncoming(DiagnosticChain diagnostics, Map context);
+	boolean validateResultNoIncoming(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // LoopNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MergeNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MergeNode.java
index 9e30a9f..1aaae51 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MergeNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MergeNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MergeNode.java,v 1.2 2006/05/12 20:38:04 khussey Exp $
+ * $Id: MergeNode.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,7 +43,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneOutgoingEdge(DiagnosticChain diagnostics, Map context);
+	boolean validateOneOutgoingEdge(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -55,6 +56,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // MergeNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Message.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Message.java
index d4dad83..72fcc67 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Message.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Message.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Message.java,v 1.13 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Message.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -211,7 +211,7 @@
 	 * @model type="org.eclipse.uml2.uml.ValueSpecification" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getArguments();
+	EList<ValueSpecification> getArguments();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ValueSpecification}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Argument</b></em>' containment reference list.
@@ -279,7 +279,7 @@
 	 * @generated
 	 */
 	boolean validateSendingReceivingMessageEvent(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -291,7 +291,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSignatureReferTo(DiagnosticChain diagnostics, Map context);
+	boolean validateSignatureReferTo(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -304,7 +305,7 @@
 	 * @generated
 	 */
 	boolean validateSignatureIsOperation(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -316,7 +317,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSignatureIsSignal(DiagnosticChain diagnostics, Map context);
+	boolean validateSignatureIsSignal(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -334,7 +336,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateArguments(DiagnosticChain diagnostics, Map context);
+	boolean validateArguments(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -347,7 +350,7 @@
 	 * @generated
 	 */
 	boolean validateCannotCrossBoundaries(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -360,6 +363,6 @@
 	 * @generated
 	 */
 	boolean validateOccurrenceSpecifications(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // Message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageKind.java
index dfc8693..4c887e4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageKind.java,v 1.4 2006/05/12 20:38:04 khussey Exp $
+ * $Id: MessageKind.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,47 @@
  * @model
  * @generated
  */
-public final class MessageKind
-		extends AbstractEnumerator {
+public enum MessageKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Complete</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COMPLETE
+	 * @generated
+	 * @ordered
+	 */
+	COMPLETE_LITERAL(0, "complete", "complete"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Lost</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOST
+	 * @generated
+	 * @ordered
+	 */
+	LOST_LITERAL(1, "lost", "lost"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Found</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FOUND
+	 * @generated
+	 * @ordered
+	 */
+	FOUND_LITERAL(2, "found", "found"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Unknown</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNKNOWN
+	 * @generated
+	 * @ordered
+	 */
+	UNKNOWN_LITERAL(3, "unknown", "unknown"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Complete</b></em>' literal value.
@@ -90,50 +129,6 @@
 	public static final int UNKNOWN = 3;
 
 	/**
-	 * The '<em><b>Complete</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #COMPLETE
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageKind COMPLETE_LITERAL = new MessageKind(
-		COMPLETE, "complete", "complete"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Lost</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #LOST
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageKind LOST_LITERAL = new MessageKind(LOST,
-		"lost", "lost"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Found</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #FOUND
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageKind FOUND_LITERAL = new MessageKind(FOUND,
-		"found", "found"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Unknown</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #UNKNOWN
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageKind UNKNOWN_LITERAL = new MessageKind(UNKNOWN,
-		"unknown", "unknown"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Message Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -148,8 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<MessageKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Message Kind</b></em>' literal with the specified literal value.
@@ -204,13 +199,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private MessageKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //MessageKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageSort.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageSort.java
index a8a3b9c..8f819fc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageSort.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MessageSort.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageSort.java,v 1.5 2006/05/12 20:38:04 khussey Exp $
+ * $Id: MessageSort.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,67 @@
  * @model
  * @generated
  */
-public final class MessageSort
-		extends AbstractEnumerator {
+public enum MessageSort
+		implements Enumerator {
+	/**
+	 * The '<em><b>Synch Call</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SYNCH_CALL
+	 * @generated
+	 * @ordered
+	 */
+	SYNCH_CALL_LITERAL(0, "synchCall", "synchCall"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Asynch Call</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASYNCH_CALL
+	 * @generated
+	 * @ordered
+	 */
+	ASYNCH_CALL_LITERAL(1, "asynchCall", "asynchCall"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Asynch Signal</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ASYNCH_SIGNAL
+	 * @generated
+	 * @ordered
+	 */
+	ASYNCH_SIGNAL_LITERAL(2, "asynchSignal", "asynchSignal"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Create Message</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CREATE_MESSAGE
+	 * @generated
+	 * @ordered
+	 */
+	CREATE_MESSAGE_LITERAL(3, "createMessage", "createMessage"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Delete Message</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DELETE_MESSAGE
+	 * @generated
+	 * @ordered
+	 */
+	DELETE_MESSAGE_LITERAL(4, "deleteMessage", "deleteMessage"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Reply</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #REPLY
+	 * @generated
+	 * @ordered
+	 */
+	REPLY_LITERAL(5, "reply", "reply"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Synch Call</b></em>' literal value.
@@ -120,72 +179,6 @@
 	public static final int REPLY = 5;
 
 	/**
-	 * The '<em><b>Synch Call</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SYNCH_CALL
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort SYNCH_CALL_LITERAL = new MessageSort(
-		SYNCH_CALL, "synchCall", "synchCall"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Asynch Call</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ASYNCH_CALL
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort ASYNCH_CALL_LITERAL = new MessageSort(
-		ASYNCH_CALL, "asynchCall", "asynchCall"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Asynch Signal</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ASYNCH_SIGNAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort ASYNCH_SIGNAL_LITERAL = new MessageSort(
-		ASYNCH_SIGNAL, "asynchSignal", "asynchSignal"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Create Message</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CREATE_MESSAGE
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort CREATE_MESSAGE_LITERAL = new MessageSort(
-		CREATE_MESSAGE, "createMessage", "createMessage"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Delete Message</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DELETE_MESSAGE
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort DELETE_MESSAGE_LITERAL = new MessageSort(
-		DELETE_MESSAGE, "deleteMessage", "deleteMessage"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Reply</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #REPLY
-	 * @generated
-	 * @ordered
-	 */
-	public static final MessageSort REPLY_LITERAL = new MessageSort(REPLY,
-		"reply", "reply"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Message Sort</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -201,8 +194,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<MessageSort> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Message Sort</b></em>' literal with the specified literal value.
@@ -261,13 +254,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private MessageSort(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //MessageSort
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MultiplicityElement.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MultiplicityElement.java
index d27ab34..3076e90 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MultiplicityElement.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/MultiplicityElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MultiplicityElement.java,v 1.15 2006/06/07 21:39:13 khussey Exp $
+ * $Id: MultiplicityElement.java,v 1.16 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -236,7 +236,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateUpperGt0(DiagnosticChain diagnostics, Map context);
+	boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -248,7 +249,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateLowerGe0(DiagnosticChain diagnostics, Map context);
+	boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -260,7 +262,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context);
+	boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -273,7 +276,7 @@
 	 * @generated
 	 */
 	boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -286,7 +289,7 @@
 	 * @generated
 	 */
 	boolean validateValueSpecificationConstant(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/NamedElement.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/NamedElement.java
index e6e9c4c..358bd5d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/NamedElement.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/NamedElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NamedElement.java,v 1.15 2006/05/26 16:34:03 khussey Exp $
+ * $Id: NamedElement.java,v 1.16 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -185,7 +185,7 @@
 	 * @model type="org.eclipse.uml2.uml.Dependency" opposite="client" ordered="false"
 	 * @generated
 	 */
-	EList getClientDependencies();
+	EList<Dependency> getClientDependencies();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Dependency} with the specified '<em><b>Name</b></em>' from the '<em><b>Client Dependency</b></em>' reference list.
@@ -276,7 +276,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHasNoQualifiedName(DiagnosticChain diagnostics, Map context);
+	boolean validateHasNoQualifiedName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -289,7 +290,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHasQualifiedName(DiagnosticChain diagnostics, Map context);
+	boolean validateHasQualifiedName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -302,7 +304,7 @@
 	 * @generated
 	 */
 	boolean validateVisibilityNeedsOwnership(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -350,7 +352,7 @@
 	 * @model type="org.eclipse.uml2.uml.Namespace"
 	 * @generated
 	 */
-	EList allNamespaces();
+	EList<Namespace> allNamespaces();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -389,7 +391,7 @@
 	 * @model type="org.eclipse.uml2.uml.Package" ordered="false"
 	 * @generated
 	 */
-	EList allOwningPackages();
+	EList<org.eclipse.uml2.uml.Package> allOwningPackages();
 
 	String SEPARATOR = "::"; //$NON-NLS-1$
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Namespace.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Namespace.java
index 03f6b1a..b3246fd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Namespace.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Namespace.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Namespace.java,v 1.11 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Namespace.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -63,7 +63,7 @@
 	 * @model type="org.eclipse.uml2.uml.ElementImport" opposite="importingNamespace" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getElementImports();
+	EList<ElementImport> getElementImports();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ElementImport}, with the specified '<em><b>Imported Element</b></em>', and appends it to the '<em><b>Element Import</b></em>' containment reference list.
@@ -115,7 +115,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageImport" opposite="importingNamespace" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPackageImports();
+	EList<PackageImport> getPackageImports();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.PackageImport}, with the specified '<em><b>Imported Package</b></em>', and appends it to the '<em><b>Package Import</b></em>' containment reference list.
@@ -168,7 +168,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" opposite="context" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedRules();
+	EList<Constraint> getOwnedRules();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Rule</b></em>' containment reference list.
@@ -232,7 +232,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getMembers();
+	EList<NamedElement> getMembers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Member</b></em>' reference list.
@@ -271,7 +271,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getImportedMembers();
+	EList<PackageableElement> getImportedMembers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.PackageableElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Imported Member</b></em>' reference list.
@@ -313,7 +313,7 @@
 	 * @model type="org.eclipse.uml2.uml.NamedElement" opposite="namespace" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedMembers();
+	EList<NamedElement> getOwnedMembers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.NamedElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Owned Member</b></em>' reference list.
@@ -350,7 +350,7 @@
 	 * @generated
 	 */
 	boolean validateMembersDistinguishable(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -385,7 +385,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.PackageableElement" ordered="false"
 	 * @generated
 	 */
-	EList getImportedElements();
+	EList<PackageableElement> getImportedElements();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -396,7 +396,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Package" ordered="false"
 	 * @generated
 	 */
-	EList getImportedPackages();
+	EList<org.eclipse.uml2.uml.Package> getImportedPackages();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -416,7 +416,7 @@
 	 * @model type="java.lang.String" dataType="org.eclipse.uml2.uml.String" ordered="false" elementRequired="true" elementOrdered="false"
 	 * @generated
 	 */
-	EList getNamesOfMember(NamedElement element);
+	EList<String> getNamesOfMember(NamedElement element);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -443,7 +443,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" ordered="false" impsType="org.eclipse.uml2.uml.PackageableElement" impsMany="true" impsOrdered="false"
 	 * @generated
 	 */
-	EList importMembers(EList imps);
+	EList<PackageableElement> importMembers(EList<PackageableElement> imps);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -455,6 +455,6 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" ordered="false" impsType="org.eclipse.uml2.uml.PackageableElement" impsMany="true" impsOrdered="false"
 	 * @generated
 	 */
-	EList excludeCollisions(EList imps);
+	EList<PackageableElement> excludeCollisions(EList<PackageableElement> imps);
 
 } // Namespace
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Node.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Node.java
index 89f41d1..0951bf0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Node.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Node.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Node.java,v 1.6 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Node.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -57,7 +57,7 @@
 	 * @model type="org.eclipse.uml2.uml.Node" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getNestedNodes();
+	EList<Node> getNestedNodes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Node}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Node</b></em>' containment reference list.
@@ -118,6 +118,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInternalStructure(DiagnosticChain diagnostics, Map context);
+	boolean validateInternalStructure(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Node
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectFlow.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectFlow.java
index 67243ad..f3935f5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectFlow.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectFlow.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectFlow.java,v 1.5 2006/05/12 20:38:04 khussey Exp $
+ * $Id: ObjectFlow.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -155,7 +155,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoActions(DiagnosticChain diagnostics, Map context);
+	boolean validateNoActions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -168,7 +169,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCompatibleTypes(DiagnosticChain diagnostics, Map context);
+	boolean validateCompatibleTypes(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -180,7 +182,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameUpperBounds(DiagnosticChain diagnostics, Map context);
+	boolean validateSameUpperBounds(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -192,7 +195,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -205,7 +209,7 @@
 	 * @generated
 	 */
 	boolean validateTransformationBehaviour(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -217,7 +221,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSelectionBehaviour(DiagnosticChain diagnostics, Map context);
+	boolean validateSelectionBehaviour(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -230,7 +235,7 @@
 	 * @generated
 	 */
 	boolean validateInputAndOutputParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -243,6 +248,6 @@
 	 * @generated
 	 */
 	boolean validateIsMulticastOrIsMultireceive(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ObjectFlow
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNode.java
index ad35495..146c04c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectNode.java,v 1.9 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ObjectNode.java,v 1.10 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -154,7 +154,7 @@
 	 * @model type="org.eclipse.uml2.uml.State" ordered="false"
 	 * @generated
 	 */
-	EList getInStates();
+	EList<State> getInStates();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.State} with the specified '<em><b>Name</b></em>' from the '<em><b>In State</b></em>' reference list.
@@ -215,7 +215,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateObjectFlowEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateObjectFlowEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -227,7 +228,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotUnique(DiagnosticChain diagnostics, Map context);
+	boolean validateNotUnique(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -239,7 +241,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSelectionBehavior(DiagnosticChain diagnostics, Map context);
+	boolean validateSelectionBehavior(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -252,6 +255,6 @@
 	 * @generated
 	 */
 	boolean validateInputOutputParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ObjectNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNodeOrderingKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNodeOrderingKind.java
index ccd4c8c..cdf06f1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNodeOrderingKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ObjectNodeOrderingKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectNodeOrderingKind.java,v 1.2 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ObjectNodeOrderingKind.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,47 @@
  * @model
  * @generated
  */
-public final class ObjectNodeOrderingKind
-		extends AbstractEnumerator {
+public enum ObjectNodeOrderingKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Unordered</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNORDERED
+	 * @generated
+	 * @ordered
+	 */
+	UNORDERED_LITERAL(0, "unordered", "unordered"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Ordered</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ORDERED
+	 * @generated
+	 * @ordered
+	 */
+	ORDERED_LITERAL(1, "ordered", "ordered"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>LIFO</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LIFO
+	 * @generated
+	 * @ordered
+	 */
+	LIFO_LITERAL(2, "LIFO", "LIFO"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>FIFO</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FIFO
+	 * @generated
+	 * @ordered
+	 */
+	FIFO_LITERAL(3, "FIFO", "FIFO"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Unordered</b></em>' literal value.
@@ -90,50 +129,6 @@
 	public static final int FIFO = 3;
 
 	/**
-	 * The '<em><b>Unordered</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #UNORDERED
-	 * @generated
-	 * @ordered
-	 */
-	public static final ObjectNodeOrderingKind UNORDERED_LITERAL = new ObjectNodeOrderingKind(
-		UNORDERED, "unordered", "unordered"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Ordered</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ORDERED
-	 * @generated
-	 * @ordered
-	 */
-	public static final ObjectNodeOrderingKind ORDERED_LITERAL = new ObjectNodeOrderingKind(
-		ORDERED, "ordered", "ordered"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>LIFO</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #LIFO
-	 * @generated
-	 * @ordered
-	 */
-	public static final ObjectNodeOrderingKind LIFO_LITERAL = new ObjectNodeOrderingKind(
-		LIFO, "LIFO", "LIFO"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>FIFO</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #FIFO
-	 * @generated
-	 * @ordered
-	 */
-	public static final ObjectNodeOrderingKind FIFO_LITERAL = new ObjectNodeOrderingKind(
-		FIFO, "FIFO", "FIFO"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Object Node Ordering Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -148,8 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<ObjectNodeOrderingKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Object Node Ordering Kind</b></em>' literal with the specified literal value.
@@ -204,13 +199,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private ObjectNodeOrderingKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //ObjectNodeOrderingKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OccurrenceSpecification.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OccurrenceSpecification.java
index bc8f1d1..d8e9058 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OccurrenceSpecification.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OccurrenceSpecification.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OccurrenceSpecification.java,v 1.6 2006/05/12 20:38:05 khussey Exp $
+ * $Id: OccurrenceSpecification.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.GeneralOrdering" opposite="after" ordered="false"
 	 * @generated
 	 */
-	EList getToBefores();
+	EList<GeneralOrdering> getToBefores();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.GeneralOrdering} with the specified '<em><b>Name</b></em>' from the '<em><b>To Before</b></em>' reference list.
@@ -121,7 +121,7 @@
 	 * @model type="org.eclipse.uml2.uml.GeneralOrdering" opposite="before" ordered="false"
 	 * @generated
 	 */
-	EList getToAfters();
+	EList<GeneralOrdering> getToAfters();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.GeneralOrdering} with the specified '<em><b>Name</b></em>' from the '<em><b>To After</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueAction.java
index 6a4c096..cbf3384 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueAction.java,v 1.8 2006/10/10 20:41:28 khussey Exp $
+ * $Id: OpaqueAction.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 *        extendedMetaData="kind='element'"
 	 * @generated
 	 */
-	EList getBodies();
+	EList<String> getBodies();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueAction#getBodies <em>Body</em>}' attribute list.
@@ -96,7 +96,7 @@
 	 * @model type="java.lang.String" unsettable="true" dataType="org.eclipse.uml2.uml.String"
 	 * @generated
 	 */
-	EList getLanguages();
+	EList<String> getLanguages();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueAction#getLanguages <em>Language</em>}' attribute list.
@@ -132,7 +132,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getInputValues();
+	EList<InputPin> getInputValues();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Input Value</b></em>' containment reference list.
@@ -215,7 +215,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOutputValues();
+	EList<OutputPin> getOutputValues();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Output Value</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueBehavior.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueBehavior.java
index 3c89ee5..5747f0c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueBehavior.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueBehavior.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueBehavior.java,v 1.5 2006/10/10 20:41:28 khussey Exp $
+ * $Id: OpaqueBehavior.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -54,7 +54,7 @@
 	 *        extendedMetaData="kind='element'"
 	 * @generated
 	 */
-	EList getBodies();
+	EList<String> getBodies();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueBehavior#getBodies <em>Body</em>}' attribute list.
@@ -92,7 +92,7 @@
 	 * @model type="java.lang.String" unsettable="true" dataType="org.eclipse.uml2.uml.String"
 	 * @generated
 	 */
-	EList getLanguages();
+	EList<String> getLanguages();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueBehavior#getLanguages <em>Language</em>}' attribute list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueExpression.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueExpression.java
index 7956131..5c8ccbd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueExpression.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OpaqueExpression.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueExpression.java,v 1.11 2006/10/10 20:41:28 khussey Exp $
+ * $Id: OpaqueExpression.java,v 1.12 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -61,7 +61,7 @@
 	 *        extendedMetaData="kind='element'"
 	 * @generated
 	 */
-	EList getBodies();
+	EList<String> getBodies();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueExpression#getBodies <em>Body</em>}' attribute list.
@@ -99,7 +99,7 @@
 	 * @model type="java.lang.String" unsettable="true" dataType="org.eclipse.uml2.uml.String"
 	 * @generated
 	 */
-	EList getLanguages();
+	EList<String> getLanguages();
 
 	/**
 	 * Unsets the value of the '{@link org.eclipse.uml2.uml.OpaqueExpression#getLanguages <em>Language</em>}' attribute list.
@@ -171,7 +171,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateLanguageBodySize(DiagnosticChain diagnostics, Map context);
+	boolean validateLanguageBodySize(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -185,7 +186,7 @@
 	 * @generated
 	 */
 	boolean validateOnlyReturnResultParameters(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -199,7 +200,7 @@
 	 * @generated
 	 */
 	boolean validateOneReturnResultParameter(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Operation.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Operation.java
index f0bd3e5..4e1a81b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Operation.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Operation.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Operation.java,v 1.14 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Operation.java,v 1.15 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -231,7 +231,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" ordered="false"
 	 * @generated
 	 */
-	EList getPreconditions();
+	EList<Constraint> getPreconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Precondition</b></em>' reference list.
@@ -295,7 +295,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" ordered="false"
 	 * @generated
 	 */
-	EList getPostconditions();
+	EList<Constraint> getPostconditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Postcondition</b></em>' reference list.
@@ -359,7 +359,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedOperations();
+	EList<Operation> getRedefinedOperations();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Redefined Operation</b></em>' reference list.
@@ -372,8 +372,8 @@
 	 * @see #getRedefinedOperations()
 	 * @generated
 	 */
-	Operation getRedefinedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getRedefinedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Redefined Operation</b></em>' reference list.
@@ -387,8 +387,9 @@
 	 * @see #getRedefinedOperations()
 	 * @generated
 	 */
-	Operation getRedefinedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase);
+	Operation getRedefinedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase);
 
 	/**
 	 * Returns the value of the '<em><b>Datatype</b></em>' container reference.
@@ -528,7 +529,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAtMostOneReturn(DiagnosticChain diagnostics, Map context);
+	boolean validateAtMostOneReturn(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -540,7 +542,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOnlyBodyForQuery(DiagnosticChain diagnostics, Map context);
+	boolean validateOnlyBodyForQuery(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -587,6 +590,6 @@
 	 * @model type="org.eclipse.uml2.uml.Parameter" ordered="false"
 	 * @generated
 	 */
-	EList returnResult();
+	EList<Parameter> returnResult();
 
 } // Operation
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OutputPin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OutputPin.java
index 1ddc125..32c4e2e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OutputPin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/OutputPin.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OutputPin.java,v 1.2 2006/05/16 15:07:26 khussey Exp $
+ * $Id: OutputPin.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,6 +44,6 @@
 	 * @generated
 	 */
 	boolean validateIncomingEdgesStructuredOnly(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // OutputPin
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Package.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Package.java
index 03429b8..ec97e5b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Package.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Package.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Package.java,v 1.17 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Package.java,v 1.18 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -19,6 +19,7 @@
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
@@ -65,7 +66,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageMerge" opposite="receivingPackage" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPackageMerges();
+	EList<PackageMerge> getPackageMerges();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.PackageMerge}, with the specified '<em><b>Merged Package</b></em>', and appends it to the '<em><b>Package Merge</b></em>' containment reference list.
@@ -114,7 +115,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getPackagedElements();
+	EList<PackageableElement> getPackagedElements();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.PackageableElement}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Packaged Element</b></em>' containment reference list.
@@ -169,7 +170,7 @@
 	 * @model type="org.eclipse.uml2.uml.Type" opposite="package" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedTypes();
+	EList<Type> getOwnedTypes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Type}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Type</b></em>' reference list.
@@ -224,7 +225,7 @@
 	 * @model type="org.eclipse.uml2.uml.Package" opposite="nestingPackage" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getNestedPackages();
+	EList<Package> getNestedPackages();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Package}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Package</b></em>' reference list.
@@ -306,7 +307,7 @@
 	 * @model type="org.eclipse.uml2.uml.ProfileApplication" opposite="applyingPackage" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getProfileApplications();
+	EList<ProfileApplication> getProfileApplications();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ProfileApplication} and appends it to the '<em><b>Profile Application</b></em>' containment reference list.
@@ -329,7 +330,7 @@
 	 * @generated
 	 */
 	boolean validateElementsPublicOrPrivate(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Package}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Nested Package</b></em>' reference list.
@@ -395,7 +396,7 @@
 	 * @model type="org.eclipse.emf.ecore.EObject" ordered="false" profileRequired="true" profileOrdered="false"
 	 * @generated
 	 */
-	EList applyProfile(Profile profile);
+	EList<EObject> applyProfile(Profile profile);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -406,7 +407,7 @@
 	 * @model type="org.eclipse.emf.ecore.EObject" ordered="false" profileRequired="true" profileOrdered="false"
 	 * @generated
 	 */
-	EList unapplyProfile(Profile profile);
+	EList<EObject> unapplyProfile(Profile profile);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -417,7 +418,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Profile" ordered="false"
 	 * @generated
 	 */
-	EList getAppliedProfiles();
+	EList<Profile> getAppliedProfiles();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -450,7 +451,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.ProfileApplication" ordered="false"
 	 * @generated
 	 */
-	EList getAllProfileApplications();
+	EList<ProfileApplication> getAllProfileApplications();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -505,7 +506,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Profile" ordered="false"
 	 * @generated
 	 */
-	EList getAllAppliedProfiles();
+	EList<Profile> getAllAppliedProfiles();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -517,7 +518,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageableElement" ordered="false"
 	 * @generated
 	 */
-	EList visibleMembers();
+	EList<PackageableElement> visibleMembers();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PackageImport.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PackageImport.java
index 2ff36b8..730998b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PackageImport.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PackageImport.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageImport.java,v 1.6 2006/05/12 20:38:09 khussey Exp $
+ * $Id: PackageImport.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -132,6 +132,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePublicOrPrivate(DiagnosticChain diagnostics, Map context);
+	boolean validatePublicOrPrivate(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // PackageImport
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Parameter.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Parameter.java
index 5d2b0b5..6d43f21 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Parameter.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Parameter.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Parameter.java,v 1.17 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Parameter.java,v 1.18 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -67,7 +67,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterSet" opposite="parameter" ordered="false"
 	 * @generated
 	 */
-	EList getParameterSets();
+	EList<ParameterSet> getParameterSets();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ParameterSet} with the specified '<em><b>Name</b></em>' from the '<em><b>Parameter Set</b></em>' reference list.
@@ -342,7 +342,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConnectorEnd(DiagnosticChain diagnostics, Map context);
+	boolean validateConnectorEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -354,7 +355,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateStreamAndException(DiagnosticChain diagnostics, Map context);
+	boolean validateStreamAndException(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -366,7 +368,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotException(DiagnosticChain diagnostics, Map context);
+	boolean validateNotException(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -378,7 +381,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateReentrantBehaviors(DiagnosticChain diagnostics, Map context);
+	boolean validateReentrantBehaviors(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -390,7 +394,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInAndOut(DiagnosticChain diagnostics, Map context);
+	boolean validateInAndOut(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterDirectionKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterDirectionKind.java
index ae05a29..9f06853 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterDirectionKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterDirectionKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterDirectionKind.java,v 1.4 2006/05/12 20:38:09 khussey Exp $
+ * $Id: ParameterDirectionKind.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,47 @@
  * @model
  * @generated
  */
-public final class ParameterDirectionKind
-		extends AbstractEnumerator {
+public enum ParameterDirectionKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>In</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IN
+	 * @generated
+	 * @ordered
+	 */
+	IN_LITERAL(0, "in", "in"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Inout</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INOUT
+	 * @generated
+	 * @ordered
+	 */
+	INOUT_LITERAL(1, "inout", "inout"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Out</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OUT
+	 * @generated
+	 * @ordered
+	 */
+	OUT_LITERAL(2, "out", "out"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Return</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RETURN
+	 * @generated
+	 * @ordered
+	 */
+	RETURN_LITERAL(3, "return", "return"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>In</b></em>' literal value.
@@ -90,50 +129,6 @@
 	public static final int RETURN = 3;
 
 	/**
-	 * The '<em><b>In</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #IN
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterDirectionKind IN_LITERAL = new ParameterDirectionKind(
-		IN, "in", "in"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Inout</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #INOUT
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterDirectionKind INOUT_LITERAL = new ParameterDirectionKind(
-		INOUT, "inout", "inout"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Out</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #OUT
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterDirectionKind OUT_LITERAL = new ParameterDirectionKind(
-		OUT, "out", "out"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Return</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #RETURN
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterDirectionKind RETURN_LITERAL = new ParameterDirectionKind(
-		RETURN, "return", "return"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Parameter Direction Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -148,8 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<ParameterDirectionKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Parameter Direction Kind</b></em>' literal with the specified literal value.
@@ -204,13 +199,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private ParameterDirectionKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //ParameterDirectionKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterEffectKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterEffectKind.java
index 3084a17..a87e6a7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterEffectKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterEffectKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterEffectKind.java,v 1.2 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ParameterEffectKind.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,47 @@
  * @model
  * @generated
  */
-public final class ParameterEffectKind
-		extends AbstractEnumerator {
+public enum ParameterEffectKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Create</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CREATE
+	 * @generated
+	 * @ordered
+	 */
+	CREATE_LITERAL(0, "create", "create"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Read</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #READ
+	 * @generated
+	 * @ordered
+	 */
+	READ_LITERAL(1, "read", "read"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Update</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UPDATE
+	 * @generated
+	 * @ordered
+	 */
+	UPDATE_LITERAL(2, "update", "update"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Delete</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DELETE
+	 * @generated
+	 * @ordered
+	 */
+	DELETE_LITERAL(3, "delete", "delete"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Create</b></em>' literal value.
@@ -90,50 +129,6 @@
 	public static final int DELETE = 3;
 
 	/**
-	 * The '<em><b>Create</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CREATE
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterEffectKind CREATE_LITERAL = new ParameterEffectKind(
-		CREATE, "create", "create"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Read</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #READ
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterEffectKind READ_LITERAL = new ParameterEffectKind(
-		READ, "read", "read"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Update</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #UPDATE
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterEffectKind UPDATE_LITERAL = new ParameterEffectKind(
-		UPDATE, "update", "update"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Delete</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DELETE
-	 * @generated
-	 * @ordered
-	 */
-	public static final ParameterEffectKind DELETE_LITERAL = new ParameterEffectKind(
-		DELETE, "delete", "delete"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Parameter Effect Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -148,8 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<ParameterEffectKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Parameter Effect Kind</b></em>' literal with the specified literal value.
@@ -204,13 +199,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private ParameterEffectKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //ParameterEffectKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterSet.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterSet.java
index ae21471..1fe050a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterSet.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ParameterSet.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterSet.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ParameterSet.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -59,7 +59,7 @@
 	 * @model type="org.eclipse.uml2.uml.Parameter" opposite="parameterSet" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getParameters();
+	EList<Parameter> getParameters();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Parameter} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Parameter</b></em>' reference list.
@@ -99,7 +99,7 @@
 	 * @model type="org.eclipse.uml2.uml.Constraint" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConditions();
+	EList<Constraint> getConditions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Constraint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Condition</b></em>' containment reference list.
@@ -161,7 +161,7 @@
 	 * @generated
 	 */
 	boolean validateSameParameterizedEntity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -173,7 +173,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInput(DiagnosticChain diagnostics, Map context);
+	boolean validateInput(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -185,6 +186,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTwoParameterSets(DiagnosticChain diagnostics, Map context);
+	boolean validateTwoParameterSets(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ParameterSet
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PartDecomposition.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PartDecomposition.java
index 64720c9..5c62477 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PartDecomposition.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PartDecomposition.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PartDecomposition.java,v 1.3 2006/05/12 20:38:04 khussey Exp $
+ * $Id: PartDecomposition.java,v 1.4 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -44,7 +44,7 @@
 	 * @generated
 	 */
 	boolean validatePartsOfInternalStructures(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -61,7 +61,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssume(DiagnosticChain diagnostics, Map context);
+	boolean validateAssume(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -76,6 +77,6 @@
 	 * @generated
 	 */
 	boolean validateCommutativityOfDecomposition(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // PartDecomposition
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pin.java
index 291cd64..efa26c1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pin.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Pin.java,v 1.4 2006/02/02 23:30:18 khussey Exp $
+ * $Id: Pin.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -76,6 +76,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateControlPins(DiagnosticChain diagnostics, Map context);
+	boolean validateControlPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Pin
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Port.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Port.java
index 85dd12f..5f6db7e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Port.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Port.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Port.java,v 1.7 2006/05/12 20:38:06 khussey Exp $
+ * $Id: Port.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -112,7 +112,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRequireds();
+	EList<Interface> getRequireds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Interface} with the specified '<em><b>Name</b></em>' from the '<em><b>Required</b></em>' reference list.
@@ -150,7 +150,7 @@
 	 * @model type="org.eclipse.uml2.uml.Port" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedPorts();
+	EList<Port> getRedefinedPorts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Port} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Redefined Port</b></em>' reference list.
@@ -191,7 +191,7 @@
 	 * @model type="org.eclipse.uml2.uml.Interface" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getProvideds();
+	EList<Interface> getProvideds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Interface} with the specified '<em><b>Name</b></em>' from the '<em><b>Provided</b></em>' reference list.
@@ -251,7 +251,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateRequiredInterfaces(DiagnosticChain diagnostics, Map context);
+	boolean validateRequiredInterfaces(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -263,7 +264,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePortAggregation(DiagnosticChain diagnostics, Map context);
+	boolean validatePortAggregation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -275,7 +277,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePortDestroyed(DiagnosticChain diagnostics, Map context);
+	boolean validatePortDestroyed(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -287,6 +290,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDefaultValue(DiagnosticChain diagnostics, Map context);
+	boolean validateDefaultValue(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Port
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Profile.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Profile.java
index d883b18..e064977 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Profile.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Profile.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Profile.java,v 1.13 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Profile.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -60,7 +60,7 @@
 	 * @model type="org.eclipse.uml2.uml.Stereotype" transient="true" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedStereotypes();
+	EList<Stereotype> getOwnedStereotypes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Stereotype}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Stereotype</b></em>' reference list.
@@ -111,7 +111,7 @@
 	 * @model type="org.eclipse.uml2.uml.ElementImport" ordered="false"
 	 * @generated
 	 */
-	EList getMetaclassReferences();
+	EList<ElementImport> getMetaclassReferences();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ElementImport}, with the specified '<em><b>Imported Element</b></em>', and appends it to the '<em><b>Metaclass Reference</b></em>' reference list.
@@ -161,7 +161,7 @@
 	 * @model type="org.eclipse.uml2.uml.PackageImport" ordered="false"
 	 * @generated
 	 */
-	EList getMetamodelReferences();
+	EList<PackageImport> getMetamodelReferences();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.PackageImport}, with the specified '<em><b>Imported Package</b></em>', and appends it to the '<em><b>Metamodel Reference</b></em>' reference list.
@@ -214,7 +214,7 @@
 	 * @generated
 	 */
 	boolean validateMetaclassReferenceNotSpecialized(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -228,7 +228,7 @@
 	 * @generated
 	 */
 	boolean validateReferencesSameMetamodel(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -305,7 +305,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Class" ordered="false"
 	 * @generated
 	 */
-	EList getReferencedMetaclasses();
+	EList<org.eclipse.uml2.uml.Class> getReferencedMetaclasses();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -316,7 +316,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Model" ordered="false"
 	 * @generated
 	 */
-	EList getReferencedMetamodels();
+	EList<Model> getReferencedMetamodels();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -327,6 +327,6 @@
 	 * @model type="org.eclipse.uml2.uml.Extension" ordered="false" requiredOnlyDataType="org.eclipse.uml2.uml.Boolean" requiredOnlyRequired="true" requiredOnlyOrdered="false"
 	 * @generated
 	 */
-	EList getOwnedExtensions(boolean requiredOnly);
+	EList<Extension> getOwnedExtensions(boolean requiredOnly);
 
 } // Profile
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Property.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Property.java
index 3a22963..18fbe4d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Property.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Property.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Property.java,v 1.22 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Property.java,v 1.23 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -278,7 +278,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedProperties();
+	EList<Property> getRedefinedProperties();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Redefined Property</b></em>' reference list.
@@ -437,7 +437,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" ordered="false"
 	 * @generated
 	 */
-	EList getSubsettedProperties();
+	EList<Property> getSubsettedProperties();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Subsetted Property</b></em>' reference list.
@@ -481,7 +481,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" opposite="associationEnd" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getQualifiers();
+	EList<Property> getQualifiers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Qualifier</b></em>' containment reference list.
@@ -575,7 +575,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfComposite(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -591,7 +591,7 @@
 	 * @generated
 	 */
 	boolean validateSubsettingContextConforms(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -608,7 +608,7 @@
 	 * @generated
 	 */
 	boolean validateRedefinedPropertyInherited(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -623,7 +623,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSubsettingRules(DiagnosticChain diagnostics, Map context);
+	boolean validateSubsettingRules(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -635,7 +636,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNavigableReadonly(DiagnosticChain diagnostics, Map context);
+	boolean validateNavigableReadonly(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -648,7 +650,7 @@
 	 * @generated
 	 */
 	boolean validateDerivedUnionIsDerived(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -661,7 +663,7 @@
 	 * @generated
 	 */
 	boolean validateDerivedUnionIsReadOnly(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -674,7 +676,7 @@
 	 * @generated
 	 */
 	boolean validateSubsettedPropertyNames(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -686,7 +688,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeploymentTarget(DiagnosticChain diagnostics, Map context);
+	boolean validateDeploymentTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -699,7 +702,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBindingToAttribute(DiagnosticChain diagnostics, Map context);
+	boolean validateBindingToAttribute(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -803,7 +807,7 @@
 	 * @model type="org.eclipse.uml2.uml.Type" ordered="false"
 	 * @generated
 	 */
-	EList subsettingContext();
+	EList<Type> subsettingContext();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolStateMachine.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolStateMachine.java
index bd7d19e..2a5480f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolStateMachine.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolStateMachine.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolStateMachine.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ProtocolStateMachine.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.ProtocolConformance" opposite="specificMachine" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConformances();
+	EList<ProtocolConformance> getConformances();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ProtocolConformance}, with the specified '<em><b>General Machine</b></em>', and appends it to the '<em><b>Conformance</b></em>' containment reference list.
@@ -103,7 +103,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateProtocolTransitions(DiagnosticChain diagnostics, Map context);
+	boolean validateProtocolTransitions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -117,7 +118,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEntryExitDo(DiagnosticChain diagnostics, Map context);
+	boolean validateEntryExitDo(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -132,7 +134,7 @@
 	 * @generated
 	 */
 	boolean validateDeepOrShallowHistory(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -144,6 +146,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePortsConnected(DiagnosticChain diagnostics, Map context);
+	boolean validatePortsConnected(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ProtocolStateMachine
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolTransition.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolTransition.java
index 0b5ea59..1e03d85 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolTransition.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ProtocolTransition.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolTransition.java,v 1.15 2006/05/12 20:38:03 khussey Exp $
+ * $Id: ProtocolTransition.java,v 1.16 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -107,7 +107,7 @@
 	 * @model type="org.eclipse.uml2.uml.Operation" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getReferreds();
+	EList<Operation> getReferreds();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Referred</b></em>' reference list.
@@ -120,8 +120,8 @@
 	 * @see #getReferreds()
 	 * @generated
 	 */
-	Operation getReferred(String name, EList ownedParameterNames,
-			EList ownedParameterTypes);
+	Operation getReferred(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes);
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Operation} with the specified '<em><b>Name</b></em>', '<em><b>Owned Parameter Names</b></em>', and '<em><b>Owned Parameter Types</b></em>' from the '<em><b>Referred</b></em>' reference list.
@@ -135,8 +135,8 @@
 	 * @see #getReferreds()
 	 * @generated
 	 */
-	Operation getReferred(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase);
+	Operation getReferred(String name, EList<String> ownedParameterNames,
+			EList<Type> ownedParameterTypes, boolean ignoreCase);
 
 	/**
 	 * Returns the value of the '<em><b>Pre Condition</b></em>' reference.
@@ -173,7 +173,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBelongsToPsm(DiagnosticChain diagnostics, Map context);
+	boolean validateBelongsToPsm(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -185,7 +186,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAssociatedActions(DiagnosticChain diagnostics, Map context);
+	boolean validateAssociatedActions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -197,6 +199,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateRefersToOperation(DiagnosticChain diagnostics, Map context);
+	boolean validateRefersToOperation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ProtocolTransition
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pseudostate.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pseudostate.java
index c0ecf31..4410ae8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pseudostate.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Pseudostate.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Pseudostate.java,v 1.8 2006/05/12 20:38:04 khussey Exp $
+ * $Id: Pseudostate.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -134,7 +134,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInitialVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateInitialVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -148,7 +149,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateHistoryVertices(DiagnosticChain diagnostics, Map context);
+	boolean validateHistoryVertices(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -162,7 +164,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateJoinVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateJoinVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -176,7 +179,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTransitionsIncoming(DiagnosticChain diagnostics, Map context);
+	boolean validateTransitionsIncoming(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -190,7 +194,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateForkVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateForkVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -204,7 +209,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTransitionsOutgoing(DiagnosticChain diagnostics, Map context);
+	boolean validateTransitionsOutgoing(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -218,7 +224,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateJunctionVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateJunctionVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -232,7 +239,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateChoiceVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateChoiceVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -245,6 +253,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOutgoingFromInitial(DiagnosticChain diagnostics, Map context);
+	boolean validateOutgoingFromInitial(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Pseudostate
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PseudostateKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PseudostateKind.java
index 153a688..a2d4996 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PseudostateKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/PseudostateKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PseudostateKind.java,v 1.4 2006/05/12 20:38:09 khussey Exp $
+ * $Id: PseudostateKind.java,v 1.5 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,107 @@
  * @model
  * @generated
  */
-public final class PseudostateKind
-		extends AbstractEnumerator {
+public enum PseudostateKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Initial</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INITIAL
+	 * @generated
+	 * @ordered
+	 */
+	INITIAL_LITERAL(0, "initial", "initial"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Deep History</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DEEP_HISTORY
+	 * @generated
+	 * @ordered
+	 */
+	DEEP_HISTORY_LITERAL(1, "deepHistory", "deepHistory"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Shallow History</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SHALLOW_HISTORY
+	 * @generated
+	 * @ordered
+	 */
+	SHALLOW_HISTORY_LITERAL(2, "shallowHistory", "shallowHistory"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Join</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #JOIN
+	 * @generated
+	 * @ordered
+	 */
+	JOIN_LITERAL(3, "join", "join"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Fork</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FORK
+	 * @generated
+	 * @ordered
+	 */
+	FORK_LITERAL(4, "fork", "fork"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Junction</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #JUNCTION
+	 * @generated
+	 * @ordered
+	 */
+	JUNCTION_LITERAL(5, "junction", "junction"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Choice</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CHOICE
+	 * @generated
+	 * @ordered
+	 */
+	CHOICE_LITERAL(6, "choice", "choice"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Entry Point</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ENTRY_POINT
+	 * @generated
+	 * @ordered
+	 */
+	ENTRY_POINT_LITERAL(7, "entryPoint", "entryPoint"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Exit Point</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EXIT_POINT
+	 * @generated
+	 * @ordered
+	 */
+	EXIT_POINT_LITERAL(8, "exitPoint", "exitPoint"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Terminate</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TERMINATE
+	 * @generated
+	 * @ordered
+	 */
+	TERMINATE_LITERAL(9, "terminate", "terminate"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Initial</b></em>' literal value.
@@ -175,116 +274,6 @@
 	public static final int TERMINATE = 9;
 
 	/**
-	 * The '<em><b>Initial</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #INITIAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind INITIAL_LITERAL = new PseudostateKind(
-		INITIAL, "initial", "initial"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Deep History</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #DEEP_HISTORY
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind DEEP_HISTORY_LITERAL = new PseudostateKind(
-		DEEP_HISTORY, "deepHistory", "deepHistory"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Shallow History</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #SHALLOW_HISTORY
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind SHALLOW_HISTORY_LITERAL = new PseudostateKind(
-		SHALLOW_HISTORY, "shallowHistory", "shallowHistory"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Join</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #JOIN
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind JOIN_LITERAL = new PseudostateKind(
-		JOIN, "join", "join"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Fork</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #FORK
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind FORK_LITERAL = new PseudostateKind(
-		FORK, "fork", "fork"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Junction</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #JUNCTION
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind JUNCTION_LITERAL = new PseudostateKind(
-		JUNCTION, "junction", "junction"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Choice</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #CHOICE
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind CHOICE_LITERAL = new PseudostateKind(
-		CHOICE, "choice", "choice"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Entry Point</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #ENTRY_POINT
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind ENTRY_POINT_LITERAL = new PseudostateKind(
-		ENTRY_POINT, "entryPoint", "entryPoint"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Exit Point</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #EXIT_POINT
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind EXIT_POINT_LITERAL = new PseudostateKind(
-		EXIT_POINT, "exitPoint", "exitPoint"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Terminate</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #TERMINATE
-	 * @generated
-	 * @ordered
-	 */
-	public static final PseudostateKind TERMINATE_LITERAL = new PseudostateKind(
-		TERMINATE, "terminate", "terminate"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Pseudostate Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -301,8 +290,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<PseudostateKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Pseudostate Kind</b></em>' literal with the specified literal value.
@@ -369,13 +358,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private PseudostateKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //PseudostateKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/QualifierValue.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/QualifierValue.java
index 42db754..e8e2519 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/QualifierValue.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/QualifierValue.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: QualifierValue.java,v 1.2 2006/05/12 20:38:07 khussey Exp $
+ * $Id: QualifierValue.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -100,7 +100,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateQualifierAttribute(DiagnosticChain diagnostics, Map context);
+	boolean validateQualifierAttribute(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,7 +113,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeOfQualifier(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeOfQualifier(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -125,6 +127,6 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfQualifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // QualifierValue
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadExtentAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadExtentAction.java
index 624e4c9..f9864be 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadExtentAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadExtentAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadExtentAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ReadExtentAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -112,7 +112,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeIsClassifier(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeIsClassifier(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -125,6 +126,6 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ReadExtentAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadIsClassifiedObjectAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadIsClassifiedObjectAction.java
index 3d97096..f01d180 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadIsClassifiedObjectAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadIsClassifiedObjectAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadIsClassifiedObjectAction.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ReadIsClassifiedObjectAction.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -192,7 +192,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicityOfInput(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicityOfInput(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -204,7 +205,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoType(DiagnosticChain diagnostics, Map context);
+	boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -217,7 +219,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfOutput(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -229,6 +231,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBooleanResult(DiagnosticChain diagnostics, Map context);
+	boolean validateBooleanResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReadIsClassifiedObjectAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkAction.java
index 216a2d8..1941157 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkAction.java,v 1.7 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ReadLinkAction.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -87,7 +87,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOneOpenEnd(DiagnosticChain diagnostics, Map context);
+	boolean validateOneOpenEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -102,7 +103,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeAndOrdering(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -117,7 +119,7 @@
 	 * @generated
 	 */
 	boolean validateCompatibleMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -131,7 +133,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNavigableOpenEnd(DiagnosticChain diagnostics, Map context);
+	boolean validateNavigableOpenEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -150,6 +153,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateVisibility(DiagnosticChain diagnostics, Map context);
+	boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReadLinkAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndAction.java
index 811d82b..f55f7d7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndAction.java,v 1.6 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ReadLinkObjectEndAction.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -165,7 +165,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateProperty(DiagnosticChain diagnostics, Map context);
+	boolean validateProperty(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -178,7 +179,7 @@
 	 * @generated
 	 */
 	boolean validateAssociationOfAssociation(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -190,7 +191,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEndsOfAssociation(DiagnosticChain diagnostics, Map context);
+	boolean validateEndsOfAssociation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -202,7 +204,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeOfObject(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeOfObject(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -215,7 +218,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -227,7 +230,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeOfResult(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeOfResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -240,6 +244,6 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ReadLinkObjectEndAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndQualifierAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndQualifierAction.java
index cb65551..da23f91 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndQualifierAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadLinkObjectEndQualifierAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndQualifierAction.java,v 1.6 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ReadLinkObjectEndQualifierAction.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -165,7 +165,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateQualifierAttribute(DiagnosticChain diagnostics, Map context);
+	boolean validateQualifierAttribute(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -178,7 +179,7 @@
 	 * @generated
 	 */
 	boolean validateAssociationOfAssociation(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -190,7 +191,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEndsOfAssociation(DiagnosticChain diagnostics, Map context);
+	boolean validateEndsOfAssociation(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -202,7 +204,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeOfObject(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeOfObject(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -215,7 +218,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfQualifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -228,7 +231,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -240,7 +243,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -253,6 +257,6 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ReadLinkObjectEndQualifierAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadSelfAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadSelfAction.java
index 9114cc2..1d42cf5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadSelfAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadSelfAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadSelfAction.java,v 1.7 2006/06/07 21:39:13 khussey Exp $
+ * $Id: ReadSelfAction.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -86,7 +86,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateContained(DiagnosticChain diagnostics, Map context);
+	boolean validateContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,7 +99,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotStatic(DiagnosticChain diagnostics, Map context);
+	boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -110,7 +112,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateType(DiagnosticChain diagnostics, Map context);
+	boolean validateType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -122,6 +125,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReadSelfAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadStructuralFeatureAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadStructuralFeatureAction.java
index 69e1e4c..812915f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadStructuralFeatureAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadStructuralFeatureAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadStructuralFeatureAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ReadStructuralFeatureAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -88,6 +88,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeAndOrdering(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReadStructuralFeatureAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadVariableAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadVariableAction.java
index a93a321..9d32d0d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadVariableAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReadVariableAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadVariableAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ReadVariableAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -88,7 +88,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeAndOrdering(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -101,6 +102,6 @@
 	 * @generated
 	 */
 	boolean validateCompatibleMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ReadVariableAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Reception.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Reception.java
index f0bf675..a8ef3ab 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Reception.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Reception.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Reception.java,v 1.1 2005/11/14 22:26:01 khussey Exp $
+ * $Id: Reception.java,v 1.2 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,6 +74,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotQuery(DiagnosticChain diagnostics, Map context);
+	boolean validateNotQuery(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // Reception
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReclassifyObjectAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReclassifyObjectAction.java
index 3fb18c9..4ba8aa0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReclassifyObjectAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReclassifyObjectAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReclassifyObjectAction.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ReclassifyObjectAction.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -85,7 +85,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList getOldClassifiers();
+	EList<Classifier> getOldClassifiers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Old Classifier</b></em>' reference list.
@@ -124,7 +124,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" ordered="false"
 	 * @generated
 	 */
-	EList getNewClassifiers();
+	EList<Classifier> getNewClassifiers();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>New Classifier</b></em>' reference list.
@@ -211,7 +211,7 @@
 	 * @generated
 	 */
 	boolean validateClassifierNotAbstract(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -223,7 +223,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -235,6 +236,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReclassifyObjectAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableElement.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableElement.java
index 4fa79ad..a290757 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableElement.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableElement.java,v 1.10 2006/05/24 20:54:29 khussey Exp $
+ * $Id: RedefinableElement.java,v 1.11 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -84,7 +84,7 @@
 	 * @model type="org.eclipse.uml2.uml.RedefinableElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinedElements();
+	EList<RedefinableElement> getRedefinedElements();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.RedefinableElement} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefined Element</b></em>' reference list.
@@ -124,7 +124,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRedefinitionContexts();
+	EList<Classifier> getRedefinitionContexts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Redefinition Context</b></em>' reference list.
@@ -162,7 +162,7 @@
 	 * @generated
 	 */
 	boolean validateRedefinitionContextValid(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -175,7 +175,7 @@
 	 * @generated
 	 */
 	boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableTemplateSignature.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableTemplateSignature.java
index 4e9c33c..e301a1f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableTemplateSignature.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RedefinableTemplateSignature.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableTemplateSignature.java,v 1.7 2006/05/12 20:38:03 khussey Exp $
+ * $Id: RedefinableTemplateSignature.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.RedefinableTemplateSignature" ordered="false"
 	 * @generated
 	 */
-	EList getExtendedSignatures();
+	EList<RedefinableTemplateSignature> getExtendedSignatures();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.RedefinableTemplateSignature} with the specified '<em><b>Name</b></em>' from the '<em><b>Extended Signature</b></em>' reference list.
@@ -95,7 +95,7 @@
 	 * @model type="org.eclipse.uml2.uml.TemplateParameter" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getInheritedParameters();
+	EList<TemplateParameter> getInheritedParameters();
 
 	/**
 	 * Returns the value of the '<em><b>Classifier</b></em>' reference.
@@ -121,6 +121,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInheritedParameters(DiagnosticChain diagnostics, Map context);
+	boolean validateInheritedParameters(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // RedefinableTemplateSignature
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReduceAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReduceAction.java
index e6cdec3..a77772a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReduceAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReduceAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReduceAction.java,v 1.6 2006/05/26 16:34:02 khussey Exp $
+ * $Id: ReduceAction.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -193,7 +193,7 @@
 	 * @generated
 	 */
 	boolean validateInputTypeIsCollection(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -206,7 +206,7 @@
 	 * @generated
 	 */
 	boolean validateOutputTypesAreCompatible(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -218,6 +218,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateReducerInputsOutput(DiagnosticChain diagnostics, Map context);
+	boolean validateReducerInputsOutput(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ReduceAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Region.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Region.java
index e1be032..f7e8eb0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Region.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Region.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Region.java,v 1.11 2006/05/26 16:34:02 khussey Exp $
+ * $Id: Region.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -62,7 +62,7 @@
 	 * @model type="org.eclipse.uml2.uml.Vertex" opposite="container" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getSubvertices();
+	EList<Vertex> getSubvertices();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Vertex}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Subvertex</b></em>' containment reference list.
@@ -117,7 +117,7 @@
 	 * @model type="org.eclipse.uml2.uml.Transition" opposite="container" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getTransitions();
+	EList<Transition> getTransitions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Transition}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Transition</b></em>' containment reference list.
@@ -259,7 +259,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInitialVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateInitialVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -273,7 +274,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateDeepHistoryVertex(DiagnosticChain diagnostics, Map context);
+	boolean validateDeepHistoryVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -288,7 +290,7 @@
 	 * @generated
 	 */
 	boolean validateShallowHistoryVertex(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -300,7 +302,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwned(DiagnosticChain diagnostics, Map context);
+	boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Relationship.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Relationship.java
index 42c3d86..5f665a8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Relationship.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Relationship.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Relationship.java,v 1.4 2006/05/24 20:54:29 khussey Exp $
+ * $Id: Relationship.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -50,6 +50,6 @@
 	 * @model type="org.eclipse.uml2.uml.Element" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRelatedElements();
+	EList<Element> getRelatedElements();
 
 } // Relationship
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveStructuralFeatureValueAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveStructuralFeatureValueAction.java
index 8fefffc..a8fec2e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveStructuralFeatureValueAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveStructuralFeatureValueAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveStructuralFeatureValueAction.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: RemoveStructuralFeatureValueAction.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -129,6 +129,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNonUniqueRemoval(DiagnosticChain diagnostics, Map context);
+	boolean validateNonUniqueRemoval(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // RemoveStructuralFeatureValueAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveVariableValueAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveVariableValueAction.java
index 9e4ead5..38748d7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveVariableValueAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/RemoveVariableValueAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveVariableValueAction.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: RemoveVariableValueAction.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -128,6 +128,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateUnlimitedNatural(DiagnosticChain diagnostics, Map context);
+	boolean validateUnlimitedNatural(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // RemoveVariableValueAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReplyAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReplyAction.java
index 2768251..fe706bf 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReplyAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ReplyAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReplyAction.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ReplyAction.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -133,7 +133,7 @@
 	 * @model type="org.eclipse.uml2.uml.InputPin" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getReplyValues();
+	EList<InputPin> getReplyValues();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.InputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Reply Value</b></em>' containment reference list.
@@ -198,7 +198,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validatePinsMatchParameter(DiagnosticChain diagnostics, Map context);
+	boolean validatePinsMatchParameter(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -211,6 +212,6 @@
 	 * @generated
 	 */
 	boolean validateEventOnReplyToCallTrigger(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // ReplyAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SendSignalAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SendSignalAction.java
index 8a7cf4d..4878f99 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SendSignalAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SendSignalAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendSignalAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: SendSignalAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -127,7 +127,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNumberOrder(DiagnosticChain diagnostics, Map context);
+	boolean validateNumberOrder(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -140,6 +141,6 @@
 	 * @generated
 	 */
 	boolean validateTypeOrderingMultiplicity(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // SendSignalAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SequenceNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SequenceNode.java
index e2c9cb8..cd33f3c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SequenceNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/SequenceNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SequenceNode.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: SequenceNode.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -52,7 +52,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExecutableNode" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getExecutableNodes();
+	EList<ExecutableNode> getExecutableNodes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ExecutableNode}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Executable Node</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Signal.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Signal.java
index 8974be5..2ea6568 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Signal.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Signal.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Signal.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Signal.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -52,7 +52,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedAttributes();
+	EList<Property> getOwnedAttributes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Attribute</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Slot.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Slot.java
index c1a5f0e..7ef11ec 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Slot.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Slot.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Slot.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Slot.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -106,7 +106,7 @@
 	 * @model type="org.eclipse.uml2.uml.ValueSpecification" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getValues();
+	EList<ValueSpecification> getValues();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ValueSpecification}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Value</b></em>' containment reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StartClassifierBehaviorAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StartClassifierBehaviorAction.java
index b8834ff..da89553 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StartClassifierBehaviorAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StartClassifierBehaviorAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StartClassifierBehaviorAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: StartClassifierBehaviorAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -101,7 +101,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -113,6 +114,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeHasClassifier(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeHasClassifier(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // StartClassifierBehaviorAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/State.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/State.java
index bd32f8e..31cccba 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/State.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/State.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: State.java,v 1.15 2006/05/26 16:34:02 khussey Exp $
+ * $Id: State.java,v 1.16 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -159,7 +159,7 @@
 	 * @model type="org.eclipse.uml2.uml.ConnectionPointReference" opposite="state" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConnections();
+	EList<ConnectionPointReference> getConnections();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ConnectionPointReference}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Connection</b></em>' containment reference list.
@@ -212,7 +212,7 @@
 	 * @model type="org.eclipse.uml2.uml.Pseudostate" opposite="state" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConnectionPoints();
+	EList<Pseudostate> getConnectionPoints();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Pseudostate}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Connection Point</b></em>' containment reference list.
@@ -450,7 +450,7 @@
 	 * @model type="org.eclipse.uml2.uml.Trigger" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getDeferrableTriggers();
+	EList<Trigger> getDeferrableTriggers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Trigger}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Deferrable Trigger</b></em>' containment reference list.
@@ -503,7 +503,7 @@
 	 * @model type="org.eclipse.uml2.uml.Region" opposite="state" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getRegions();
+	EList<Region> getRegions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Region}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Region</b></em>' containment reference list.
@@ -550,7 +550,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSubmachineStates(DiagnosticChain diagnostics, Map context);
+	boolean validateSubmachineStates(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -565,7 +566,7 @@
 	 * @generated
 	 */
 	boolean validateDestinationsOrSourcesOfTransitions(
-			DiagnosticChain diagnostics, Map context);
+			DiagnosticChain diagnostics, Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -577,7 +578,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSubmachineOrRegions(DiagnosticChain diagnostics, Map context);
+	boolean validateSubmachineOrRegions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -589,7 +591,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCompositeStates(DiagnosticChain diagnostics, Map context);
+	boolean validateCompositeStates(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -601,7 +604,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEntryOrExit(DiagnosticChain diagnostics, Map context);
+	boolean validateEntryOrExit(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StateMachine.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StateMachine.java
index c4953a9..ded5b03 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StateMachine.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StateMachine.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateMachine.java,v 1.10 2006/05/26 16:34:03 khussey Exp $
+ * $Id: StateMachine.java,v 1.11 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -61,7 +61,7 @@
 	 * @model type="org.eclipse.uml2.uml.Region" opposite="stateMachine" containment="true" resolveProxies="true" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getRegions();
+	EList<Region> getRegions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Region}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Region</b></em>' containment reference list.
@@ -113,7 +113,7 @@
 	 * @model type="org.eclipse.uml2.uml.State" opposite="submachine" ordered="false"
 	 * @generated
 	 */
-	EList getSubmachineStates();
+	EList<State> getSubmachineStates();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.State} with the specified '<em><b>Name</b></em>' from the '<em><b>Submachine State</b></em>' reference list.
@@ -154,7 +154,7 @@
 	 * @model type="org.eclipse.uml2.uml.Pseudostate" opposite="stateMachine" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getConnectionPoints();
+	EList<Pseudostate> getConnectionPoints();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Pseudostate}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Connection Point</b></em>' containment reference list.
@@ -205,7 +205,7 @@
 	 * @model type="org.eclipse.uml2.uml.StateMachine" ordered="false"
 	 * @generated
 	 */
-	EList getExtendedStateMachines();
+	EList<StateMachine> getExtendedStateMachines();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.StateMachine} with the specified '<em><b>Name</b></em>' from the '<em><b>Extended State Machine</b></em>' reference list.
@@ -242,7 +242,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateClassifierContext(DiagnosticChain diagnostics, Map context);
+	boolean validateClassifierContext(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -254,7 +255,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateContextClassifier(DiagnosticChain diagnostics, Map context);
+	boolean validateContextClassifier(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -266,7 +268,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateConnectionPoints(DiagnosticChain diagnostics, Map context);
+	boolean validateConnectionPoints(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -278,7 +281,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMethod(DiagnosticChain diagnostics, Map context);
+	boolean validateMethod(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Stereotype.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Stereotype.java
index 8e03925..3e8cdb3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Stereotype.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Stereotype.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Stereotype.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: Stereotype.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.Image" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getIcons();
+	EList<Image> getIcons();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Image} and appends it to the '<em><b>Icon</b></em>' containment reference list.
@@ -78,7 +78,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNameNotClash(DiagnosticChain diagnostics, Map context);
+	boolean validateNameNotClash(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -90,7 +91,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateGeneralize(DiagnosticChain diagnostics, Map context);
+	boolean validateGeneralize(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -146,7 +148,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Class" ordered="false"
 	 * @generated
 	 */
-	EList getExtendedMetaclasses();
+	EList<org.eclipse.uml2.uml.Class> getExtendedMetaclasses();
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -157,7 +159,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Class" ordered="false"
 	 * @generated
 	 */
-	EList getAllExtendedMetaclasses();
+	EList<org.eclipse.uml2.uml.Class> getAllExtendedMetaclasses();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StringExpression.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StringExpression.java
index fb8b57a..50a1f19 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StringExpression.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StringExpression.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StringExpression.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: StringExpression.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -57,7 +57,7 @@
 	 * @model type="org.eclipse.uml2.uml.StringExpression" opposite="owningExpression" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getSubExpressions();
+	EList<StringExpression> getSubExpressions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.StringExpression}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Sub Expression</b></em>' containment reference list.
@@ -135,7 +135,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOperands(DiagnosticChain diagnostics, Map context);
+	boolean validateOperands(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -149,6 +150,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSubexpressions(DiagnosticChain diagnostics, Map context);
+	boolean validateSubexpressions(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // StringExpression
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuralFeatureAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuralFeatureAction.java
index d532389..e688c15 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuralFeatureAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuralFeatureAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuralFeatureAction.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: StructuralFeatureAction.java,v 1.7 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -128,7 +128,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNotStatic(DiagnosticChain diagnostics, Map context);
+	boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -140,7 +141,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -152,7 +154,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -169,7 +172,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateVisibility(DiagnosticChain diagnostics, Map context);
+	boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -182,6 +186,6 @@
 	 * @generated
 	 */
 	boolean validateOneFeaturingClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // StructuralFeatureAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredActivityNode.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredActivityNode.java
index 892521a..32f1e57 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredActivityNode.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredActivityNode.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredActivityNode.java,v 1.13 2006/05/26 16:34:03 khussey Exp $
+ * $Id: StructuredActivityNode.java,v 1.14 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -62,7 +62,7 @@
 	 * @model type="org.eclipse.uml2.uml.Variable" opposite="scope" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getVariables();
+	EList<Variable> getVariables();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Variable}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Variable</b></em>' containment reference list.
@@ -118,7 +118,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityNode" opposite="inStructuredNode" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getNodes();
+	EList<ActivityNode> getNodes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityNode}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Node</b></em>' containment reference list.
@@ -199,7 +199,7 @@
 	 * @model type="org.eclipse.uml2.uml.ActivityEdge" opposite="inStructuredNode" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getEdges();
+	EList<ActivityEdge> getEdges();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ActivityEdge}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Edge</b></em>' containment reference list.
@@ -249,6 +249,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // StructuredActivityNode
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredClassifier.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredClassifier.java
index 81bbafe..36fb9d8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredClassifier.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/StructuredClassifier.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredClassifier.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: StructuredClassifier.java,v 1.8 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -59,7 +59,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedAttributes();
+	EList<Property> getOwnedAttributes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Owned Attribute</b></em>' containment reference list.
@@ -127,7 +127,7 @@
 	 * @model type="org.eclipse.uml2.uml.Property" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getParts();
+	EList<Property> getParts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Part</b></em>' reference list.
@@ -168,7 +168,7 @@
 	 * @model type="org.eclipse.uml2.uml.ConnectableElement" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
 	 * @generated
 	 */
-	EList getRoles();
+	EList<ConnectableElement> getRoles();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.ConnectableElement} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Role</b></em>' reference list.
@@ -210,7 +210,7 @@
 	 * @model type="org.eclipse.uml2.uml.Connector" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedConnectors();
+	EList<Connector> getOwnedConnectors();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Connector}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Owned Connector</b></em>' containment reference list.
@@ -258,7 +258,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicities(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicities(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateBinding.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateBinding.java
index 8b4e2b5..852983c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateBinding.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateBinding.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateBinding.java,v 1.9 2006/05/26 16:34:03 khussey Exp $
+ * $Id: TemplateBinding.java,v 1.10 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -83,7 +83,7 @@
 	 * @model type="org.eclipse.uml2.uml.TemplateParameterSubstitution" opposite="templateBinding" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getParameterSubstitutions();
+	EList<TemplateParameterSubstitution> getParameterSubstitutions();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.TemplateParameterSubstitution} and appends it to the '<em><b>Parameter Substitution</b></em>' containment reference list.
@@ -133,7 +133,7 @@
 	 * @generated
 	 */
 	boolean validateParameterSubstitutionFormal(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -146,6 +146,6 @@
 	 * @generated
 	 */
 	boolean validateOneParameterSubstitution(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // TemplateBinding
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameter.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameter.java
index 7084e91..46e3ee1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameter.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameter.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameter.java,v 1.8 2006/05/26 16:34:02 khussey Exp $
+ * $Id: TemplateParameter.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -208,6 +208,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustBeCompatible(DiagnosticChain diagnostics, Map context);
+	boolean validateMustBeCompatible(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // TemplateParameter
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameterSubstitution.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameterSubstitution.java
index 395fd80..70ec3db 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameterSubstitution.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateParameterSubstitution.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameterSubstitution.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: TemplateParameterSubstitution.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -84,7 +84,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterableElement" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getActuals();
+	EList<ParameterableElement> getActuals();
 
 	/**
 	 * Returns the value of the '<em><b>Owned Actual</b></em>' containment reference list.
@@ -99,7 +99,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterableElement" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getOwnedActuals();
+	EList<ParameterableElement> getOwnedActuals();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ParameterableElement} and appends it to the '<em><b>Owned Actual</b></em>' containment reference list.
@@ -149,6 +149,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustBeCompatible(DiagnosticChain diagnostics, Map context);
+	boolean validateMustBeCompatible(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // TemplateParameterSubstitution
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateSignature.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateSignature.java
index 86a5a01..2f5489e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateSignature.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateSignature.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateSignature.java,v 1.9 2006/05/26 16:34:03 khussey Exp $
+ * $Id: TemplateSignature.java,v 1.10 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.TemplateParameter" required="true"
 	 * @generated
 	 */
-	EList getParameters();
+	EList<TemplateParameter> getParameters();
 
 	/**
 	 * Returns the value of the '<em><b>Template</b></em>' container reference.
@@ -102,7 +102,7 @@
 	 * @model type="org.eclipse.uml2.uml.TemplateParameter" opposite="signature" containment="true" resolveProxies="true"
 	 * @generated
 	 */
-	EList getOwnedParameters();
+	EList<TemplateParameter> getOwnedParameters();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.TemplateParameter} and appends it to the '<em><b>Owned Parameter</b></em>' containment reference list.
@@ -135,6 +135,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwnElements(DiagnosticChain diagnostics, Map context);
+	boolean validateOwnElements(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // TemplateSignature
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateableElement.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateableElement.java
index b0e9d71..bcfd2e2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateableElement.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TemplateableElement.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateableElement.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: TemplateableElement.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -55,7 +55,7 @@
 	 * @model type="org.eclipse.uml2.uml.TemplateBinding" opposite="boundElement" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getTemplateBindings();
+	EList<TemplateBinding> getTemplateBindings();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.TemplateBinding}, with the specified '<em><b>Signature</b></em>', and appends it to the '<em><b>Template Binding</b></em>' containment reference list.
@@ -150,7 +150,7 @@
 	 * @model type="org.eclipse.uml2.uml.ParameterableElement" ordered="false"
 	 * @generated
 	 */
-	EList parameterableElements();
+	EList<ParameterableElement> parameterableElements();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TestIdentityAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TestIdentityAction.java
index f2e8053..f3dddb3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TestIdentityAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TestIdentityAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TestIdentityAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: TestIdentityAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -192,7 +192,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoType(DiagnosticChain diagnostics, Map context);
+	boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -206,7 +207,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -218,6 +220,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateResultIsBoolean(DiagnosticChain diagnostics, Map context);
+	boolean validateResultIsBoolean(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // TestIdentityAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeEvent.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeEvent.java
index 2b821f8..ffe6da2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeEvent.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeEvent.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeEvent.java,v 1.9 2006/05/26 16:34:02 khussey Exp $
+ * $Id: TimeEvent.java,v 1.10 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -117,7 +117,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateWhenNonNegative(DiagnosticChain diagnostics, Map context);
+	boolean validateWhenNonNegative(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -129,6 +130,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateStartingTime(DiagnosticChain diagnostics, Map context);
+	boolean validateStartingTime(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // TimeEvent
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeExpression.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeExpression.java
index b07c77a..145008c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeExpression.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TimeExpression.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeExpression.java,v 1.5 2006/05/12 20:38:04 khussey Exp $
+ * $Id: TimeExpression.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -78,7 +78,7 @@
 	 * @model type="org.eclipse.uml2.uml.Observation" ordered="false"
 	 * @generated
 	 */
-	EList getObservations();
+	EList<Observation> getObservations();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Observation} with the specified '<em><b>Name</b></em>' from the '<em><b>Observation</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Transition.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Transition.java
index 2d1be3a..86d6f39 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Transition.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Transition.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Transition.java,v 1.16 2006/10/10 20:41:28 khussey Exp $
+ * $Id: Transition.java,v 1.17 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -256,7 +256,7 @@
 	 * @model type="org.eclipse.uml2.uml.Trigger" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getTriggers();
+	EList<Trigger> getTriggers();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Trigger}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Trigger</b></em>' containment reference list.
@@ -330,7 +330,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateForkSegmentGuards(DiagnosticChain diagnostics, Map context);
+	boolean validateForkSegmentGuards(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -342,7 +343,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateJoinSegmentGuards(DiagnosticChain diagnostics, Map context);
+	boolean validateJoinSegmentGuards(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -354,7 +356,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateForkSegmentState(DiagnosticChain diagnostics, Map context);
+	boolean validateForkSegmentState(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -366,7 +369,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateJoinSegmentState(DiagnosticChain diagnostics, Map context);
+	boolean validateJoinSegmentState(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -381,7 +385,7 @@
 	 * @generated
 	 */
 	boolean validateOutgoingPseudostates(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -398,7 +402,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInitialTransition(DiagnosticChain diagnostics, Map context);
+	boolean validateInitialTransition(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -412,7 +417,7 @@
 	 * @generated
 	 */
 	boolean validateSignaturesCompatible(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TransitionKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TransitionKind.java
index 5259a3b..b4c821b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TransitionKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/TransitionKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TransitionKind.java,v 1.4 2006/06/07 21:39:13 khussey Exp $
+ * $Id: TransitionKind.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -32,8 +32,37 @@
  * @model
  * @generated
  */
-public final class TransitionKind
-		extends AbstractEnumerator {
+public enum TransitionKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Internal</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INTERNAL
+	 * @generated
+	 * @ordered
+	 */
+	INTERNAL_LITERAL(0, "internal", "internal"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Local</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOCAL
+	 * @generated
+	 * @ordered
+	 */
+	LOCAL_LITERAL(1, "local", "local"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>External</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EXTERNAL
+	 * @generated
+	 * @ordered
+	 */
+	EXTERNAL_LITERAL(2, "external", "external"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Internal</b></em>' literal value.
@@ -78,39 +107,6 @@
 	public static final int EXTERNAL = 2;
 
 	/**
-	 * The '<em><b>Internal</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #INTERNAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final TransitionKind INTERNAL_LITERAL = new TransitionKind(
-		INTERNAL, "internal", "internal"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Local</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #LOCAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final TransitionKind LOCAL_LITERAL = new TransitionKind(
-		LOCAL, "local", "local"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>External</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #EXTERNAL
-	 * @generated
-	 * @ordered
-	 */
-	public static final TransitionKind EXTERNAL_LITERAL = new TransitionKind(
-		EXTERNAL, "external", "external"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Transition Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -125,8 +121,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<TransitionKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Transition Kind</b></em>' literal with the specified literal value.
@@ -179,13 +175,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private TransitionKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //TransitionKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Trigger.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Trigger.java
index 9ecec8d..8048b9f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Trigger.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Trigger.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Trigger.java,v 1.4 2006/05/12 20:38:03 khussey Exp $
+ * $Id: Trigger.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -77,7 +77,7 @@
 	 * @model type="org.eclipse.uml2.uml.Port" ordered="false"
 	 * @generated
 	 */
-	EList getPorts();
+	EList<Port> getPorts();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Port} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Port</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Type.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Type.java
index 4ca35f8..ab37d60 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Type.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Type.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Type.java,v 1.8 2006/06/07 21:39:13 khussey Exp $
+ * $Id: Type.java,v 1.9 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -89,7 +89,7 @@
 	 * @model kind="operation" type="org.eclipse.uml2.uml.Association" ordered="false"
 	 * @generated
 	 */
-	EList getAssociations();
+	EList<Association> getAssociations();
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UMLPlugin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UMLPlugin.java
index 19e7cce..d5bbe28 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UMLPlugin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UMLPlugin.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLPlugin.java,v 1.1 2005/11/14 22:25:56 khussey Exp $
+ * $Id: UMLPlugin.java,v 1.2 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,6 +58,7 @@
 	 * @return the singleton instance.
 	 * @generated
 	 */
+	@Override
 	public ResourceLocator getPluginResourceLocator() {
 		return plugin;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UnmarshallAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UnmarshallAction.java
index 9d0f98b..cb72f3c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UnmarshallAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UnmarshallAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UnmarshallAction.java,v 1.8 2006/05/26 16:34:03 khussey Exp $
+ * $Id: UnmarshallAction.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -58,7 +58,7 @@
 	 * @model type="org.eclipse.uml2.uml.OutputPin" containment="true" resolveProxies="true" required="true" ordered="false"
 	 * @generated
 	 */
-	EList getResults();
+	EList<OutputPin> getResults();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.OutputPin}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Result</b></em>' containment reference list.
@@ -197,7 +197,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -210,7 +211,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -222,7 +223,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNumberOfResult(DiagnosticChain diagnostics, Map context);
+	boolean validateNumberOfResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -234,7 +236,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateTypeAndOrdering(DiagnosticChain diagnostics, Map context);
+	boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -248,7 +251,7 @@
 	 * @generated
 	 */
 	boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -260,7 +263,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateStructuralFeature(DiagnosticChain diagnostics, Map context);
+	boolean validateStructuralFeature(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -273,6 +277,6 @@
 	 * @generated
 	 */
 	boolean validateUnmarshallTypeIsClassifier(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 } // UnmarshallAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UseCase.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UseCase.java
index aa53d22..2a1ad28 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UseCase.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/UseCase.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UseCase.java,v 1.7 2006/05/26 16:34:03 khussey Exp $
+ * $Id: UseCase.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -61,7 +61,7 @@
 	 * @model type="org.eclipse.uml2.uml.Include" opposite="includingCase" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getIncludes();
+	EList<Include> getIncludes();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Include}, with the specified '<em><b>Name</b></em>', and '<em><b>Addition</b></em>', and appends it to the '<em><b>Include</b></em>' containment reference list.
@@ -117,7 +117,7 @@
 	 * @model type="org.eclipse.uml2.uml.Extend" opposite="extension" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getExtends();
+	EList<Extend> getExtends();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.Extend}, with the specified '<em><b>Name</b></em>', and '<em><b>Extended Case</b></em>', and appends it to the '<em><b>Extend</b></em>' containment reference list.
@@ -173,7 +173,7 @@
 	 * @model type="org.eclipse.uml2.uml.ExtensionPoint" opposite="useCase" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
-	EList getExtensionPoints();
+	EList<ExtensionPoint> getExtensionPoints();
 
 	/**
 	 * Creates a new {@link org.eclipse.uml2.uml.ExtensionPoint}, with the specified '<em><b>Name</b></em>', and appends it to the '<em><b>Extension Point</b></em>' containment reference list.
@@ -226,7 +226,7 @@
 	 * @model type="org.eclipse.uml2.uml.Classifier" opposite="useCase" ordered="false"
 	 * @generated
 	 */
-	EList getSubjects();
+	EList<Classifier> getSubjects();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Classifier} with the specified '<em><b>Name</b></em>' from the '<em><b>Subject</b></em>' reference list.
@@ -262,7 +262,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMustHaveName(DiagnosticChain diagnostics, Map context);
+	boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -274,7 +275,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateBinaryAssociations(DiagnosticChain diagnostics, Map context);
+	boolean validateBinaryAssociations(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -287,7 +289,7 @@
 	 * @generated
 	 */
 	boolean validateNoAssociationToUseCase(DiagnosticChain diagnostics,
-			Map context);
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -299,7 +301,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCannotIncludeSelf(DiagnosticChain diagnostics, Map context);
+	boolean validateCannotIncludeSelf(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -311,6 +314,6 @@
 	 * @model type="org.eclipse.uml2.uml.UseCase" ordered="false"
 	 * @generated
 	 */
-	EList allIncludedUseCases();
+	EList<UseCase> allIncludedUseCases();
 
 } // UseCase
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValuePin.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValuePin.java
index c960ebf..286e891 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValuePin.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValuePin.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValuePin.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ValuePin.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -89,7 +89,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCompatibleType(DiagnosticChain diagnostics, Map context);
+	boolean validateCompatibleType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -101,6 +102,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateNoIncomingEdges(DiagnosticChain diagnostics, Map context);
+	boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ValuePin
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValueSpecificationAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValueSpecificationAction.java
index ce04202..0dc8f8e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValueSpecificationAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/ValueSpecificationAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValueSpecificationAction.java,v 1.6 2006/05/26 16:34:03 khussey Exp $
+ * $Id: ValueSpecificationAction.java,v 1.7 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -127,7 +127,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateCompatibleType(DiagnosticChain diagnostics, Map context);
+	boolean validateCompatibleType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -139,6 +140,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // ValueSpecificationAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Variable.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Variable.java
index 66d2548..b45cd7b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Variable.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Variable.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Variable.java,v 1.8 2006/05/12 20:38:06 khussey Exp $
+ * $Id: Variable.java,v 1.9 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -105,7 +105,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateOwned(DiagnosticChain diagnostics, Map context);
+	boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VariableAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VariableAction.java
index 331e9c1..c69f6a2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VariableAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VariableAction.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VariableAction.java,v 1.1 2005/11/14 22:26:00 khussey Exp $
+ * $Id: VariableAction.java,v 1.2 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -74,6 +74,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateScopeOfVariable(DiagnosticChain diagnostics, Map context);
+	boolean validateScopeOfVariable(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // VariableAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Vertex.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Vertex.java
index 8500bd8..2b06d88 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Vertex.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/Vertex.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: Vertex.java,v 1.7 2006/05/12 20:38:05 khussey Exp $
+ * $Id: Vertex.java,v 1.8 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -56,7 +56,7 @@
 	 * @model type="org.eclipse.uml2.uml.Transition" opposite="source" ordered="false"
 	 * @generated
 	 */
-	EList getOutgoings();
+	EList<Transition> getOutgoings();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Transition} with the specified '<em><b>Name</b></em>' from the '<em><b>Outgoing</b></em>' reference list.
@@ -97,7 +97,7 @@
 	 * @model type="org.eclipse.uml2.uml.Transition" opposite="target" ordered="false"
 	 * @generated
 	 */
-	EList getIncomings();
+	EList<Transition> getIncomings();
 
 	/**
 	 * Retrieves the first {@link org.eclipse.uml2.uml.Transition} with the specified '<em><b>Name</b></em>' from the '<em><b>Incoming</b></em>' reference list.
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VisibilityKind.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VisibilityKind.java
index 9c8543b..fa4bc28 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VisibilityKind.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/VisibilityKind.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006 IBM Corporation and others.
+ * Copyright (c) 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VisibilityKind.java,v 1.3 2006/05/12 20:38:07 khussey Exp $
+ * $Id: VisibilityKind.java,v 1.4 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -16,7 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.eclipse.emf.common.util.AbstractEnumerator;
+import org.eclipse.emf.common.util.Enumerator;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,8 +30,47 @@
  * @model
  * @generated
  */
-public final class VisibilityKind
-		extends AbstractEnumerator {
+public enum VisibilityKind
+		implements Enumerator {
+	/**
+	 * The '<em><b>Public</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PUBLIC
+	 * @generated
+	 * @ordered
+	 */
+	PUBLIC_LITERAL(0, "public", "public"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Private</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PRIVATE
+	 * @generated
+	 * @ordered
+	 */
+	PRIVATE_LITERAL(1, "private", "private"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Protected</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PROTECTED
+	 * @generated
+	 * @ordered
+	 */
+	PROTECTED_LITERAL(2, "protected", "protected"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Package</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PACKAGE
+	 * @generated
+	 * @ordered
+	 */
+	PACKAGE_LITERAL(3, "package", "package"); //$NON-NLS-1$ //$NON-NLS-2$
 
 	/**
 	 * The '<em><b>Public</b></em>' literal value.
@@ -90,50 +129,6 @@
 	public static final int PACKAGE = 3;
 
 	/**
-	 * The '<em><b>Public</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PUBLIC
-	 * @generated
-	 * @ordered
-	 */
-	public static final VisibilityKind PUBLIC_LITERAL = new VisibilityKind(
-		PUBLIC, "public", "public"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Private</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PRIVATE
-	 * @generated
-	 * @ordered
-	 */
-	public static final VisibilityKind PRIVATE_LITERAL = new VisibilityKind(
-		PRIVATE, "private", "private"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Protected</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PROTECTED
-	 * @generated
-	 * @ordered
-	 */
-	public static final VisibilityKind PROTECTED_LITERAL = new VisibilityKind(
-		PROTECTED, "protected", "protected"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * The '<em><b>Package</b></em>' literal object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #PACKAGE
-	 * @generated
-	 * @ordered
-	 */
-	public static final VisibilityKind PACKAGE_LITERAL = new VisibilityKind(
-		PACKAGE, "package", "package"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
 	 * An array of all the '<em><b>Visibility Kind</b></em>' enumerators.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -148,8 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public static final List VALUES = Collections.unmodifiableList(Arrays
-		.asList(VALUES_ARRAY));
+	public static final List<VisibilityKind> VALUES = Collections
+		.unmodifiableList(Arrays.asList(VALUES_ARRAY));
 
 	/**
 	 * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified literal value.
@@ -204,13 +199,74 @@
 	}
 
 	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
 	 * Only this class can construct instances.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	private VisibilityKind(int value, String name, String literal) {
-		super(value, name, literal);
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+		return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
 	}
 
 } //VisibilityKind
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteLinkAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteLinkAction.java
index fc14e45..e952622 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteLinkAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteLinkAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteLinkAction.java,v 1.2 2006/05/12 20:38:08 khussey Exp $
+ * $Id: WriteLinkAction.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -43,6 +43,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateAllowAccess(DiagnosticChain diagnostics, Map context);
+	boolean validateAllowAccess(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // WriteLinkAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteStructuralFeatureAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteStructuralFeatureAction.java
index 1491798..186b556 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteStructuralFeatureAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteStructuralFeatureAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteStructuralFeatureAction.java,v 1.5 2006/05/26 16:34:03 khussey Exp $
+ * $Id: WriteStructuralFeatureAction.java,v 1.6 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -101,6 +101,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateInputPin(DiagnosticChain diagnostics, Map context);
+	boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // WriteStructuralFeatureAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteVariableAction.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteVariableAction.java
index 723e2da..ca4c363 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteVariableAction.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/WriteVariableAction.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteVariableAction.java,v 1.5 2006/05/26 16:34:02 khussey Exp $
+ * $Id: WriteVariableAction.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml;
 
@@ -101,7 +101,8 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateSameType(DiagnosticChain diagnostics, Map context);
+	boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -113,6 +114,7 @@
 	 * @model
 	 * @generated
 	 */
-	boolean validateMultiplicity(DiagnosticChain diagnostics, Map context);
+	boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context);
 
 } // WriteVariableAction
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AbstractionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AbstractionImpl.java
index 5b24693..59d392c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AbstractionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AbstractionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AbstractionImpl.java,v 1.18 2006/11/14 18:02:18 khussey Exp $
+ * $Id: AbstractionImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,7 +32,10 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.OpaqueExpression;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -81,6 +85,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ABSTRACTION;
 	}
@@ -90,23 +95,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ABSTRACTION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ABSTRACTION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ABSTRACTION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -215,18 +222,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ABSTRACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ABSTRACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ABSTRACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ABSTRACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ABSTRACTION__OWNING_TEMPLATE_PARAMETER :
@@ -234,7 +242,7 @@
 			case UMLPackage.ABSTRACTION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ABSTRACTION__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ABSTRACTION__MAPPING :
 				return basicSetMapping(null, msgs);
@@ -247,6 +255,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ABSTRACTION__EANNOTATIONS :
@@ -306,15 +315,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ABSTRACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ABSTRACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ABSTRACTION__NAME :
 				setName((String) newValue);
@@ -324,7 +337,8 @@
 				return;
 			case UMLPackage.ABSTRACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ABSTRACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -337,11 +351,13 @@
 				return;
 			case UMLPackage.ABSTRACTION__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.ABSTRACTION__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.ABSTRACTION__MAPPING :
 				setMapping((OpaqueExpression) newValue);
@@ -355,6 +371,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ABSTRACTION__EANNOTATIONS :
@@ -399,6 +416,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ABSTRACTION__EANNOTATIONS :
@@ -462,6 +480,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.ABSTRACTION__MAPPING);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptCallActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptCallActionImpl.java
index 7d8093f..6a8f407 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptCallActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptCallActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptCallActionImpl.java,v 1.17 2006/11/14 18:02:16 khussey Exp $
+ * $Id: AcceptCallActionImpl.java,v 1.18 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -23,6 +23,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,9 +38,18 @@
 
 import org.eclipse.uml2.uml.AcceptCallAction;
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -88,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACCEPT_CALL_ACTION;
 	}
@@ -97,22 +108,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.ACCEPT_CALL_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+				cache
+					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+						outputs = new DerivedUnionEObjectEList<OutputPin>(
+							OutputPin.class, this,
+							UMLPackage.ACCEPT_CALL_ACTION__OUTPUT,
+							OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.ACCEPT_CALL_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -231,7 +245,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateResultPins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateResultPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return AcceptCallActionOperations.validateResultPins(this, diagnostics,
 			context);
 	}
@@ -242,7 +257,7 @@
 	 * @generated
 	 */
 	public boolean validateTriggerCallEvent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AcceptCallActionOperations.validateTriggerCallEvent(this,
 			diagnostics, context);
 	}
@@ -252,7 +267,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUnmarshall(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUnmarshall(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return AcceptCallActionOperations.validateUnmarshall(this, diagnostics,
 			context);
 	}
@@ -262,18 +278,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_CALL_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__IN_STRUCTURED_NODE :
@@ -281,31 +298,31 @@
 			case UMLPackage.ACCEPT_CALL_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__TRIGGER :
-				return ((InternalEList) getTriggers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getTriggers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACCEPT_CALL_ACTION__RETURN_INFORMATION :
 				return basicSetReturnInformation(null, msgs);
@@ -318,6 +335,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_CALL_ACTION__EANNOTATIONS :
@@ -409,15 +427,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_CALL_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__NAME :
 				setName((String) newValue);
@@ -427,7 +449,8 @@
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -443,46 +466,55 @@
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__IS_UNMARSHALL :
 				setIsUnmarshall(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__TRIGGER :
 				getTriggers().clear();
-				getTriggers().addAll((Collection) newValue);
+				getTriggers().addAll((Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.ACCEPT_CALL_ACTION__RETURN_INFORMATION :
 				setReturnInformation((OutputPin) newValue);
@@ -496,6 +528,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_CALL_ACTION__EANNOTATIONS :
@@ -570,6 +603,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_CALL_ACTION__EANNOTATIONS :
@@ -661,6 +695,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.ACCEPT_CALL_ACTION__RETURN_INFORMATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptEventActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptEventActionImpl.java
index 855bd90..4cb79d6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptEventActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AcceptEventActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptEventActionImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: AcceptEventActionImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -38,6 +38,14 @@
 
 import org.eclipse.uml2.uml.AcceptEventAction;
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -96,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList results = null;
+	protected EList<OutputPin> results = null;
 
 	/**
 	 * The cached value of the '{@link #getTriggers() <em>Trigger</em>}' containment reference list.
@@ -106,7 +114,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList triggers = null;
+	protected EList<Trigger> triggers = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -122,6 +130,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACCEPT_EVENT_ACTION;
 	}
@@ -131,22 +140,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.ACCEPT_EVENT_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+				cache
+					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+						outputs = new DerivedUnionEObjectEList<OutputPin>(
+							OutputPin.class, this,
+							UMLPackage.ACCEPT_EVENT_ACTION__OUTPUT,
+							OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.ACCEPT_EVENT_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -183,10 +195,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getResults() {
+	public EList<OutputPin> getResults() {
 		if (results == null) {
-			results = new EObjectContainmentEList.Resolving(OutputPin.class,
-				this, UMLPackage.ACCEPT_EVENT_ACTION__RESULT);
+			results = new EObjectContainmentEList.Resolving<OutputPin>(
+				OutputPin.class, this, UMLPackage.ACCEPT_EVENT_ACTION__RESULT);
 		}
 		return results;
 	}
@@ -222,8 +234,7 @@
 	 */
 	public OutputPin getResult(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		resultLoop : for (Iterator i = getResults().iterator(); i.hasNext();) {
-			OutputPin result = (OutputPin) i.next();
+		resultLoop : for (OutputPin result : getResults()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(result.getName())
 				: name.equals(result.getName())))
@@ -251,10 +262,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTriggers() {
+	public EList<Trigger> getTriggers() {
 		if (triggers == null) {
-			triggers = new EObjectContainmentEList.Resolving(Trigger.class,
-				this, UMLPackage.ACCEPT_EVENT_ACTION__TRIGGER);
+			triggers = new EObjectContainmentEList.Resolving<Trigger>(
+				Trigger.class, this, UMLPackage.ACCEPT_EVENT_ACTION__TRIGGER);
 		}
 		return triggers;
 	}
@@ -288,8 +299,7 @@
 	 */
 	public Trigger getTrigger(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		triggerLoop : for (Iterator i = getTriggers().iterator(); i.hasNext();) {
-			Trigger trigger = (Trigger) i.next();
+		triggerLoop : for (Trigger trigger : getTriggers()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(trigger.getName())
 				: name.equals(trigger.getName())))
@@ -306,7 +316,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoInputPins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoInputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return AcceptEventActionOperations.validateNoInputPins(this,
 			diagnostics, context);
 	}
@@ -316,7 +327,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoOutputPins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoOutputPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return AcceptEventActionOperations.validateNoOutputPins(this,
 			diagnostics, context);
 	}
@@ -327,7 +339,7 @@
 	 * @generated
 	 */
 	public boolean validateTriggerEvents(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AcceptEventActionOperations.validateTriggerEvents(this,
 			diagnostics, context);
 	}
@@ -338,7 +350,7 @@
 	 * @generated
 	 */
 	public boolean validateUnmarshallSignalEvents(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AcceptEventActionOperations.validateUnmarshallSignalEvents(this,
 			diagnostics, context);
 	}
@@ -348,18 +360,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_EVENT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__IN_STRUCTURED_NODE :
@@ -367,31 +380,31 @@
 			case UMLPackage.ACCEPT_EVENT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACCEPT_EVENT_ACTION__TRIGGER :
-				return ((InternalEList) getTriggers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getTriggers()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -402,6 +415,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_EVENT_ACTION__EANNOTATIONS :
@@ -489,15 +503,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_EVENT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__NAME :
 				setName((String) newValue);
@@ -507,7 +525,8 @@
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -523,46 +542,55 @@
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__IS_UNMARSHALL :
 				setIsUnmarshall(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.ACCEPT_EVENT_ACTION__TRIGGER :
 				getTriggers().clear();
-				getTriggers().addAll((Collection) newValue);
+				getTriggers().addAll((Collection<? extends Trigger>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -573,6 +601,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_EVENT_ACTION__EANNOTATIONS :
@@ -644,6 +673,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACCEPT_EVENT_ACTION__EANNOTATIONS :
@@ -721,6 +751,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -747,6 +778,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.ACCEPT_EVENT_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionExecutionSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionExecutionSpecificationImpl.java
index cfc0288..112f3d3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionExecutionSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionExecutionSpecificationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionExecutionSpecificationImpl.java,v 1.13 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ActionExecutionSpecificationImpl.java,v 1.14 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,6 +19,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -26,8 +27,12 @@
 
 import org.eclipse.uml2.uml.Action;
 import org.eclipse.uml2.uml.ActionExecutionSpecification;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.OccurrenceSpecification;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -76,6 +81,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTION_EXECUTION_SPECIFICATION;
 	}
@@ -130,7 +136,7 @@
 	 * @generated
 	 */
 	public boolean validateActionReferenced(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActionExecutionSpecificationOperations.validateActionReferenced(
 			this, diagnostics, context);
 	}
@@ -140,6 +146,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -201,15 +208,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -219,18 +230,20 @@
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -256,6 +269,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -306,6 +320,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionImpl.java
index f7748df..a5799ef 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionImpl.java
@@ -8,17 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionImpl.java,v 1.25 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ActionImpl.java,v 1.26 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
-
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,11 +31,18 @@
 
 import org.eclipse.uml2.uml.Action;
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -74,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList localPreconditions = null;
+	protected EList<Constraint> localPreconditions = null;
 
 	/**
 	 * The cached value of the '{@link #getLocalPostconditions() <em>Local Postcondition</em>}' containment reference list.
@@ -84,7 +90,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList localPostconditions = null;
+	protected EList<Constraint> localPostconditions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -100,6 +106,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTION;
 	}
@@ -109,21 +116,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.ACTION__OUTPUT, null));
+				cache
+					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+						outputs = new DerivedUnionEObjectEList<OutputPin>(
+							OutputPin.class, this, UMLPackage.ACTION__OUTPUT,
+							null));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.ACTION__OUTPUT, null);
 	}
 
@@ -142,8 +152,7 @@
 	 * @generated
 	 */
 	public OutputPin getOutput(String name, Type type, boolean ignoreCase) {
-		outputLoop : for (Iterator i = getOutputs().iterator(); i.hasNext();) {
-			OutputPin output = (OutputPin) i.next();
+		outputLoop : for (OutputPin output : getOutputs()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(output.getName())
 				: name.equals(output.getName())))
@@ -174,23 +183,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.ACTION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -199,21 +209,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.ACTION__INPUT, null));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.ACTION__INPUT, null));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.ACTION__INPUT, null);
 	}
 
@@ -233,8 +244,7 @@
 	 */
 	public InputPin getInput(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		inputLoop : for (Iterator i = getInputs().iterator(); i.hasNext();) {
-			InputPin input = (InputPin) i.next();
+		inputLoop : for (InputPin input : getInputs()) {
 			if (eClass != null && !eClass.isInstance(input))
 				continue inputLoop;
 			if (name != null && !(ignoreCase
@@ -277,9 +287,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLocalPreconditions() {
+	public EList<Constraint> getLocalPreconditions() {
 		if (localPreconditions == null) {
-			localPreconditions = new EObjectContainmentEList.Resolving(
+			localPreconditions = new EObjectContainmentEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.ACTION__LOCAL_PRECONDITION);
 		}
 		return localPreconditions;
@@ -323,9 +333,7 @@
 	 */
 	public Constraint getLocalPrecondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		localPreconditionLoop : for (Iterator i = getLocalPreconditions()
-			.iterator(); i.hasNext();) {
-			Constraint localPrecondition = (Constraint) i.next();
+		localPreconditionLoop : for (Constraint localPrecondition : getLocalPreconditions()) {
 			if (eClass != null && !eClass.isInstance(localPrecondition))
 				continue localPreconditionLoop;
 			if (name != null && !(ignoreCase
@@ -344,9 +352,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLocalPostconditions() {
+	public EList<Constraint> getLocalPostconditions() {
 		if (localPostconditions == null) {
-			localPostconditions = new EObjectContainmentEList.Resolving(
+			localPostconditions = new EObjectContainmentEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.ACTION__LOCAL_POSTCONDITION);
 		}
 		return localPostconditions;
@@ -390,9 +398,7 @@
 	 */
 	public Constraint getLocalPostcondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		localPostconditionLoop : for (Iterator i = getLocalPostconditions()
-			.iterator(); i.hasNext();) {
-			Constraint localPostcondition = (Constraint) i.next();
+		localPostconditionLoop : for (Constraint localPostcondition : getLocalPostconditions()) {
 			if (eClass != null && !eClass.isInstance(localPostcondition))
 				continue localPostconditionLoop;
 			if (name != null && !(ignoreCase
@@ -411,18 +417,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTION__IN_STRUCTURED_NODE :
@@ -430,26 +437,26 @@
 			case UMLPackage.ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -459,6 +466,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTION__EANNOTATIONS :
@@ -538,15 +546,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTION__NAME :
 				setName((String) newValue);
@@ -556,7 +568,8 @@
 				return;
 			case UMLPackage.ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -572,35 +585,44 @@
 				return;
 			case UMLPackage.ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -611,6 +633,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION__EANNOTATIONS :
@@ -673,6 +696,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION__EANNOTATIONS :
@@ -753,6 +777,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || isSetOutputs() || isSetInputs()
 			|| eIsSet(UMLPackage.ACTION__LOCAL_PRECONDITION)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionInputPinImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionInputPinImpl.java
index 8bb3808..f1e0f30 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionInputPinImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActionInputPinImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionInputPinImpl.java,v 1.25 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ActionInputPinImpl.java,v 1.26 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,9 +38,16 @@
 import org.eclipse.uml2.uml.Action;
 import org.eclipse.uml2.uml.ActionInputPin;
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
+import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -91,6 +99,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTION_INPUT_PIN;
 	}
@@ -100,23 +109,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTION_INPUT_PIN__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ACTION_INPUT_PIN__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTION_INPUT_PIN__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -227,7 +238,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOneOutputPin(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOneOutputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActionInputPinOperations.validateOneOutputPin(this, diagnostics,
 			context);
 	}
@@ -237,7 +249,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInputPin(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActionInputPinOperations.validateInputPin(this, diagnostics,
 			context);
 	}
@@ -248,7 +261,7 @@
 	 * @generated
 	 */
 	public boolean validateNoControlOrDataFlow(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActionInputPinOperations.validateNoControlOrDataFlow(this,
 			diagnostics, context);
 	}
@@ -258,18 +271,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTION_INPUT_PIN__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__IN_STRUCTURED_NODE :
@@ -277,16 +291,16 @@
 			case UMLPackage.ACTION_INPUT_PIN__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTION_INPUT_PIN__UPPER_BOUND :
 				return basicSetUpperBound(null, msgs);
@@ -305,6 +319,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTION_INPUT_PIN__EANNOTATIONS :
@@ -418,15 +433,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTION_INPUT_PIN__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__NAME :
 				setName((String) newValue);
@@ -436,7 +455,8 @@
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -452,23 +472,29 @@
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__TYPE :
 				setType((Type) newValue);
@@ -484,7 +510,7 @@
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.ACTION_INPUT_PIN__SELECTION :
 				setSelection((Behavior) newValue);
@@ -522,6 +548,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION_INPUT_PIN__EANNOTATIONS :
@@ -617,6 +644,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTION_INPUT_PIN__EANNOTATIONS :
@@ -718,6 +746,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.ACTION_INPUT_PIN__FROM_ACTION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityEdgeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityEdgeImpl.java
index bc8a75c..953cf43 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityEdgeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityEdgeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityEdgeImpl.java,v 1.22 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ActivityEdgeImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -43,6 +43,8 @@
 import org.eclipse.uml2.uml.ActivityGroup;
 import org.eclipse.uml2.uml.ActivityNode;
 import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.RedefinableElement;
@@ -112,7 +114,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedEdges = null;
+	protected EList<ActivityEdge> redefinedEdges = null;
 
 	/**
 	 * The cached value of the '{@link #getInPartitions() <em>In Partition</em>}' reference list.
@@ -122,7 +124,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inPartitions = null;
+	protected EList<ActivityPartition> inPartitions = null;
 
 	/**
 	 * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
@@ -168,6 +170,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_EDGE;
 	}
@@ -177,24 +180,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInGroups() {
+	public EList<ActivityGroup> getInGroups() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inGroups = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_EDGE__IN_GROUP);
+			@SuppressWarnings("unchecked")
+			EList<ActivityGroup> inGroups = (EList<ActivityGroup>) cache.get(
+				eResource, this, UMLPackage.Literals.ACTIVITY_EDGE__IN_GROUP);
 			if (inGroups == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ACTIVITY_EDGE__IN_GROUP,
-					inGroups = new DerivedUnionEObjectEList(
+					inGroups = new DerivedUnionEObjectEList<ActivityGroup>(
 						ActivityGroup.class, this,
 						UMLPackage.ACTIVITY_EDGE__IN_GROUP, IN_GROUP_ESUBSETS));
 			}
 			return inGroups;
 		}
-		return new DerivedUnionEObjectEList(ActivityGroup.class, this,
-			UMLPackage.ACTIVITY_EDGE__IN_GROUP, IN_GROUP_ESUBSETS);
+		return new DerivedUnionEObjectEList<ActivityGroup>(ActivityGroup.class,
+			this, UMLPackage.ACTIVITY_EDGE__IN_GROUP, IN_GROUP_ESUBSETS);
 	}
 
 	/**
@@ -202,24 +206,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.ACTIVITY_EDGE__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.ACTIVITY_EDGE__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.ACTIVITY_EDGE__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -229,23 +239,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTIVITY_EDGE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ACTIVITY_EDGE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTIVITY_EDGE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -316,9 +328,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInPartitions() {
+	public EList<ActivityPartition> getInPartitions() {
 		if (inPartitions == null) {
-			inPartitions = new EObjectWithInverseResolvingEList.ManyInverse(
+			inPartitions = new EObjectWithInverseResolvingEList.ManyInverse<ActivityPartition>(
 				ActivityPartition.class, this,
 				UMLPackage.ACTIVITY_EDGE__IN_PARTITION,
 				UMLPackage.ACTIVITY_PARTITION__EDGE);
@@ -341,9 +353,7 @@
 	 * @generated
 	 */
 	public ActivityPartition getInPartition(String name, boolean ignoreCase) {
-		inPartitionLoop : for (Iterator i = getInPartitions().iterator(); i
-			.hasNext();) {
-			ActivityPartition inPartition = (ActivityPartition) i.next();
+		inPartitionLoop : for (ActivityPartition inPartition : getInPartitions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(inPartition.getName())
 				: name.equals(inPartition.getName())))
@@ -497,10 +507,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedEdges() {
+	public EList<ActivityEdge> getRedefinedEdges() {
 		if (redefinedEdges == null) {
-			redefinedEdges = new EObjectResolvingEList(ActivityEdge.class,
-				this, UMLPackage.ACTIVITY_EDGE__REDEFINED_EDGE);
+			redefinedEdges = new EObjectResolvingEList<ActivityEdge>(
+				ActivityEdge.class, this,
+				UMLPackage.ACTIVITY_EDGE__REDEFINED_EDGE);
 		}
 		return redefinedEdges;
 	}
@@ -521,9 +532,7 @@
 	 */
 	public ActivityEdge getRedefinedEdge(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinedEdgeLoop : for (Iterator i = getRedefinedEdges().iterator(); i
-			.hasNext();) {
-			ActivityEdge redefinedEdge = (ActivityEdge) i.next();
+		redefinedEdgeLoop : for (ActivityEdge redefinedEdge : getRedefinedEdges()) {
 			if (eClass != null && !eClass.isInstance(redefinedEdge))
 				continue redefinedEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -897,7 +906,7 @@
 	 * @generated
 	 */
 	public boolean validateSourceAndTarget(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityEdgeOperations.validateSourceAndTarget(this,
 			diagnostics, context);
 	}
@@ -907,7 +916,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityEdgeOperations.validateOwned(this, diagnostics, context);
 	}
 
@@ -917,7 +927,7 @@
 	 * @generated
 	 */
 	public boolean validateStructuredNode(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityEdgeOperations.validateStructuredNode(this, diagnostics,
 			context);
 	}
@@ -927,15 +937,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__SOURCE :
 				if (source != null)
 					msgs = ((InternalEObject) source).eInverseRemove(this,
@@ -949,8 +961,8 @@
 						msgs);
 				return basicSetTarget((ActivityNode) otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__INTERRUPTS :
 				if (interrupts != null)
 					msgs = ((InternalEObject) interrupts)
@@ -978,18 +990,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTIVITY_EDGE__SOURCE :
@@ -997,7 +1010,7 @@
 			case UMLPackage.ACTIVITY_EDGE__TARGET :
 				return basicSetTarget(null, msgs);
 			case UMLPackage.ACTIVITY_EDGE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_EDGE__GUARD :
 				return basicSetGuard(null, msgs);
@@ -1018,6 +1031,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -1037,6 +1051,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
@@ -1116,15 +1131,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_EDGE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_EDGE__NAME :
 				setName((String) newValue);
@@ -1134,7 +1153,8 @@
 				return;
 			case UMLPackage.ACTIVITY_EDGE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_EDGE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -1150,11 +1170,13 @@
 				return;
 			case UMLPackage.ACTIVITY_EDGE__REDEFINED_EDGE :
 				getRedefinedEdges().clear();
-				getRedefinedEdges().addAll((Collection) newValue);
+				getRedefinedEdges().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_EDGE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_EDGE__GUARD :
 				setGuard((ValueSpecification) newValue);
@@ -1180,6 +1202,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
@@ -1239,6 +1262,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_EDGE__EANNOTATIONS :
@@ -1323,6 +1347,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || eIsSet(UMLPackage.ACTIVITY_EDGE__ACTIVITY);
 	}
@@ -1342,6 +1367,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.ACTIVITY_EDGE__REDEFINED_EDGE);
@@ -1389,6 +1415,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.ACTIVITY_EDGE__GUARD)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityFinalNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityFinalNodeImpl.java
index 9e65ed9..f9a1021 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityFinalNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityFinalNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityFinalNodeImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: ActivityFinalNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_FINAL_NODE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java
index 5ba328c..a8d8bdf 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityGroupImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityGroupImpl.java,v 1.17 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ActivityGroupImpl.java,v 1.18 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -40,6 +40,7 @@
 import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.ActivityGroup;
 import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.UMLPackage;
 
@@ -82,6 +83,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_GROUP;
 	}
@@ -91,24 +93,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubgroups() {
+	public EList<ActivityGroup> getSubgroups() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList subgroups = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
+			@SuppressWarnings("unchecked")
+			EList<ActivityGroup> subgroups = (EList<ActivityGroup>) cache.get(
+				eResource, this, UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
 			if (subgroups == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP,
-					subgroups = new DerivedUnionEObjectEList(
+					subgroups = new DerivedUnionEObjectEList<ActivityGroup>(
 						ActivityGroup.class, this,
 						UMLPackage.ACTIVITY_GROUP__SUBGROUP, null));
 			}
 			return subgroups;
 		}
-		return new DerivedUnionEObjectEList(ActivityGroup.class, this,
-			UMLPackage.ACTIVITY_GROUP__SUBGROUP, null);
+		return new DerivedUnionEObjectEList<ActivityGroup>(ActivityGroup.class,
+			this, UMLPackage.ACTIVITY_GROUP__SUBGROUP, null);
 	}
 
 	/**
@@ -116,23 +119,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTIVITY_GROUP__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ACTIVITY_GROUP__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTIVITY_GROUP__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -141,24 +146,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedNodes() {
+	public EList<ActivityNode> getContainedNodes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedNodes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityNode> containedNodes = (EList<ActivityNode>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
 			if (containedNodes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
-					containedNodes = new DerivedUnionEObjectEList(
-						ActivityNode.class, this,
-						UMLPackage.ACTIVITY_GROUP__CONTAINED_NODE, null));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
+						containedNodes = new DerivedUnionEObjectEList<ActivityNode>(
+							ActivityNode.class, this,
+							UMLPackage.ACTIVITY_GROUP__CONTAINED_NODE, null));
 			}
 			return containedNodes;
 		}
-		return new DerivedUnionEObjectEList(ActivityNode.class, this,
-			UMLPackage.ACTIVITY_GROUP__CONTAINED_NODE, null);
+		return new DerivedUnionEObjectEList<ActivityNode>(ActivityNode.class,
+			this, UMLPackage.ACTIVITY_GROUP__CONTAINED_NODE, null);
 	}
 
 	/**
@@ -177,9 +187,7 @@
 	 */
 	public ActivityNode getContainedNode(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedNodeLoop : for (Iterator i = getContainedNodes().iterator(); i
-			.hasNext();) {
-			ActivityNode containedNode = (ActivityNode) i.next();
+		containedNodeLoop : for (ActivityNode containedNode : getContainedNodes()) {
 			if (eClass != null && !eClass.isInstance(containedNode))
 				continue containedNodeLoop;
 			if (name != null && !(ignoreCase
@@ -196,24 +204,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedEdges() {
+	public EList<ActivityEdge> getContainedEdges() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedEdges = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityEdge> containedEdges = (EList<ActivityEdge>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
 			if (containedEdges == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
-					containedEdges = new DerivedUnionEObjectEList(
-						ActivityEdge.class, this,
-						UMLPackage.ACTIVITY_GROUP__CONTAINED_EDGE, null));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
+						containedEdges = new DerivedUnionEObjectEList<ActivityEdge>(
+							ActivityEdge.class, this,
+							UMLPackage.ACTIVITY_GROUP__CONTAINED_EDGE, null));
 			}
 			return containedEdges;
 		}
-		return new DerivedUnionEObjectEList(ActivityEdge.class, this,
-			UMLPackage.ACTIVITY_GROUP__CONTAINED_EDGE, null);
+		return new DerivedUnionEObjectEList<ActivityEdge>(ActivityEdge.class,
+			this, UMLPackage.ACTIVITY_GROUP__CONTAINED_EDGE, null);
 	}
 
 	/**
@@ -232,9 +245,7 @@
 	 */
 	public ActivityEdge getContainedEdge(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedEdgeLoop : for (Iterator i = getContainedEdges().iterator(); i
-			.hasNext();) {
-			ActivityEdge containedEdge = (ActivityEdge) i.next();
+		containedEdgeLoop : for (ActivityEdge containedEdge : getContainedEdges()) {
 			if (eClass != null && !eClass.isInstance(containedEdge))
 				continue containedEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -315,7 +326,7 @@
 	 * @generated
 	 */
 	public boolean validateNodesAndEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNodesAndEdges(this, diagnostics,
 			context);
 	}
@@ -325,7 +336,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotContained(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNotContained(this, diagnostics,
 			context);
 	}
@@ -335,7 +347,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGroupOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGroupOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateGroupOwned(this, diagnostics,
 			context);
 	}
@@ -345,12 +358,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_GROUP__IN_ACTIVITY :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -364,14 +379,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_GROUP__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_GROUP__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
@@ -384,6 +400,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -399,6 +416,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
@@ -434,15 +452,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_GROUP__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_GROUP__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
@@ -456,6 +478,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
@@ -476,6 +499,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_GROUP__EANNOTATIONS :
@@ -526,6 +550,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || isSetSubgroups();
 	}
@@ -595,6 +620,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || isSetSuperGroup()
 			|| eIsSet(UMLPackage.ACTIVITY_GROUP__IN_ACTIVITY);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityImpl.java
index 9acae59..899ea43 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityImpl.java,v 1.29 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ActivityImpl.java,v 1.30 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -46,15 +46,35 @@
 import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.Variable;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -94,7 +114,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nodes = null;
+	protected EList<ActivityNode> nodes = null;
 
 	/**
 	 * The cached value of the '{@link #getGroups() <em>Group</em>}' containment reference list.
@@ -104,7 +124,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList groups = null;
+	protected EList<ActivityGroup> groups = null;
 
 	/**
 	 * The cached value of the '{@link #getVariables() <em>Variable</em>}' containment reference list.
@@ -114,7 +134,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList variables = null;
+	protected EList<Variable> variables = null;
 
 	/**
 	 * The default value of the '{@link #isReadOnly() <em>Is Read Only</em>}' attribute.
@@ -144,7 +164,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList edges = null;
+	protected EList<ActivityEdge> edges = null;
 
 	/**
 	 * The cached value of the '{@link #getPartitions() <em>Partition</em>}' reference list.
@@ -154,7 +174,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList partitions = null;
+	protected EList<ActivityPartition> partitions = null;
 
 	/**
 	 * The default value of the '{@link #isSingleExecution() <em>Is Single Execution</em>}' attribute.
@@ -190,6 +210,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY;
 	}
@@ -199,23 +220,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTIVITY__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ACTIVITY__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTIVITY__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -224,25 +247,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.ACTIVITY__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ACTIVITY__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ACTIVITY__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -250,9 +274,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGroups() {
+	public EList<ActivityGroup> getGroups() {
 		if (groups == null) {
-			groups = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			groups = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<ActivityGroup>(
 				ActivityGroup.class, this, UMLPackage.ACTIVITY__GROUP, null,
 				GROUP_ESUBSETS, UMLPackage.ACTIVITY_GROUP__IN_ACTIVITY);
 		}
@@ -275,9 +299,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNodes() {
+	public EList<ActivityNode> getNodes() {
 		if (nodes == null) {
-			nodes = new EObjectContainmentWithInverseEList.Resolving(
+			nodes = new EObjectContainmentWithInverseEList.Resolving<ActivityNode>(
 				ActivityNode.class, this, UMLPackage.ACTIVITY__NODE,
 				UMLPackage.ACTIVITY_NODE__ACTIVITY);
 		}
@@ -313,8 +337,7 @@
 	 */
 	public ActivityNode getNode(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		nodeLoop : for (Iterator i = getNodes().iterator(); i.hasNext();) {
-			ActivityNode node = (ActivityNode) i.next();
+		nodeLoop : for (ActivityNode node : getNodes()) {
 			if (eClass != null && !eClass.isInstance(node))
 				continue nodeLoop;
 			if (name != null && !(ignoreCase
@@ -388,23 +411,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getStructuredNodes() {
+	public EList<StructuredActivityNode> getStructuredNodes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList structuredNodes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY__STRUCTURED_NODE);
+			@SuppressWarnings("unchecked")
+			EList<StructuredActivityNode> structuredNodes = (EList<StructuredActivityNode>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY__STRUCTURED_NODE);
 			if (structuredNodes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY__STRUCTURED_NODE,
-					structuredNodes = new DerivedEObjectEList(
-						StructuredActivityNode.class, this,
-						UMLPackage.ACTIVITY__STRUCTURED_NODE,
-						STRUCTURED_NODE_ESUPERSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY__STRUCTURED_NODE,
+						structuredNodes = new DerivedEObjectEList<StructuredActivityNode>(
+							StructuredActivityNode.class, this,
+							UMLPackage.ACTIVITY__STRUCTURED_NODE,
+							STRUCTURED_NODE_ESUPERSETS));
 			}
 			return structuredNodes;
 		}
-		return new DerivedEObjectEList(StructuredActivityNode.class, this,
+		return new DerivedEObjectEList<StructuredActivityNode>(
+			StructuredActivityNode.class, this,
 			UMLPackage.ACTIVITY__STRUCTURED_NODE, STRUCTURED_NODE_ESUPERSETS);
 	}
 
@@ -424,10 +453,7 @@
 	 */
 	public StructuredActivityNode getStructuredNode(String name,
 			boolean ignoreCase, EClass eClass) {
-		structuredNodeLoop : for (Iterator i = getStructuredNodes().iterator(); i
-			.hasNext();) {
-			StructuredActivityNode structuredNode = (StructuredActivityNode) i
-				.next();
+		structuredNodeLoop : for (StructuredActivityNode structuredNode : getStructuredNodes()) {
 			if (eClass != null && !eClass.isInstance(structuredNode))
 				continue structuredNodeLoop;
 			if (name != null && !(ignoreCase
@@ -444,9 +470,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getVariables() {
+	public EList<Variable> getVariables() {
 		if (variables == null) {
-			variables = new EObjectContainmentWithInverseEList.Resolving(
+			variables = new EObjectContainmentWithInverseEList.Resolving<Variable>(
 				Variable.class, this, UMLPackage.ACTIVITY__VARIABLE,
 				UMLPackage.VARIABLE__ACTIVITY_SCOPE);
 		}
@@ -484,8 +510,7 @@
 	 */
 	public Variable getVariable(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		variableLoop : for (Iterator i = getVariables().iterator(); i.hasNext();) {
-			Variable variable = (Variable) i.next();
+		variableLoop : for (Variable variable : getVariables()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(variable.getName())
 				: name.equals(variable.getName())))
@@ -504,9 +529,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEdges() {
+	public EList<ActivityEdge> getEdges() {
 		if (edges == null) {
-			edges = new EObjectContainmentWithInverseEList.Resolving(
+			edges = new EObjectContainmentWithInverseEList.Resolving<ActivityEdge>(
 				ActivityEdge.class, this, UMLPackage.ACTIVITY__EDGE,
 				UMLPackage.ACTIVITY_EDGE__ACTIVITY);
 		}
@@ -542,8 +567,7 @@
 	 */
 	public ActivityEdge getEdge(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		edgeLoop : for (Iterator i = getEdges().iterator(); i.hasNext();) {
-			ActivityEdge edge = (ActivityEdge) i.next();
+		edgeLoop : for (ActivityEdge edge : getEdges()) {
 			if (eClass != null && !eClass.isInstance(edge))
 				continue edgeLoop;
 			if (name != null && !(ignoreCase
@@ -562,9 +586,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPartitions() {
+	public EList<ActivityPartition> getPartitions() {
 		if (partitions == null) {
-			partitions = new SubsetSupersetEObjectResolvingEList(
+			partitions = new SubsetSupersetEObjectResolvingEList<ActivityPartition>(
 				ActivityPartition.class, this, UMLPackage.ACTIVITY__PARTITION,
 				PARTITION_ESUPERSETS, null);
 		}
@@ -600,9 +624,7 @@
 	 */
 	public ActivityPartition getPartition(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		partitionLoop : for (Iterator i = getPartitions().iterator(); i
-			.hasNext();) {
-			ActivityPartition partition = (ActivityPartition) i.next();
+		partitionLoop : for (ActivityPartition partition : getPartitions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(partition.getName())
 				: name.equals(partition.getName())))
@@ -620,7 +642,7 @@
 	 * @generated
 	 */
 	public boolean validateNoSupergroups(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityOperations.validateNoSupergroups(this, diagnostics,
 			context);
 	}
@@ -631,7 +653,7 @@
 	 * @generated
 	 */
 	public boolean validateActivityParameterNode(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityOperations.validateActivityParameterNode(this,
 			diagnostics, context);
 	}
@@ -641,7 +663,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAutonomous(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAutonomous(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityOperations
 			.validateAutonomous(this, diagnostics, context);
 	}
@@ -651,24 +674,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -683,8 +708,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ACTIVITY__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -694,22 +719,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.ACTIVITY__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__SPECIFICATION :
 				if (specification != null)
 					msgs = ((InternalEObject) specification).eInverseRemove(
@@ -717,14 +743,17 @@
 						BehavioralFeature.class, msgs);
 				return basicSetSpecification((BehavioralFeature) otherEnd, msgs);
 			case UMLPackage.ACTIVITY__VARIABLE :
-				return ((InternalEList) getVariables())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getVariables())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__NODE :
-				return ((InternalEList) getNodes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getNodes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__EDGE :
-				return ((InternalEList) getEdges()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEdges())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__GROUP :
-				return ((InternalEList) getGroups()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGroups())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -734,104 +763,107 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTIVITY__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ACTIVITY__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ACTIVITY__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ACTIVITY__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ACTIVITY__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__PRECONDITION :
-				return ((InternalEList) getPreconditions()).basicRemove(
+				return ((InternalEList<?>) getPreconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__POSTCONDITION :
-				return ((InternalEList) getPostconditions()).basicRemove(
+				return ((InternalEList<?>) getPostconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 			case UMLPackage.ACTIVITY__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTIVITY__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.ACTIVITY__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.ACTIVITY__GROUP :
-				return ((InternalEList) getGroups())
-					.basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getGroups()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -841,6 +873,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
@@ -1022,15 +1055,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__NAME :
 				setName((String) newValue);
@@ -1040,22 +1077,26 @@
 				return;
 			case UMLPackage.ACTIVITY__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ACTIVITY__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1071,7 +1112,8 @@
 				return;
 			case UMLPackage.ACTIVITY__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1081,136 +1123,163 @@
 				return;
 			case UMLPackage.ACTIVITY__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ACTIVITY__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.ACTIVITY__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACTIVITY__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACTIVITY__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
 				return;
 			case UMLPackage.ACTIVITY__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__IS_READ_ONLY :
 				setIsReadOnly(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACTIVITY__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__PARTITION :
 				getPartitions().clear();
-				getPartitions().addAll((Collection) newValue);
+				getPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTIVITY__IS_SINGLE_EXECUTION :
 				setIsSingleExecution(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ACTIVITY__GROUP :
 				getGroups().clear();
-				getGroups().addAll((Collection) newValue);
+				getGroups().addAll(
+					(Collection<? extends ActivityGroup>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1221,6 +1290,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
@@ -1385,6 +1455,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY__EANNOTATIONS :
@@ -1541,6 +1612,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1579,6 +1651,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || eIsSet(UMLPackage.ACTIVITY__NODE)
 			|| eIsSet(UMLPackage.ACTIVITY__EDGE)
@@ -1590,6 +1663,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.ACTIVITY__VARIABLE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java
index d402b98..17a25bc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityNodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityNodeImpl.java,v 1.18 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ActivityNodeImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -43,6 +43,8 @@
 import org.eclipse.uml2.uml.ActivityGroup;
 import org.eclipse.uml2.uml.ActivityNode;
 import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.RedefinableElement;
@@ -87,7 +89,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList outgoings = null;
+	protected EList<ActivityEdge> outgoings = null;
 
 	/**
 	 * The cached value of the '{@link #getIncomings() <em>Incoming</em>}' reference list.
@@ -97,7 +99,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList incomings = null;
+	protected EList<ActivityEdge> incomings = null;
 
 	/**
 	 * The cached value of the '{@link #getInPartitions() <em>In Partition</em>}' reference list.
@@ -107,7 +109,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inPartitions = null;
+	protected EList<ActivityPartition> inPartitions = null;
 
 	/**
 	 * The cached value of the '{@link #getInInterruptibleRegions() <em>In Interruptible Region</em>}' reference list.
@@ -117,7 +119,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inInterruptibleRegions = null;
+	protected EList<InterruptibleActivityRegion> inInterruptibleRegions = null;
 
 	/**
 	 * The cached value of the '{@link #getRedefinedNodes() <em>Redefined Node</em>}' reference list.
@@ -127,7 +129,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedNodes = null;
+	protected EList<ActivityNode> redefinedNodes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -143,6 +145,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_NODE;
 	}
@@ -152,24 +155,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInGroups() {
+	public EList<ActivityGroup> getInGroups() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inGroups = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_NODE__IN_GROUP);
+			@SuppressWarnings("unchecked")
+			EList<ActivityGroup> inGroups = (EList<ActivityGroup>) cache.get(
+				eResource, this, UMLPackage.Literals.ACTIVITY_NODE__IN_GROUP);
 			if (inGroups == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ACTIVITY_NODE__IN_GROUP,
-					inGroups = new DerivedUnionEObjectEList(
+					inGroups = new DerivedUnionEObjectEList<ActivityGroup>(
 						ActivityGroup.class, this,
 						UMLPackage.ACTIVITY_NODE__IN_GROUP, IN_GROUP_ESUBSETS));
 			}
 			return inGroups;
 		}
-		return new DerivedUnionEObjectEList(ActivityGroup.class, this,
-			UMLPackage.ACTIVITY_NODE__IN_GROUP, IN_GROUP_ESUBSETS);
+		return new DerivedUnionEObjectEList<ActivityGroup>(ActivityGroup.class,
+			this, UMLPackage.ACTIVITY_NODE__IN_GROUP, IN_GROUP_ESUBSETS);
 	}
 
 	/**
@@ -177,24 +181,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.ACTIVITY_NODE__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.ACTIVITY_NODE__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.ACTIVITY_NODE__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -204,9 +214,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutgoings() {
+	public EList<ActivityEdge> getOutgoings() {
 		if (outgoings == null) {
-			outgoings = new EObjectWithInverseResolvingEList(
+			outgoings = new EObjectWithInverseResolvingEList<ActivityEdge>(
 				ActivityEdge.class, this, UMLPackage.ACTIVITY_NODE__OUTGOING,
 				UMLPackage.ACTIVITY_EDGE__SOURCE);
 		}
@@ -229,8 +239,7 @@
 	 */
 	public ActivityEdge getOutgoing(String name, boolean ignoreCase,
 			EClass eClass) {
-		outgoingLoop : for (Iterator i = getOutgoings().iterator(); i.hasNext();) {
-			ActivityEdge outgoing = (ActivityEdge) i.next();
+		outgoingLoop : for (ActivityEdge outgoing : getOutgoings()) {
 			if (eClass != null && !eClass.isInstance(outgoing))
 				continue outgoingLoop;
 			if (name != null && !(ignoreCase
@@ -247,9 +256,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInPartitions() {
+	public EList<ActivityPartition> getInPartitions() {
 		if (inPartitions == null) {
-			inPartitions = new EObjectWithInverseResolvingEList.ManyInverse(
+			inPartitions = new EObjectWithInverseResolvingEList.ManyInverse<ActivityPartition>(
 				ActivityPartition.class, this,
 				UMLPackage.ACTIVITY_NODE__IN_PARTITION,
 				UMLPackage.ACTIVITY_PARTITION__NODE);
@@ -272,9 +281,7 @@
 	 * @generated
 	 */
 	public ActivityPartition getInPartition(String name, boolean ignoreCase) {
-		inPartitionLoop : for (Iterator i = getInPartitions().iterator(); i
-			.hasNext();) {
-			ActivityPartition inPartition = (ActivityPartition) i.next();
+		inPartitionLoop : for (ActivityPartition inPartition : getInPartitions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(inPartition.getName())
 				: name.equals(inPartition.getName())))
@@ -415,9 +422,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getIncomings() {
+	public EList<ActivityEdge> getIncomings() {
 		if (incomings == null) {
-			incomings = new EObjectWithInverseResolvingEList(
+			incomings = new EObjectWithInverseResolvingEList<ActivityEdge>(
 				ActivityEdge.class, this, UMLPackage.ACTIVITY_NODE__INCOMING,
 				UMLPackage.ACTIVITY_EDGE__TARGET);
 		}
@@ -440,8 +447,7 @@
 	 */
 	public ActivityEdge getIncoming(String name, boolean ignoreCase,
 			EClass eClass) {
-		incomingLoop : for (Iterator i = getIncomings().iterator(); i.hasNext();) {
-			ActivityEdge incoming = (ActivityEdge) i.next();
+		incomingLoop : for (ActivityEdge incoming : getIncomings()) {
 			if (eClass != null && !eClass.isInstance(incoming))
 				continue incomingLoop;
 			if (name != null && !(ignoreCase
@@ -458,9 +464,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInInterruptibleRegions() {
+	public EList<InterruptibleActivityRegion> getInInterruptibleRegions() {
 		if (inInterruptibleRegions == null) {
-			inInterruptibleRegions = new EObjectWithInverseResolvingEList.ManyInverse(
+			inInterruptibleRegions = new EObjectWithInverseResolvingEList.ManyInverse<InterruptibleActivityRegion>(
 				InterruptibleActivityRegion.class, this,
 				UMLPackage.ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION,
 				UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE);
@@ -473,10 +479,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedNodes() {
+	public EList<ActivityNode> getRedefinedNodes() {
 		if (redefinedNodes == null) {
-			redefinedNodes = new EObjectResolvingEList(ActivityNode.class,
-				this, UMLPackage.ACTIVITY_NODE__REDEFINED_NODE);
+			redefinedNodes = new EObjectResolvingEList<ActivityNode>(
+				ActivityNode.class, this,
+				UMLPackage.ACTIVITY_NODE__REDEFINED_NODE);
 		}
 		return redefinedNodes;
 	}
@@ -497,9 +504,7 @@
 	 */
 	public ActivityNode getRedefinedNode(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinedNodeLoop : for (Iterator i = getRedefinedNodes().iterator(); i
-			.hasNext();) {
-			ActivityNode redefinedNode = (ActivityNode) i.next();
+		redefinedNodeLoop : for (ActivityNode redefinedNode : getRedefinedNodes()) {
 			if (eClass != null && !eClass.isInstance(redefinedNode))
 				continue redefinedNodeLoop;
 			if (name != null && !(ignoreCase
@@ -516,7 +521,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityNodeOperations.validateOwned(this, diagnostics, context);
 	}
 
@@ -526,7 +532,7 @@
 	 * @generated
 	 */
 	public boolean validateOwnedStructuredNode(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityNodeOperations.validateOwnedStructuredNode(this,
 			diagnostics, context);
 	}
@@ -536,15 +542,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_STRUCTURED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -555,17 +563,17 @@
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetActivity((Activity) otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInInterruptibleRegions())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -575,18 +583,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_STRUCTURED_NODE :
@@ -594,16 +603,16 @@
 			case UMLPackage.ACTIVITY_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ACTIVITY_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -614,6 +623,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -633,6 +643,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
@@ -698,15 +709,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__NAME :
 				setName((String) newValue);
@@ -716,7 +731,8 @@
 				return;
 			case UMLPackage.ACTIVITY_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -732,23 +748,29 @@
 				return;
 			case UMLPackage.ACTIVITY_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -759,6 +781,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
@@ -812,6 +835,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_NODE__EANNOTATIONS :
@@ -919,6 +943,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || eIsSet(UMLPackage.ACTIVITY_NODE__ACTIVITY);
 	}
@@ -938,6 +963,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.ACTIVITY_NODE__REDEFINED_NODE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityParameterNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityParameterNodeImpl.java
index 51e1725..858eb23 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityParameterNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityParameterNodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityParameterNodeImpl.java,v 1.15 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ActivityParameterNodeImpl.java,v 1.16 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,16 +19,24 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
 import org.eclipse.uml2.uml.ActivityParameterNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
 import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -79,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_PARAMETER_NODE;
 	}
@@ -133,7 +142,7 @@
 	 * @generated
 	 */
 	public boolean validateHasParameters(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityParameterNodeOperations.validateHasParameters(this,
 			diagnostics, context);
 	}
@@ -143,7 +152,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityParameterNodeOperations.validateSameType(this,
 			diagnostics, context);
 	}
@@ -153,7 +163,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityParameterNodeOperations.validateNoEdges(this,
 			diagnostics, context);
 	}
@@ -164,7 +175,7 @@
 	 * @generated
 	 */
 	public boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityParameterNodeOperations.validateNoIncomingEdges(this,
 			diagnostics, context);
 	}
@@ -175,7 +186,7 @@
 	 * @generated
 	 */
 	public boolean validateNoOutgoingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityParameterNodeOperations.validateNoOutgoingEdges(this,
 			diagnostics, context);
 	}
@@ -185,6 +196,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__EANNOTATIONS :
@@ -274,15 +286,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__NAME :
 				setName((String) newValue);
@@ -292,7 +308,8 @@
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -308,23 +325,29 @@
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__TYPE :
 				setType((Type) newValue);
@@ -340,7 +363,7 @@
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__SELECTION :
 				setSelection((Behavior) newValue);
@@ -357,6 +380,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__EANNOTATIONS :
@@ -431,6 +455,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARAMETER_NODE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityPartitionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityPartitionImpl.java
index 67edb19..e4bcd0e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityPartitionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActivityPartitionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityPartitionImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ActivityPartitionImpl.java,v 1.24 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -43,6 +43,8 @@
 import org.eclipse.uml2.uml.ActivityGroup;
 import org.eclipse.uml2.uml.ActivityNode;
 import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -129,7 +131,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nodes = null;
+	protected EList<ActivityNode> nodes = null;
 
 	/**
 	 * The cached value of the '{@link #getSubpartitions() <em>Subpartition</em>}' containment reference list.
@@ -139,7 +141,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList subpartitions = null;
+	protected EList<ActivityPartition> subpartitions = null;
 
 	/**
 	 * The cached value of the '{@link #getRepresents() <em>Represents</em>}' reference.
@@ -159,7 +161,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList edges = null;
+	protected EList<ActivityEdge> edges = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -175,6 +177,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTIVITY_PARTITION;
 	}
@@ -184,25 +187,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubgroups() {
+	public EList<ActivityGroup> getSubgroups() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList subgroups = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
+			@SuppressWarnings("unchecked")
+			EList<ActivityGroup> subgroups = (EList<ActivityGroup>) cache.get(
+				eResource, this, UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
 			if (subgroups == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP,
-					subgroups = new DerivedUnionEObjectEList(
+					subgroups = new DerivedUnionEObjectEList<ActivityGroup>(
 						ActivityGroup.class, this,
 						UMLPackage.ACTIVITY_PARTITION__SUBGROUP,
 						SUBGROUP_ESUBSETS));
 			}
 			return subgroups;
 		}
-		return new DerivedUnionEObjectEList(ActivityGroup.class, this,
-			UMLPackage.ACTIVITY_PARTITION__SUBGROUP, SUBGROUP_ESUBSETS);
+		return new DerivedUnionEObjectEList<ActivityGroup>(ActivityGroup.class,
+			this, UMLPackage.ACTIVITY_PARTITION__SUBGROUP, SUBGROUP_ESUBSETS);
 	}
 
 	/**
@@ -210,23 +214,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ACTIVITY_PARTITION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ACTIVITY_PARTITION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ACTIVITY_PARTITION__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -236,25 +242,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedNodes() {
+	public EList<ActivityNode> getContainedNodes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedNodes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityNode> containedNodes = (EList<ActivityNode>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
 			if (containedNodes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
-					containedNodes = new DerivedUnionEObjectEList(
-						ActivityNode.class, this,
-						UMLPackage.ACTIVITY_PARTITION__CONTAINED_NODE,
-						CONTAINED_NODE_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
+						containedNodes = new DerivedUnionEObjectEList<ActivityNode>(
+							ActivityNode.class, this,
+							UMLPackage.ACTIVITY_PARTITION__CONTAINED_NODE,
+							CONTAINED_NODE_ESUBSETS));
 			}
 			return containedNodes;
 		}
-		return new DerivedUnionEObjectEList(ActivityNode.class, this,
-			UMLPackage.ACTIVITY_PARTITION__CONTAINED_NODE,
+		return new DerivedUnionEObjectEList<ActivityNode>(ActivityNode.class,
+			this, UMLPackage.ACTIVITY_PARTITION__CONTAINED_NODE,
 			CONTAINED_NODE_ESUBSETS);
 	}
 
@@ -274,9 +285,7 @@
 	 */
 	public ActivityNode getContainedNode(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedNodeLoop : for (Iterator i = getContainedNodes().iterator(); i
-			.hasNext();) {
-			ActivityNode containedNode = (ActivityNode) i.next();
+		containedNodeLoop : for (ActivityNode containedNode : getContainedNodes()) {
 			if (eClass != null && !eClass.isInstance(containedNode))
 				continue containedNodeLoop;
 			if (name != null && !(ignoreCase
@@ -293,25 +302,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedEdges() {
+	public EList<ActivityEdge> getContainedEdges() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedEdges = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityEdge> containedEdges = (EList<ActivityEdge>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
 			if (containedEdges == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
-					containedEdges = new DerivedUnionEObjectEList(
-						ActivityEdge.class, this,
-						UMLPackage.ACTIVITY_PARTITION__CONTAINED_EDGE,
-						CONTAINED_EDGE_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
+						containedEdges = new DerivedUnionEObjectEList<ActivityEdge>(
+							ActivityEdge.class, this,
+							UMLPackage.ACTIVITY_PARTITION__CONTAINED_EDGE,
+							CONTAINED_EDGE_ESUBSETS));
 			}
 			return containedEdges;
 		}
-		return new DerivedUnionEObjectEList(ActivityEdge.class, this,
-			UMLPackage.ACTIVITY_PARTITION__CONTAINED_EDGE,
+		return new DerivedUnionEObjectEList<ActivityEdge>(ActivityEdge.class,
+			this, UMLPackage.ACTIVITY_PARTITION__CONTAINED_EDGE,
 			CONTAINED_EDGE_ESUBSETS);
 	}
 
@@ -331,9 +345,7 @@
 	 */
 	public ActivityEdge getContainedEdge(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedEdgeLoop : for (Iterator i = getContainedEdges().iterator(); i
-			.hasNext();) {
-			ActivityEdge containedEdge = (ActivityEdge) i.next();
+		containedEdgeLoop : for (ActivityEdge containedEdge : getContainedEdges()) {
 			if (eClass != null && !eClass.isInstance(containedEdge))
 				continue containedEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -469,9 +481,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEdges() {
+	public EList<ActivityEdge> getEdges() {
 		if (edges == null) {
-			edges = new EObjectWithInverseResolvingEList.ManyInverse(
+			edges = new EObjectWithInverseResolvingEList.ManyInverse<ActivityEdge>(
 				ActivityEdge.class, this, UMLPackage.ACTIVITY_PARTITION__EDGE,
 				UMLPackage.ACTIVITY_EDGE__IN_PARTITION);
 		}
@@ -493,8 +505,7 @@
 	 * @generated
 	 */
 	public ActivityEdge getEdge(String name, boolean ignoreCase, EClass eClass) {
-		edgeLoop : for (Iterator i = getEdges().iterator(); i.hasNext();) {
-			ActivityEdge edge = (ActivityEdge) i.next();
+		edgeLoop : for (ActivityEdge edge : getEdges()) {
 			if (eClass != null && !eClass.isInstance(edge))
 				continue edgeLoop;
 			if (name != null && !(ignoreCase
@@ -511,9 +522,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNodes() {
+	public EList<ActivityNode> getNodes() {
 		if (nodes == null) {
-			nodes = new EObjectWithInverseResolvingEList.ManyInverse(
+			nodes = new EObjectWithInverseResolvingEList.ManyInverse<ActivityNode>(
 				ActivityNode.class, this, UMLPackage.ACTIVITY_PARTITION__NODE,
 				UMLPackage.ACTIVITY_NODE__IN_PARTITION);
 		}
@@ -535,8 +546,7 @@
 	 * @generated
 	 */
 	public ActivityNode getNode(String name, boolean ignoreCase, EClass eClass) {
-		nodeLoop : for (Iterator i = getNodes().iterator(); i.hasNext();) {
-			ActivityNode node = (ActivityNode) i.next();
+		nodeLoop : for (ActivityNode node : getNodes()) {
 			if (eClass != null && !eClass.isInstance(node))
 				continue nodeLoop;
 			if (name != null && !(ignoreCase
@@ -553,9 +563,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubpartitions() {
+	public EList<ActivityPartition> getSubpartitions() {
 		if (subpartitions == null) {
-			subpartitions = new EObjectContainmentWithInverseEList.Resolving(
+			subpartitions = new EObjectContainmentWithInverseEList.Resolving<ActivityPartition>(
 				ActivityPartition.class, this,
 				UMLPackage.ACTIVITY_PARTITION__SUBPARTITION,
 				UMLPackage.ACTIVITY_PARTITION__SUPER_PARTITION);
@@ -592,9 +602,7 @@
 	 */
 	public ActivityPartition getSubpartition(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		subpartitionLoop : for (Iterator i = getSubpartitions().iterator(); i
-			.hasNext();) {
-			ActivityPartition subpartition = (ActivityPartition) i.next();
+		subpartitionLoop : for (ActivityPartition subpartition : getSubpartitions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(subpartition.getName())
 				: name.equals(subpartition.getName())))
@@ -720,7 +728,7 @@
 	 * @generated
 	 */
 	public boolean validateNodesAndEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNodesAndEdges(this, diagnostics,
 			context);
 	}
@@ -730,7 +738,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotContained(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNotContained(this, diagnostics,
 			context);
 	}
@@ -740,7 +749,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGroupOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGroupOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateGroupOwned(this, diagnostics,
 			context);
 	}
@@ -751,7 +761,7 @@
 	 * @generated
 	 */
 	public boolean validateDimensionNotContained(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityPartitionOperations.validateDimensionNotContained(this,
 			diagnostics, context);
 	}
@@ -762,7 +772,7 @@
 	 * @generated
 	 */
 	public boolean validateRepresentsPart(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityPartitionOperations.validateRepresentsPart(this,
 			diagnostics, context);
 	}
@@ -773,7 +783,7 @@
 	 * @generated
 	 */
 	public boolean validateRepresentsClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityPartitionOperations.validateRepresentsClassifier(this,
 			diagnostics, context);
 	}
@@ -784,7 +794,7 @@
 	 * @generated
 	 */
 	public boolean validateRepresentsPartAndIsContained(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ActivityPartitionOperations
 			.validateRepresentsPartAndIsContained(this, diagnostics, context);
 	}
@@ -794,31 +804,35 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__IN_ACTIVITY :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetInActivity((Activity) otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__NODE :
-				return ((InternalEList) getNodes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getNodes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__SUBPARTITION :
-				return ((InternalEList) getSubpartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubpartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__SUPER_PARTITION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetSuperPartition((ActivityPartition) otherEnd,
 					msgs);
 			case UMLPackage.ACTIVITY_PARTITION__EDGE :
-				return ((InternalEList) getEdges()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEdges())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -828,31 +842,34 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.ACTIVITY_PARTITION__SUBPARTITION :
-				return ((InternalEList) getSubpartitions()).basicRemove(
+				return ((InternalEList<?>) getSubpartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__SUPER_PARTITION :
 				return basicSetSuperPartition(null, msgs);
 			case UMLPackage.ACTIVITY_PARTITION__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -862,6 +879,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -881,6 +899,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
@@ -954,15 +973,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__NAME :
 				setName((String) newValue);
@@ -972,7 +995,8 @@
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -988,11 +1012,13 @@
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__SUBPARTITION :
 				getSubpartitions().clear();
-				getSubpartitions().addAll((Collection) newValue);
+				getSubpartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__SUPER_PARTITION :
 				setSuperPartition((ActivityPartition) newValue);
@@ -1002,7 +1028,8 @@
 				return;
 			case UMLPackage.ACTIVITY_PARTITION__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1013,6 +1040,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
@@ -1066,6 +1094,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ACTIVITY_PARTITION__EANNOTATIONS :
@@ -1124,7 +1153,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ActivityGroup.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.ACTIVITY_PARTITION__SUBGROUP :
@@ -1149,7 +1179,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ActivityGroup.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.ACTIVITY_GROUP__SUBGROUP :
@@ -1174,6 +1205,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1224,6 +1256,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || isSetSubgroups();
 	}
@@ -1297,6 +1330,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || isSetSuperGroup()
 			|| eIsSet(UMLPackage.ACTIVITY_PARTITION__IN_ACTIVITY);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActorImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActorImpl.java
index c12e82d..77d353e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActorImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ActorImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActorImpl.java,v 1.2 2005/11/23 20:01:20 khussey Exp $
+ * $Id: ActorImpl.java,v 1.3 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ACTOR;
 	}
@@ -59,7 +60,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAssociations(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAssociations(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActorOperations.validateAssociations(this, diagnostics, context);
 	}
 
@@ -68,7 +70,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMustHaveName(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActorOperations.validateMustHaveName(this, diagnostics, context);
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddStructuralFeatureValueActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddStructuralFeatureValueActionImpl.java
index f3a0dd7..0649192 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddStructuralFeatureValueActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddStructuralFeatureValueActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddStructuralFeatureValueActionImpl.java,v 1.22 2006/11/14 18:02:16 khussey Exp $
+ * $Id: AddStructuralFeatureValueActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,8 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.AddStructuralFeatureValueAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuralFeature;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -109,6 +118,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ADD_STRUCTURAL_FEATURE_VALUE_ACTION;
 	}
@@ -118,22 +128,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__INPUT,
 			INPUT_ESUBSETS);
 	}
@@ -299,7 +311,7 @@
 	 * @generated
 	 */
 	public boolean validateUnlimitedNaturalAndMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return AddStructuralFeatureValueActionOperations
 			.validateUnlimitedNaturalAndMultiplicity(this, diagnostics, context);
 	}
@@ -309,18 +321,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__IN_STRUCTURED_NODE :
@@ -328,26 +341,26 @@
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__VALUE :
@@ -363,6 +376,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -462,15 +476,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__NAME :
 				setName((String) newValue);
@@ -480,7 +498,8 @@
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -496,35 +515,44 @@
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__STRUCTURAL_FEATURE :
 				setStructuralFeature((StructuralFeature) newValue);
@@ -550,6 +578,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -627,6 +656,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -708,6 +738,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -737,6 +768,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION__INSERT_AT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddVariableValueActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddVariableValueActionImpl.java
index fa69a32..82ac801 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddVariableValueActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AddVariableValueActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddVariableValueActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: AddVariableValueActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,8 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.AddVariableValueAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -109,6 +118,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ADD_VARIABLE_VALUE_ACTION;
 	}
@@ -118,22 +128,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.ADD_VARIABLE_VALUE_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.ADD_VARIABLE_VALUE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -287,7 +299,7 @@
 	 * @generated
 	 */
 	public boolean validateSingleInputPin(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AddVariableValueActionOperations.validateSingleInputPin(this,
 			diagnostics, context);
 	}
@@ -297,18 +309,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__IN_STRUCTURED_NODE :
@@ -316,26 +329,26 @@
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__VALUE :
 				return basicSetValue(null, msgs);
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__INSERT_AT :
@@ -349,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -444,15 +458,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__NAME :
 				setName((String) newValue);
@@ -462,7 +480,8 @@
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -478,35 +497,44 @@
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__VARIABLE :
 				setVariable((Variable) newValue);
@@ -529,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -603,6 +632,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -682,6 +712,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -710,6 +741,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.ADD_VARIABLE_VALUE_ACTION__INSERT_AT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AnyReceiveEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AnyReceiveEventImpl.java
index eecff08..fac0ded 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AnyReceiveEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AnyReceiveEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AnyReceiveEventImpl.java,v 1.2 2005/11/23 20:01:17 khussey Exp $
+ * $Id: AnyReceiveEventImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ANY_RECEIVE_EVENT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ArtifactImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ArtifactImpl.java
index 2f65820..1a4dca8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ArtifactImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ArtifactImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ArtifactImpl.java,v 1.26 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ArtifactImpl.java,v 1.27 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,21 +35,31 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Manifestation;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.PackageableElement;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.ArtifactOperations;
@@ -117,7 +127,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nestedArtifacts = null;
+	protected EList<Artifact> nestedArtifacts = null;
 
 	/**
 	 * The cached value of the '{@link #getManifestations() <em>Manifestation</em>}' containment reference list.
@@ -127,7 +137,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList manifestations = null;
+	protected EList<Manifestation> manifestations = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedOperations() <em>Owned Operation</em>}' containment reference list.
@@ -137,7 +147,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedOperations = null;
+	protected EList<Operation> ownedOperations = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedAttributes() <em>Owned Attribute</em>}' containment reference list.
@@ -147,7 +157,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -163,6 +173,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ARTIFACT;
 	}
@@ -172,25 +183,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.ARTIFACT__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ARTIFACT__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ARTIFACT__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -198,23 +210,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ARTIFACT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.ARTIFACT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ARTIFACT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -223,22 +237,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.ARTIFACT__FEATURE, FEATURE_ESUBSETS));
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.ARTIFACT__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.ARTIFACT__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -247,23 +263,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.ARTIFACT__ATTRIBUTE,
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.ARTIFACT__ATTRIBUTE,
 						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.ARTIFACT__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -272,9 +289,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this, UMLPackage.ARTIFACT__CLIENT_DEPENDENCY,
 				null, CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
 		}
@@ -338,9 +355,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNestedArtifacts() {
+	public EList<Artifact> getNestedArtifacts() {
 		if (nestedArtifacts == null) {
-			nestedArtifacts = new EObjectContainmentEList.Resolving(
+			nestedArtifacts = new EObjectContainmentEList.Resolving<Artifact>(
 				Artifact.class, this, UMLPackage.ARTIFACT__NESTED_ARTIFACT);
 		}
 		return nestedArtifacts;
@@ -384,9 +401,7 @@
 	 */
 	public Artifact getNestedArtifact(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		nestedArtifactLoop : for (Iterator i = getNestedArtifacts().iterator(); i
-			.hasNext();) {
-			Artifact nestedArtifact = (Artifact) i.next();
+		nestedArtifactLoop : for (Artifact nestedArtifact : getNestedArtifacts()) {
 			if (eClass != null && !eClass.isInstance(nestedArtifact))
 				continue nestedArtifactLoop;
 			if (name != null && !(ignoreCase
@@ -405,9 +420,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getManifestations() {
+	public EList<Manifestation> getManifestations() {
 		if (manifestations == null) {
-			manifestations = new SubsetSupersetEObjectContainmentEList.Resolving(
+			manifestations = new SubsetSupersetEObjectContainmentEList.Resolving<Manifestation>(
 				Manifestation.class, this, UMLPackage.ARTIFACT__MANIFESTATION,
 				MANIFESTATION_ESUPERSETS, null);
 		}
@@ -448,9 +463,7 @@
 	public Manifestation getManifestation(String name,
 			PackageableElement utilizedElement, boolean ignoreCase,
 			boolean createOnDemand) {
-		manifestationLoop : for (Iterator i = getManifestations().iterator(); i
-			.hasNext();) {
-			Manifestation manifestation = (Manifestation) i.next();
+		manifestationLoop : for (Manifestation manifestation : getManifestations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(manifestation.getName())
 				: name.equals(manifestation.getName())))
@@ -470,9 +483,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedOperations() {
+	public EList<Operation> getOwnedOperations() {
 		if (ownedOperations == null) {
-			ownedOperations = new EObjectContainmentEList.Resolving(
+			ownedOperations = new EObjectContainmentEList.Resolving<Operation>(
 				Operation.class, this, UMLPackage.ARTIFACT__OWNED_OPERATION);
 		}
 		return ownedOperations;
@@ -484,7 +497,7 @@
 	 * @generated
 	 */
 	public Operation createOwnedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Operation newOwnedOperation = (Operation) create(UMLPackage.Literals.OPERATION);
 		getOwnedOperations().add(newOwnedOperation);
 		if (name != null)
@@ -515,8 +528,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedOperation(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -526,28 +539,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedOperationLoop : for (Iterator i = getOwnedOperations().iterator(); i
-			.hasNext();) {
-			Operation ownedOperation = (Operation) i.next();
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedOperationLoop : for (Operation ownedOperation : getOwnedOperations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedOperation.getName())
 				: name.equals(ownedOperation.getName())))
 				continue ownedOperationLoop;
-			EList ownedParameterList = ownedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedOperation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedOperationLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -570,9 +581,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this, UMLPackage.ARTIFACT__OWNED_ATTRIBUTE);
 		}
 		return ownedAttributes;
@@ -618,9 +629,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -641,8 +650,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType) {
+	public Operation createOwnedOperation(String name,
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			Type returnType) {
 		return ArtifactOperations.createOwnedOperation(this, name,
 			parameterNames, parameterTypes, returnType);
 	}
@@ -663,24 +673,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -695,8 +707,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ARTIFACT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -706,16 +718,17 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.ARTIFACT__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -725,67 +738,68 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ARTIFACT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ARTIFACT__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ARTIFACT__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ARTIFACT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ARTIFACT__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ARTIFACT__NESTED_ARTIFACT :
-				return ((InternalEList) getNestedArtifacts()).basicRemove(
+				return ((InternalEList<?>) getNestedArtifacts()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__MANIFESTATION :
-				return ((InternalEList) getManifestations()).basicRemove(
+				return ((InternalEList<?>) getManifestations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ARTIFACT__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -796,6 +810,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
@@ -911,15 +926,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__NAME :
 				setName((String) newValue);
@@ -929,22 +948,26 @@
 				return;
 			case UMLPackage.ARTIFACT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ARTIFACT__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -960,7 +983,8 @@
 				return;
 			case UMLPackage.ARTIFACT__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -970,57 +994,68 @@
 				return;
 			case UMLPackage.ARTIFACT__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ARTIFACT__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__FILE_NAME :
 				setFileName((String) newValue);
 				return;
 			case UMLPackage.ARTIFACT__NESTED_ARTIFACT :
 				getNestedArtifacts().clear();
-				getNestedArtifacts().addAll((Collection) newValue);
+				getNestedArtifacts().addAll(
+					(Collection<? extends Artifact>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__MANIFESTATION :
 				getManifestations().clear();
-				getManifestations().addAll((Collection) newValue);
+				getManifestations().addAll(
+					(Collection<? extends Manifestation>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.ARTIFACT__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1031,6 +1066,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
@@ -1132,6 +1168,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ARTIFACT__EANNOTATIONS :
@@ -1232,6 +1269,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1265,6 +1303,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.ARTIFACT__NESTED_ARTIFACT)
@@ -1296,6 +1335,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.ARTIFACT__MANIFESTATION);
@@ -1317,6 +1357,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.ARTIFACT__OWNED_OPERATION);
@@ -1358,6 +1399,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.ARTIFACT__OWNED_ATTRIBUTE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationClassImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationClassImpl.java
index a47f3f2..73941f3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationClassImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationClassImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AssociationClassImpl.java,v 1.27 2006/11/14 18:02:18 khussey Exp $
+ * $Id: AssociationClassImpl.java,v 1.28 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -41,17 +41,34 @@
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.AssociationClass;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.Relationship;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.AssociationClassOperations;
@@ -90,7 +107,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedEnds = null;
+	protected EList<Property> ownedEnds = null;
 
 	/**
 	 * The cached value of the '{@link #getMemberEnds() <em>Member End</em>}' reference list.
@@ -100,7 +117,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList memberEnds = null;
+	protected EList<Property> memberEnds = null;
 
 	/**
 	 * The default value of the '{@link #isDerived() <em>Is Derived</em>}' attribute.
@@ -130,7 +147,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList navigableOwnedEnds = null;
+	protected EList<Property> navigableOwnedEnds = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -146,6 +163,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ASSOCIATION_CLASS;
 	}
@@ -155,24 +173,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.ASSOCIATION_CLASS__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ASSOCIATION_CLASS__RELATED_ELEMENT,
 			RELATED_ELEMENT_ESUBSETS);
 	}
@@ -182,24 +202,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.ASSOCIATION_CLASS__MEMBER,
-						MEMBER_ESUBSETS));
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.ASSOCIATION_CLASS__MEMBER, MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ASSOCIATION_CLASS__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ASSOCIATION_CLASS__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -207,23 +228,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.ASSOCIATION_CLASS__FEATURE,
-						FEATURE_ESUBSETS));
+				cache
+					.put(eResource, this,
+						UMLPackage.Literals.CLASSIFIER__FEATURE,
+						features = new DerivedUnionEObjectEList<Feature>(
+							Feature.class, this,
+							UMLPackage.ASSOCIATION_CLASS__FEATURE,
+							FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.ASSOCIATION_CLASS__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -232,25 +256,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.ASSOCIATION_CLASS__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ASSOCIATION_CLASS__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ASSOCIATION_CLASS__OWNED_MEMBER,
+			OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -258,9 +284,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMemberEnds() {
+	public EList<Property> getMemberEnds() {
 		if (memberEnds == null) {
-			memberEnds = new SubsetSupersetEObjectWithInverseResolvingEList(
+			memberEnds = new SubsetSupersetEObjectWithInverseResolvingEList<Property>(
 				Property.class, this, UMLPackage.ASSOCIATION_CLASS__MEMBER_END,
 				null, MEMBER_END_ESUBSETS, UMLPackage.PROPERTY__ASSOCIATION);
 		}
@@ -283,9 +309,7 @@
 	 */
 	public Property getMemberEnd(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		memberEndLoop : for (Iterator i = getMemberEnds().iterator(); i
-			.hasNext();) {
-			Property memberEnd = (Property) i.next();
+		memberEndLoop : for (Property memberEnd : getMemberEnds()) {
 			if (eClass != null && !eClass.isInstance(memberEnd))
 				continue memberEndLoop;
 			if (name != null && !(ignoreCase
@@ -304,9 +328,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedEnds() {
+	public EList<Property> getOwnedEnds() {
 		if (ownedEnds == null) {
-			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Property>(
 				Property.class, this, UMLPackage.ASSOCIATION_CLASS__OWNED_END,
 				OWNED_END_ESUPERSETS, OWNED_END_ESUBSETS,
 				UMLPackage.PROPERTY__OWNING_ASSOCIATION);
@@ -354,8 +378,7 @@
 	 */
 	public Property getOwnedEnd(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedEndLoop : for (Iterator i = getOwnedEnds().iterator(); i.hasNext();) {
-			Property ownedEnd = (Property) i.next();
+		ownedEndLoop : for (Property ownedEnd : getOwnedEnds()) {
 			if (eClass != null && !eClass.isInstance(ownedEnd))
 				continue ownedEndLoop;
 			if (name != null && !(ignoreCase
@@ -404,11 +427,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEndTypes() {
+	public EList<Type> getEndTypes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Type> result = (EList<Type>) cache.get(this,
 				UMLPackage.Literals.ASSOCIATION__END_TYPE);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ASSOCIATION__END_TYPE,
@@ -434,8 +458,7 @@
 	 * @generated
 	 */
 	public Type getEndType(String name, boolean ignoreCase, EClass eClass) {
-		endTypeLoop : for (Iterator i = getEndTypes().iterator(); i.hasNext();) {
-			Type endType = (Type) i.next();
+		endTypeLoop : for (Type endType : getEndTypes()) {
 			if (eClass != null && !eClass.isInstance(endType))
 				continue endTypeLoop;
 			if (name != null && !(ignoreCase
@@ -452,9 +475,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNavigableOwnedEnds() {
+	public EList<Property> getNavigableOwnedEnds() {
 		if (navigableOwnedEnds == null) {
-			navigableOwnedEnds = new SubsetSupersetEObjectResolvingEList(
+			navigableOwnedEnds = new SubsetSupersetEObjectResolvingEList<Property>(
 				Property.class, this,
 				UMLPackage.ASSOCIATION_CLASS__NAVIGABLE_OWNED_END,
 				NAVIGABLE_OWNED_END_ESUPERSETS, null);
@@ -503,9 +526,7 @@
 	 */
 	public Property getNavigableOwnedEnd(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		navigableOwnedEndLoop : for (Iterator i = getNavigableOwnedEnds()
-			.iterator(); i.hasNext();) {
-			Property navigableOwnedEnd = (Property) i.next();
+		navigableOwnedEndLoop : for (Property navigableOwnedEnd : getNavigableOwnedEnds()) {
 			if (eClass != null && !eClass.isInstance(navigableOwnedEnd))
 				continue navigableOwnedEndLoop;
 			if (name != null && !(ignoreCase
@@ -527,7 +548,7 @@
 	 * @generated
 	 */
 	public boolean validateSpecializedEndNumber(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateSpecializedEndNumber(this,
 			diagnostics, context);
 	}
@@ -538,7 +559,7 @@
 	 * @generated
 	 */
 	public boolean validateSpecializedEndTypes(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateSpecializedEndTypes(this,
 			diagnostics, context);
 	}
@@ -549,7 +570,7 @@
 	 * @generated
 	 */
 	public boolean validateBinaryAssociations(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateBinaryAssociations(this,
 			diagnostics, context);
 	}
@@ -560,7 +581,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationEnds(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateAssociationEnds(this, diagnostics,
 			context);
 	}
@@ -580,7 +601,7 @@
 	 * @generated
 	 */
 	public boolean validateCannotBeDefined(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationClassOperations.validateCannotBeDefined(this,
 			diagnostics, context);
 	}
@@ -590,10 +611,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allConnections() {
+	public EList<Property> allConnections() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Property> result = (EList<Property>) cache.get(this,
 				UMLPackage.Literals.ASSOCIATION_CLASS.getEOperations().get(1));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ASSOCIATION_CLASS
@@ -610,24 +632,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -642,8 +666,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ASSOCIATION_CLASS__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -655,28 +679,29 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_END :
-				return ((InternalEList) getOwnedEnds())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedEnds())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__MEMBER_END :
-				return ((InternalEList) getMemberEnds()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getMemberEnds())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -686,86 +711,87 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_END :
-				return ((InternalEList) getOwnedEnds()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedEnds()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION_CLASS__MEMBER_END :
-				return ((InternalEList) getMemberEnds()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getMemberEnds()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -775,6 +801,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
@@ -928,15 +955,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__NAME :
 				setName((String) newValue);
@@ -946,22 +977,26 @@
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -977,7 +1012,8 @@
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -987,99 +1023,119 @@
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__OWNED_END :
 				getOwnedEnds().clear();
-				getOwnedEnds().addAll((Collection) newValue);
+				getOwnedEnds()
+					.addAll((Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__MEMBER_END :
 				getMemberEnds().clear();
-				getMemberEnds().addAll((Collection) newValue);
+				getMemberEnds().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__IS_DERIVED :
 				setIsDerived(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ASSOCIATION_CLASS__NAVIGABLE_OWNED_END :
 				getNavigableOwnedEnds().clear();
-				getNavigableOwnedEnds().addAll((Collection) newValue);
+				getNavigableOwnedEnds().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1090,6 +1146,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
@@ -1224,6 +1281,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION_CLASS__EANNOTATIONS :
@@ -1359,7 +1417,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.ASSOCIATION_CLASS__RELATED_ELEMENT :
@@ -1392,7 +1451,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
@@ -1425,6 +1485,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1475,6 +1536,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetMembers() {
 		return super.isSetMembers()
 			|| eIsSet(UMLPackage.ASSOCIATION_CLASS__MEMBER_END);
@@ -1485,6 +1547,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.ASSOCIATION_CLASS__OWNED_END);
@@ -1515,6 +1578,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.ASSOCIATION_CLASS__OWNED_END);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationImpl.java
index 0f83302..d61b064 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/AssociationImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AssociationImpl.java,v 1.27 2006/11/14 18:02:18 khussey Exp $
+ * $Id: AssociationImpl.java,v 1.28 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -39,17 +39,28 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Relationship;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.AssociationOperations;
@@ -87,7 +98,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedEnds = null;
+	protected EList<Property> ownedEnds = null;
 
 	/**
 	 * The cached value of the '{@link #getMemberEnds() <em>Member End</em>}' reference list.
@@ -97,7 +108,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList memberEnds = null;
+	protected EList<Property> memberEnds = null;
 
 	/**
 	 * The default value of the '{@link #isDerived() <em>Is Derived</em>}' attribute.
@@ -127,7 +138,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList navigableOwnedEnds = null;
+	protected EList<Property> navigableOwnedEnds = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -143,6 +154,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ASSOCIATION;
 	}
@@ -152,24 +164,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.ASSOCIATION__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ASSOCIATION__RELATED_ELEMENT, RELATED_ELEMENT_ESUBSETS);
 	}
 
@@ -178,23 +192,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.ASSOCIATION__MEMBER, MEMBER_ESUBSETS));
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.ASSOCIATION__MEMBER, MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ASSOCIATION__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ASSOCIATION__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -202,24 +218,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
-				cache
-					.put(eResource, this,
-						UMLPackage.Literals.CLASSIFIER__FEATURE,
-						features = new DerivedUnionEObjectEList(Feature.class,
-							this, UMLPackage.ASSOCIATION__FEATURE,
-							FEATURE_ESUBSETS));
+				cache.put(eResource, this,
+					UMLPackage.Literals.CLASSIFIER__FEATURE,
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.ASSOCIATION__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.ASSOCIATION__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -228,25 +244,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.ASSOCIATION__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ASSOCIATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ASSOCIATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -254,9 +271,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMemberEnds() {
+	public EList<Property> getMemberEnds() {
 		if (memberEnds == null) {
-			memberEnds = new SubsetSupersetEObjectWithInverseResolvingEList(
+			memberEnds = new SubsetSupersetEObjectWithInverseResolvingEList<Property>(
 				Property.class, this, UMLPackage.ASSOCIATION__MEMBER_END, null,
 				MEMBER_END_ESUBSETS, UMLPackage.PROPERTY__ASSOCIATION);
 		}
@@ -279,9 +296,7 @@
 	 */
 	public Property getMemberEnd(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		memberEndLoop : for (Iterator i = getMemberEnds().iterator(); i
-			.hasNext();) {
-			Property memberEnd = (Property) i.next();
+		memberEndLoop : for (Property memberEnd : getMemberEnds()) {
 			if (eClass != null && !eClass.isInstance(memberEnd))
 				continue memberEndLoop;
 			if (name != null && !(ignoreCase
@@ -300,9 +315,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedEnds() {
+	public EList<Property> getOwnedEnds() {
 		if (ownedEnds == null) {
-			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Property>(
 				Property.class, this, UMLPackage.ASSOCIATION__OWNED_END,
 				OWNED_END_ESUPERSETS, OWNED_END_ESUBSETS,
 				UMLPackage.PROPERTY__OWNING_ASSOCIATION);
@@ -350,8 +365,7 @@
 	 */
 	public Property getOwnedEnd(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedEndLoop : for (Iterator i = getOwnedEnds().iterator(); i.hasNext();) {
-			Property ownedEnd = (Property) i.next();
+		ownedEndLoop : for (Property ownedEnd : getOwnedEnds()) {
 			if (eClass != null && !eClass.isInstance(ownedEnd))
 				continue ownedEndLoop;
 			if (name != null && !(ignoreCase
@@ -399,11 +413,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEndTypes() {
+	public EList<Type> getEndTypes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Type> result = (EList<Type>) cache.get(this,
 				UMLPackage.Literals.ASSOCIATION__END_TYPE);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ASSOCIATION__END_TYPE,
@@ -429,8 +444,7 @@
 	 * @generated
 	 */
 	public Type getEndType(String name, boolean ignoreCase, EClass eClass) {
-		endTypeLoop : for (Iterator i = getEndTypes().iterator(); i.hasNext();) {
-			Type endType = (Type) i.next();
+		endTypeLoop : for (Type endType : getEndTypes()) {
 			if (eClass != null && !eClass.isInstance(endType))
 				continue endTypeLoop;
 			if (name != null && !(ignoreCase
@@ -447,9 +461,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNavigableOwnedEnds() {
+	public EList<Property> getNavigableOwnedEnds() {
 		if (navigableOwnedEnds == null) {
-			navigableOwnedEnds = new SubsetSupersetEObjectResolvingEList(
+			navigableOwnedEnds = new SubsetSupersetEObjectResolvingEList<Property>(
 				Property.class, this,
 				UMLPackage.ASSOCIATION__NAVIGABLE_OWNED_END,
 				NAVIGABLE_OWNED_END_ESUPERSETS, null);
@@ -498,9 +512,7 @@
 	 */
 	public Property getNavigableOwnedEnd(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		navigableOwnedEndLoop : for (Iterator i = getNavigableOwnedEnds()
-			.iterator(); i.hasNext();) {
-			Property navigableOwnedEnd = (Property) i.next();
+		navigableOwnedEndLoop : for (Property navigableOwnedEnd : getNavigableOwnedEnds()) {
 			if (eClass != null && !eClass.isInstance(navigableOwnedEnd))
 				continue navigableOwnedEndLoop;
 			if (name != null && !(ignoreCase
@@ -522,7 +534,7 @@
 	 * @generated
 	 */
 	public boolean validateSpecializedEndNumber(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateSpecializedEndNumber(this,
 			diagnostics, context);
 	}
@@ -533,7 +545,7 @@
 	 * @generated
 	 */
 	public boolean validateSpecializedEndTypes(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateSpecializedEndTypes(this,
 			diagnostics, context);
 	}
@@ -544,7 +556,7 @@
 	 * @generated
 	 */
 	public boolean validateBinaryAssociations(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateBinaryAssociations(this,
 			diagnostics, context);
 	}
@@ -555,7 +567,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationEnds(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return AssociationOperations.validateAssociationEnds(this, diagnostics,
 			context);
 	}
@@ -574,24 +586,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -606,8 +620,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ASSOCIATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -617,22 +631,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_END :
-				return ((InternalEList) getOwnedEnds())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedEnds())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__MEMBER_END :
-				return ((InternalEList) getMemberEnds()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getMemberEnds())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -642,62 +657,63 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ASSOCIATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ASSOCIATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ASSOCIATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ASSOCIATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ASSOCIATION__OWNED_END :
-				return ((InternalEList) getOwnedEnds()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedEnds()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ASSOCIATION__MEMBER_END :
-				return ((InternalEList) getMemberEnds()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getMemberEnds()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -707,6 +723,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
@@ -826,15 +843,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__NAME :
 				setName((String) newValue);
@@ -844,22 +865,26 @@
 				return;
 			case UMLPackage.ASSOCIATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -875,7 +900,8 @@
 				return;
 			case UMLPackage.ASSOCIATION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -885,53 +911,63 @@
 				return;
 			case UMLPackage.ASSOCIATION__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__OWNED_END :
 				getOwnedEnds().clear();
-				getOwnedEnds().addAll((Collection) newValue);
+				getOwnedEnds()
+					.addAll((Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__MEMBER_END :
 				getMemberEnds().clear();
-				getMemberEnds().addAll((Collection) newValue);
+				getMemberEnds().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ASSOCIATION__IS_DERIVED :
 				setIsDerived(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.ASSOCIATION__NAVIGABLE_OWNED_END :
 				getNavigableOwnedEnds().clear();
-				getNavigableOwnedEnds().addAll((Collection) newValue);
+				getNavigableOwnedEnds().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -942,6 +978,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
@@ -1040,6 +1077,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ASSOCIATION__EANNOTATIONS :
@@ -1143,7 +1181,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.ASSOCIATION__RELATED_ELEMENT :
@@ -1160,7 +1199,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
@@ -1177,6 +1217,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1223,6 +1264,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetMembers() {
 		return super.isSetMembers()
 			|| eIsSet(UMLPackage.ASSOCIATION__MEMBER_END);
@@ -1233,6 +1275,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.ASSOCIATION__OWNED_END);
@@ -1256,6 +1299,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.ASSOCIATION__OWNED_END);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorExecutionSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorExecutionSpecificationImpl.java
index 0a5ac4d..54cb76f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorExecutionSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorExecutionSpecificationImpl.java
@@ -8,13 +8,14 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehaviorExecutionSpecificationImpl.java,v 1.13 2006/11/14 18:02:15 khussey Exp $
+ * $Id: BehaviorExecutionSpecificationImpl.java,v 1.14 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -22,8 +23,12 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehaviorExecutionSpecification;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.OccurrenceSpecification;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -70,6 +75,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.BEHAVIOR_EXECUTION_SPECIFICATION;
 	}
@@ -123,6 +129,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -184,15 +191,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -202,18 +213,20 @@
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -239,6 +252,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -289,6 +303,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorImpl.java
index ec907e4..bad1971 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehaviorImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehaviorImpl.java,v 1.28 2006/11/14 18:02:18 khussey Exp $
+ * $Id: BehaviorImpl.java,v 1.29 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -42,16 +42,32 @@
 import org.eclipse.uml2.uml.BehavioredClassifier;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.BehaviorOperations;
@@ -111,7 +127,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedBehaviors = null;
+	protected EList<Behavior> redefinedBehaviors = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedParameters() <em>Owned Parameter</em>}' containment reference list.
@@ -121,7 +137,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameters = null;
+	protected EList<Parameter> ownedParameters = null;
 
 	/**
 	 * The cached value of the '{@link #getPreconditions() <em>Precondition</em>}' containment reference list.
@@ -131,7 +147,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList preconditions = null;
+	protected EList<Constraint> preconditions = null;
 
 	/**
 	 * The cached value of the '{@link #getPostconditions() <em>Postcondition</em>}' containment reference list.
@@ -141,7 +157,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList postconditions = null;
+	protected EList<Constraint> postconditions = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedParameterSets() <em>Owned Parameter Set</em>}' containment reference list.
@@ -151,7 +167,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameterSets = null;
+	protected EList<ParameterSet> ownedParameterSets = null;
 
 	/**
 	 * The cached value of the '{@link #getSpecification() <em>Specification</em>}' reference.
@@ -177,6 +193,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.BEHAVIOR;
 	}
@@ -186,24 +203,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.BEHAVIOR__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.BEHAVIOR__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.BEHAVIOR__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -212,25 +235,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.BEHAVIOR__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.BEHAVIOR__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.BEHAVIOR__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -238,27 +262,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class, this,
 							UMLPackage.BEHAVIOR__REDEFINITION_CONTEXT,
 							REDEFINITION_CONTEXT_ESUBSETS));
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.BEHAVIOR__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -296,10 +324,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedBehaviors() {
+	public EList<Behavior> getRedefinedBehaviors() {
 		if (redefinedBehaviors == null) {
-			redefinedBehaviors = new EObjectResolvingEList(Behavior.class,
-				this, UMLPackage.BEHAVIOR__REDEFINED_BEHAVIOR);
+			redefinedBehaviors = new EObjectResolvingEList<Behavior>(
+				Behavior.class, this, UMLPackage.BEHAVIOR__REDEFINED_BEHAVIOR);
 		}
 		return redefinedBehaviors;
 	}
@@ -320,9 +348,7 @@
 	 */
 	public Behavior getRedefinedBehavior(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinedBehaviorLoop : for (Iterator i = getRedefinedBehaviors()
-			.iterator(); i.hasNext();) {
-			Behavior redefinedBehavior = (Behavior) i.next();
+		redefinedBehaviorLoop : for (Behavior redefinedBehavior : getRedefinedBehaviors()) {
 			if (eClass != null && !eClass.isInstance(redefinedBehavior))
 				continue redefinedBehaviorLoop;
 			if (name != null && !(ignoreCase
@@ -339,9 +365,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameters() {
+	public EList<Parameter> getOwnedParameters() {
 		if (ownedParameters == null) {
-			ownedParameters = new EObjectContainmentEList.Resolving(
+			ownedParameters = new EObjectContainmentEList.Resolving<Parameter>(
 				Parameter.class, this, UMLPackage.BEHAVIOR__OWNED_PARAMETER);
 		}
 		return ownedParameters;
@@ -378,9 +404,7 @@
 	 */
 	public Parameter getOwnedParameter(String name, Type type,
 			boolean ignoreCase, boolean createOnDemand) {
-		ownedParameterLoop : for (Iterator i = getOwnedParameters().iterator(); i
-			.hasNext();) {
-			Parameter ownedParameter = (Parameter) i.next();
+		ownedParameterLoop : for (Parameter ownedParameter : getOwnedParameters()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedParameter.getName())
 				: name.equals(ownedParameter.getName())))
@@ -421,9 +445,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPreconditions() {
+	public EList<Constraint> getPreconditions() {
 		if (preconditions == null) {
-			preconditions = new EObjectContainmentEList.Resolving(
+			preconditions = new EObjectContainmentEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.BEHAVIOR__PRECONDITION);
 		}
 		return preconditions;
@@ -467,9 +491,7 @@
 	 */
 	public Constraint getPrecondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		preconditionLoop : for (Iterator i = getPreconditions().iterator(); i
-			.hasNext();) {
-			Constraint precondition = (Constraint) i.next();
+		preconditionLoop : for (Constraint precondition : getPreconditions()) {
 			if (eClass != null && !eClass.isInstance(precondition))
 				continue preconditionLoop;
 			if (name != null && !(ignoreCase
@@ -488,9 +510,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPostconditions() {
+	public EList<Constraint> getPostconditions() {
 		if (postconditions == null) {
-			postconditions = new EObjectContainmentEList.Resolving(
+			postconditions = new EObjectContainmentEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.BEHAVIOR__POSTCONDITION);
 		}
 		return postconditions;
@@ -534,9 +556,7 @@
 	 */
 	public Constraint getPostcondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		postconditionLoop : for (Iterator i = getPostconditions().iterator(); i
-			.hasNext();) {
-			Constraint postcondition = (Constraint) i.next();
+		postconditionLoop : for (Constraint postcondition : getPostconditions()) {
 			if (eClass != null && !eClass.isInstance(postcondition))
 				continue postconditionLoop;
 			if (name != null && !(ignoreCase
@@ -555,9 +575,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameterSets() {
+	public EList<ParameterSet> getOwnedParameterSets() {
 		if (ownedParameterSets == null) {
-			ownedParameterSets = new EObjectContainmentEList.Resolving(
+			ownedParameterSets = new EObjectContainmentEList.Resolving<ParameterSet>(
 				ParameterSet.class, this,
 				UMLPackage.BEHAVIOR__OWNED_PARAMETER_SET);
 		}
@@ -593,9 +613,7 @@
 	 */
 	public ParameterSet getOwnedParameterSet(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedParameterSetLoop : for (Iterator i = getOwnedParameterSets()
-			.iterator(); i.hasNext();) {
-			ParameterSet ownedParameterSet = (ParameterSet) i.next();
+		ownedParameterSetLoop : for (ParameterSet ownedParameterSet : getOwnedParameterSets()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedParameterSet.getName())
 				: name.equals(ownedParameterSet.getName())))
@@ -690,7 +708,7 @@
 	 * @generated
 	 */
 	public boolean validateParametersMatch(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return BehaviorOperations.validateParametersMatch(this, diagnostics,
 			context);
 	}
@@ -701,7 +719,7 @@
 	 * @generated
 	 */
 	public boolean validateFeatureOfContextClassifier(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return BehaviorOperations.validateFeatureOfContextClassifier(this,
 			diagnostics, context);
 	}
@@ -711,7 +729,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMustRealize(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMustRealize(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return BehaviorOperations.validateMustRealize(this, diagnostics,
 			context);
 	}
@@ -722,7 +741,7 @@
 	 * @generated
 	 */
 	public boolean validateMostOneBehaviour(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return BehaviorOperations.validateMostOneBehaviour(this, diagnostics,
 			context);
 	}
@@ -732,24 +751,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -764,8 +785,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.BEHAVIOR__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -775,22 +796,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__SPECIFICATION :
 				if (specification != null)
 					msgs = ((InternalEObject) specification).eInverseRemove(
@@ -806,92 +828,93 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.BEHAVIOR__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.BEHAVIOR__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.BEHAVIOR__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.BEHAVIOR__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.BEHAVIOR__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__PRECONDITION :
-				return ((InternalEList) getPreconditions()).basicRemove(
+				return ((InternalEList<?>) getPreconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__POSTCONDITION :
-				return ((InternalEList) getPostconditions()).basicRemove(
+				return ((InternalEList<?>) getPostconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIOR__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 		}
@@ -903,6 +926,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
@@ -1064,15 +1088,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__NAME :
 				setName((String) newValue);
@@ -1082,22 +1110,26 @@
 				return;
 			case UMLPackage.BEHAVIOR__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1113,7 +1145,8 @@
 				return;
 			case UMLPackage.BEHAVIOR__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1123,107 +1156,129 @@
 				return;
 			case UMLPackage.BEHAVIOR__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.BEHAVIOR__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.BEHAVIOR__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
@@ -1237,6 +1292,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
@@ -1380,6 +1436,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIOR__EANNOTATIONS :
@@ -1520,6 +1577,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1548,6 +1606,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.BEHAVIOR__REDEFINED_BEHAVIOR);
@@ -1578,6 +1637,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.BEHAVIOR__OWNED_PARAMETER)
@@ -1599,6 +1659,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinitionContexts() {
 		return super.isSetRedefinitionContexts()
 			|| eIsSet(UMLPackage.BEHAVIOR__CONTEXT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioralFeatureImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioralFeatureImpl.java
index eb7cb88..0f996f1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioralFeatureImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioralFeatureImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioralFeatureImpl.java,v 1.20 2006/11/14 18:02:17 khussey Exp $
+ * $Id: BehavioralFeatureImpl.java,v 1.21 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -42,9 +42,14 @@
 import org.eclipse.uml2.uml.BehavioralFeature;
 import org.eclipse.uml2.uml.CallConcurrencyKind;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.ParameterSet;
 import org.eclipse.uml2.uml.RedefinableElement;
@@ -132,7 +137,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameters = null;
+	protected EList<Parameter> ownedParameters = null;
 
 	/**
 	 * The default value of the '{@link #isAbstract() <em>Is Abstract</em>}' attribute.
@@ -162,7 +167,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList methods = null;
+	protected EList<Behavior> methods = null;
 
 	/**
 	 * The default value of the '{@link #getConcurrency() <em>Concurrency</em>}' attribute.
@@ -192,7 +197,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList raisedExceptions = null;
+	protected EList<Type> raisedExceptions = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedParameterSets() <em>Owned Parameter Set</em>}' containment reference list.
@@ -202,7 +207,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameterSets = null;
+	protected EList<ParameterSet> ownedParameterSets = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -218,6 +223,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.BEHAVIORAL_FEATURE;
 	}
@@ -227,27 +233,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-						redefinedElements = new DerivedUnionEObjectEList(
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
 							RedefinableElement.class, this,
 							UMLPackage.BEHAVIORAL_FEATURE__REDEFINED_ELEMENT,
 							null));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.BEHAVIORAL_FEATURE__REDEFINED_ELEMENT, null);
 	}
 
@@ -267,9 +276,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -286,20 +293,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContextsGen() {
+	public EList<Classifier> getRedefinitionContextsGen() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class,
 							this,
 							UMLPackage.BEHAVIORAL_FEATURE__REDEFINITION_CONTEXT,
@@ -307,7 +318,7 @@
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.BEHAVIORAL_FEATURE__REDEFINITION_CONTEXT, null);
 	}
 
@@ -317,19 +328,23 @@
 	 */
 	protected static final int[] REDEFINITION_CONTEXT_ESUBSETS = new int[]{UMLPackage.BEHAVIORAL_FEATURE__NAMESPACE};
 
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContext = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContext = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContext == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContext = new DerivedUnionEObjectEList(
+						redefinitionContext = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class,
 							this,
 							UMLPackage.BEHAVIORAL_FEATURE__REDEFINITION_CONTEXT,
@@ -337,7 +352,7 @@
 			}
 			return redefinitionContext;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.BEHAVIORAL_FEATURE__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -358,9 +373,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -404,24 +417,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeaturingClassifiersGen() {
+	public EList<Classifier> getFeaturingClassifiersGen() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER,
-						null));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class,
+							this,
+							UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER,
+							null));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER, null);
 	}
 
@@ -431,23 +450,29 @@
 	 */
 	protected static final int[] FEATURING_CLASSIFIER_ESUBSETS = new int[]{UMLPackage.BEHAVIORAL_FEATURE__NAMESPACE};
 
-	public EList getFeaturingClassifiers() {
+	public EList<Classifier> getFeaturingClassifiers() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER,
-						FEATURING_CLASSIFIER_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class,
+							this,
+							UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER,
+							FEATURING_CLASSIFIER_ESUBSETS));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.BEHAVIORAL_FEATURE__FEATURING_CLASSIFIER,
 			FEATURING_CLASSIFIER_ESUBSETS);
 	}
@@ -468,9 +493,7 @@
 	 */
 	public Classifier getFeaturingClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		featuringClassifierLoop : for (Iterator i = getFeaturingClassifiers()
-			.iterator(); i.hasNext();) {
-			Classifier featuringClassifier = (Classifier) i.next();
+		featuringClassifierLoop : for (Classifier featuringClassifier : getFeaturingClassifiers()) {
 			if (eClass != null && !eClass.isInstance(featuringClassifier))
 				continue featuringClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -528,25 +551,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.BEHAVIORAL_FEATURE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.BEHAVIORAL_FEATURE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.BEHAVIORAL_FEATURE__OWNED_MEMBER,
+			OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -554,9 +579,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameters() {
+	public EList<Parameter> getOwnedParameters() {
 		if (ownedParameters == null) {
-			ownedParameters = new EObjectContainmentEList.Resolving(
+			ownedParameters = new EObjectContainmentEList.Resolving<Parameter>(
 				Parameter.class, this,
 				UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER);
 		}
@@ -594,9 +619,7 @@
 	 */
 	public Parameter getOwnedParameter(String name, Type type,
 			boolean ignoreCase, boolean createOnDemand) {
-		ownedParameterLoop : for (Iterator i = getOwnedParameters().iterator(); i
-			.hasNext();) {
-			Parameter ownedParameter = (Parameter) i.next();
+		ownedParameterLoop : for (Parameter ownedParameter : getOwnedParameters()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedParameter.getName())
 				: name.equals(ownedParameter.getName())))
@@ -643,10 +666,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMethods() {
+	public EList<Behavior> getMethods() {
 		if (methods == null) {
-			methods = new EObjectWithInverseResolvingEList(Behavior.class,
-				this, UMLPackage.BEHAVIORAL_FEATURE__METHOD,
+			methods = new EObjectWithInverseResolvingEList<Behavior>(
+				Behavior.class, this, UMLPackage.BEHAVIORAL_FEATURE__METHOD,
 				UMLPackage.BEHAVIOR__SPECIFICATION);
 		}
 		return methods;
@@ -667,8 +690,7 @@
 	 * @generated
 	 */
 	public Behavior getMethod(String name, boolean ignoreCase, EClass eClass) {
-		methodLoop : for (Iterator i = getMethods().iterator(); i.hasNext();) {
-			Behavior method = (Behavior) i.next();
+		methodLoop : for (Behavior method : getMethods()) {
 			if (eClass != null && !eClass.isInstance(method))
 				continue methodLoop;
 			if (name != null && !(ignoreCase
@@ -712,10 +734,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRaisedExceptions() {
+	public EList<Type> getRaisedExceptions() {
 		if (raisedExceptions == null) {
-			raisedExceptions = new EObjectResolvingEList(Type.class, this,
-				UMLPackage.BEHAVIORAL_FEATURE__RAISED_EXCEPTION);
+			raisedExceptions = new EObjectResolvingEList<Type>(Type.class,
+				this, UMLPackage.BEHAVIORAL_FEATURE__RAISED_EXCEPTION);
 		}
 		return raisedExceptions;
 	}
@@ -736,9 +758,7 @@
 	 */
 	public Type getRaisedException(String name, boolean ignoreCase,
 			EClass eClass) {
-		raisedExceptionLoop : for (Iterator i = getRaisedExceptions()
-			.iterator(); i.hasNext();) {
-			Type raisedException = (Type) i.next();
+		raisedExceptionLoop : for (Type raisedException : getRaisedExceptions()) {
 			if (eClass != null && !eClass.isInstance(raisedException))
 				continue raisedExceptionLoop;
 			if (name != null && !(ignoreCase
@@ -755,9 +775,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameterSets() {
+	public EList<ParameterSet> getOwnedParameterSets() {
 		if (ownedParameterSets == null) {
-			ownedParameterSets = new EObjectContainmentEList.Resolving(
+			ownedParameterSets = new EObjectContainmentEList.Resolving<ParameterSet>(
 				ParameterSet.class, this,
 				UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER_SET);
 		}
@@ -793,9 +813,7 @@
 	 */
 	public ParameterSet getOwnedParameterSet(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedParameterSetLoop : for (Iterator i = getOwnedParameterSets()
-			.iterator(); i.hasNext();) {
-			ParameterSet ownedParameterSet = (ParameterSet) i.next();
+		ownedParameterSetLoop : for (ParameterSet ownedParameterSet : getOwnedParameterSets()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedParameterSet.getName())
 				: name.equals(ownedParameterSet.getName())))
@@ -813,7 +831,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -824,7 +842,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -871,26 +889,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__METHOD :
-				return ((InternalEList) getMethods()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getMethods())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -900,38 +921,39 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__METHOD :
-				return ((InternalEList) getMethods()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getMethods()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -941,6 +963,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
@@ -1018,15 +1041,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__NAME :
 				setName((String) newValue);
@@ -1036,22 +1063,26 @@
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1061,25 +1092,28 @@
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__IS_ABSTRACT :
 				setIsAbstract(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__METHOD :
 				getMethods().clear();
-				getMethods().addAll((Collection) newValue);
+				getMethods().addAll((Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__CONCURRENCY :
 				setConcurrency((CallConcurrencyKind) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__RAISED_EXCEPTION :
 				getRaisedExceptions().clear();
-				getRaisedExceptions().addAll((Collection) newValue);
+				getRaisedExceptions().addAll(
+					(Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1090,6 +1124,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
@@ -1152,6 +1187,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORAL_FEATURE__EANNOTATIONS :
@@ -1221,7 +1257,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.BEHAVIORAL_FEATURE__IS_LEAF :
@@ -1252,7 +1289,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.REDEFINABLE_ELEMENT__IS_LEAF :
@@ -1283,6 +1321,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1340,6 +1379,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.BEHAVIORAL_FEATURE__OWNED_PARAMETER)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioredClassifierImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioredClassifierImpl.java
index 9748270..d10460f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioredClassifierImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BehavioredClassifierImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioredClassifierImpl.java,v 1.28 2006/11/14 18:02:16 khussey Exp $
+ * $Id: BehavioredClassifierImpl.java,v 1.29 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -41,17 +41,27 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioredClassifier;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.BehavioredClassifierOperations;
@@ -87,7 +97,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedBehaviors = null;
+	protected EList<Behavior> ownedBehaviors = null;
 
 	/**
 	 * The cached value of the '{@link #getClassifierBehavior() <em>Classifier Behavior</em>}' reference.
@@ -107,7 +117,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList interfaceRealizations = null;
+	protected EList<InterfaceRealization> interfaceRealizations = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTriggers() <em>Owned Trigger</em>}' containment reference list.
@@ -117,7 +127,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedTriggers = null;
+	protected EList<Trigger> ownedTriggers = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -133,6 +143,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.BEHAVIORED_CLASSIFIER;
 	}
@@ -142,25 +153,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_MEMBER,
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_MEMBER,
 			OWNED_MEMBER_ESUBSETS);
 	}
 
@@ -169,23 +181,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -195,9 +209,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedBehaviors() {
+	public EList<Behavior> getOwnedBehaviors() {
 		if (ownedBehaviors == null) {
-			ownedBehaviors = new SubsetSupersetEObjectContainmentEList.Resolving(
+			ownedBehaviors = new SubsetSupersetEObjectContainmentEList.Resolving<Behavior>(
 				Behavior.class, this,
 				UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR, null,
 				OWNED_BEHAVIOR_ESUBSETS);
@@ -234,9 +248,7 @@
 	 */
 	public Behavior getOwnedBehavior(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedBehaviorLoop : for (Iterator i = getOwnedBehaviors().iterator(); i
-			.hasNext();) {
-			Behavior ownedBehavior = (Behavior) i.next();
+		ownedBehaviorLoop : for (Behavior ownedBehavior : getOwnedBehaviors()) {
 			if (eClass != null && !eClass.isInstance(ownedBehavior))
 				continue ownedBehaviorLoop;
 			if (name != null && !(ignoreCase
@@ -255,9 +267,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this,
 				UMLPackage.BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY, null,
 				CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
@@ -310,7 +322,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newClassifierBehavior != null) {
-				EList ownedBehaviors = getOwnedBehaviors();
+				EList<Behavior> ownedBehaviors = getOwnedBehaviors();
 				if (!ownedBehaviors.contains(newClassifierBehavior)) {
 					ownedBehaviors.add(newClassifierBehavior);
 				}
@@ -336,9 +348,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInterfaceRealizations() {
+	public EList<InterfaceRealization> getInterfaceRealizations() {
 		if (interfaceRealizations == null) {
-			interfaceRealizations = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			interfaceRealizations = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<InterfaceRealization>(
 				InterfaceRealization.class, this,
 				UMLPackage.BEHAVIORED_CLASSIFIER__INTERFACE_REALIZATION,
 				INTERFACE_REALIZATION_ESUPERSETS, null,
@@ -380,10 +392,7 @@
 	 */
 	public InterfaceRealization getInterfaceRealization(String name,
 			Interface contract, boolean ignoreCase, boolean createOnDemand) {
-		interfaceRealizationLoop : for (Iterator i = getInterfaceRealizations()
-			.iterator(); i.hasNext();) {
-			InterfaceRealization interfaceRealization = (InterfaceRealization) i
-				.next();
+		interfaceRealizationLoop : for (InterfaceRealization interfaceRealization : getInterfaceRealizations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(interfaceRealization.getName())
 				: name.equals(interfaceRealization.getName())))
@@ -403,9 +412,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedTriggers() {
+	public EList<Trigger> getOwnedTriggers() {
 		if (ownedTriggers == null) {
-			ownedTriggers = new EObjectContainmentEList.Resolving(
+			ownedTriggers = new EObjectContainmentEList.Resolving<Trigger>(
 				Trigger.class, this,
 				UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TRIGGER);
 		}
@@ -441,9 +450,7 @@
 	 */
 	public Trigger getOwnedTrigger(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedTriggerLoop : for (Iterator i = getOwnedTriggers().iterator(); i
-			.hasNext();) {
-			Trigger ownedTrigger = (Trigger) i.next();
+		ownedTriggerLoop : for (Trigger ownedTrigger : getOwnedTriggers()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedTrigger.getName())
 				: name.equals(ownedTrigger.getName())))
@@ -461,7 +468,7 @@
 	 * @generated
 	 */
 	public boolean validateClassBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return BehavioredClassifierOperations.validateClassBehavior(this,
 			diagnostics, context);
 	}
@@ -471,10 +478,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImplementedInterfaces() {
+	public EList<Interface> getImplementedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.BEHAVIORED_CLASSIFIER.getEOperations().get(
 					1));
 			if (result == null) {
@@ -493,10 +501,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllImplementedInterfaces() {
+	public EList<Interface> getAllImplementedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.BEHAVIORED_CLASSIFIER.getEOperations().get(
 					2));
 			if (result == null) {
@@ -515,24 +524,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -547,8 +558,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -560,19 +571,20 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -582,64 +594,65 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -650,6 +663,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
@@ -765,15 +779,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__NAME :
 				setName((String) newValue);
@@ -783,22 +801,26 @@
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -814,7 +836,8 @@
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -824,53 +847,63 @@
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -881,6 +914,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
@@ -979,6 +1013,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BEHAVIORED_CLASSIFIER__EANNOTATIONS :
@@ -1092,6 +1127,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR)
@@ -1156,6 +1192,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.BEHAVIORED_CLASSIFIER__INTERFACE_REALIZATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BroadcastSignalActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BroadcastSignalActionImpl.java
index de2bdca..69b15f1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BroadcastSignalActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/BroadcastSignalActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BroadcastSignalActionImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: BroadcastSignalActionImpl.java,v 1.15 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,13 +19,23 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.BroadcastSignalAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.StringExpression;
@@ -76,6 +86,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.BROADCAST_SIGNAL_ACTION;
 	}
@@ -129,7 +140,7 @@
 	 * @generated
 	 */
 	public boolean validateNumberAndOrder(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return BroadcastSignalActionOperations.validateNumberAndOrder(this,
 			diagnostics, context);
 	}
@@ -140,7 +151,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOrderingMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return BroadcastSignalActionOperations
 			.validateTypeOrderingMultiplicity(this, diagnostics, context);
 	}
@@ -150,6 +161,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__EANNOTATIONS :
@@ -239,15 +251,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__NAME :
 				setName((String) newValue);
@@ -257,7 +273,8 @@
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -273,39 +290,49 @@
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -322,6 +349,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__EANNOTATIONS :
@@ -393,6 +421,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.BROADCAST_SIGNAL_ACTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallActionImpl.java
index 5bcd087..5ee6d2a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: CallActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.CallAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.StringExpression;
@@ -95,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList results = null;
+	protected EList<OutputPin> results = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,6 +121,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CALL_ACTION;
 	}
@@ -121,21 +131,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.CALL_ACTION__OUTPUT, OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this, UMLPackage.CALL_ACTION__OUTPUT,
+						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.CALL_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -172,10 +184,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getResults() {
+	public EList<OutputPin> getResults() {
 		if (results == null) {
-			results = new EObjectContainmentEList.Resolving(OutputPin.class,
-				this, UMLPackage.CALL_ACTION__RESULT);
+			results = new EObjectContainmentEList.Resolving<OutputPin>(
+				OutputPin.class, this, UMLPackage.CALL_ACTION__RESULT);
 		}
 		return results;
 	}
@@ -211,8 +223,7 @@
 	 */
 	public OutputPin getResult(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		resultLoop : for (Iterator i = getResults().iterator(); i.hasNext();) {
-			OutputPin result = (OutputPin) i.next();
+		resultLoop : for (OutputPin result : getResults()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(result.getName())
 				: name.equals(result.getName())))
@@ -232,7 +243,7 @@
 	 * @generated
 	 */
 	public boolean validateSynchronousCall(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CallActionOperations.validateSynchronousCall(this, diagnostics,
 			context);
 	}
@@ -243,7 +254,7 @@
 	 * @generated
 	 */
 	public boolean validateNumberAndOrder(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CallActionOperations.validateNumberAndOrder(this, diagnostics,
 			context);
 	}
@@ -254,7 +265,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOrderingMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CallActionOperations.validateTypeOrderingMultiplicity(this,
 			diagnostics, context);
 	}
@@ -264,18 +275,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CALL_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CALL_ACTION__IN_STRUCTURED_NODE :
@@ -283,31 +295,31 @@
 			case UMLPackage.CALL_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CALL_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CALL_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_ACTION__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -318,6 +330,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CALL_ACTION__EANNOTATIONS :
@@ -409,15 +422,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CALL_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__NAME :
 				setName((String) newValue);
@@ -427,7 +444,8 @@
 				return;
 			case UMLPackage.CALL_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -443,39 +461,49 @@
 				return;
 			case UMLPackage.CALL_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.CALL_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -485,7 +513,7 @@
 				return;
 			case UMLPackage.CALL_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -496,6 +524,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_ACTION__EANNOTATIONS :
@@ -570,6 +599,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_ACTION__EANNOTATIONS :
@@ -649,6 +679,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -675,6 +706,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs() || eIsSet(UMLPackage.CALL_ACTION__RESULT);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallBehaviorActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallBehaviorActionImpl.java
index 7ec5b49..55a0605 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallBehaviorActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallBehaviorActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallBehaviorActionImpl.java,v 1.14 2006/11/14 18:02:18 khussey Exp $
+ * $Id: CallBehaviorActionImpl.java,v 1.15 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,25 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.CallBehaviorAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
+import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -76,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CALL_BEHAVIOR_ACTION;
 	}
@@ -130,7 +142,7 @@
 	 * @generated
 	 */
 	public boolean validateArgumentPinEqualParameter(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CallBehaviorActionOperations.validateArgumentPinEqualParameter(
 			this, diagnostics, context);
 	}
@@ -141,7 +153,7 @@
 	 * @generated
 	 */
 	public boolean validateResultPinEqualParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CallBehaviorActionOperations.validateResultPinEqualParameter(
 			this, diagnostics, context);
 	}
@@ -152,7 +164,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOrderingMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CallBehaviorActionOperations.validateTypeOrderingMultiplicity(
 			this, diagnostics, context);
 	}
@@ -162,6 +174,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CALL_BEHAVIOR_ACTION__EANNOTATIONS :
@@ -257,15 +270,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CALL_BEHAVIOR_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__NAME :
 				setName((String) newValue);
@@ -275,7 +292,8 @@
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -291,39 +309,49 @@
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -333,7 +361,7 @@
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.CALL_BEHAVIOR_ACTION__BEHAVIOR :
 				setBehavior((Behavior) newValue);
@@ -347,6 +375,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_BEHAVIOR_ACTION__EANNOTATIONS :
@@ -424,6 +453,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_BEHAVIOR_ACTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallEventImpl.java
index 9f7ce34..73fe5fc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallEventImpl.java
@@ -8,19 +8,22 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallEventImpl.java,v 1.11 2006/11/14 18:02:18 khussey Exp $
+ * $Id: CallEventImpl.java,v 1.12 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.CallEvent;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CALL_EVENT;
 	}
@@ -120,6 +124,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CALL_EVENT__EANNOTATIONS :
@@ -169,15 +174,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CALL_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CALL_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CALL_EVENT__NAME :
 				setName((String) newValue);
@@ -187,7 +196,8 @@
 				return;
 			case UMLPackage.CALL_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CALL_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -210,6 +220,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_EVENT__EANNOTATIONS :
@@ -248,6 +259,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallOperationActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallOperationActionImpl.java
index 484ecdf..3b7377e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallOperationActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CallOperationActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallOperationActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: CallOperationActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,9 +36,18 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.CallOperationAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -100,6 +110,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CALL_OPERATION_ACTION;
 	}
@@ -109,23 +120,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(InputPin.class,
-							this, UMLPackage.CALL_OPERATION_ACTION__INPUT,
+						inputs = new DerivedUnionEObjectEList<InputPin>(
+							InputPin.class, this,
+							UMLPackage.CALL_OPERATION_ACTION__INPUT,
 							INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.CALL_OPERATION_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -289,7 +302,7 @@
 	 * @generated
 	 */
 	public boolean validateArgumentPinEqualParameter(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CallOperationActionOperations.validateArgumentPinEqualParameter(
 			this, diagnostics, context);
 	}
@@ -300,7 +313,7 @@
 	 * @generated
 	 */
 	public boolean validateResultPinEqualParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CallOperationActionOperations.validateResultPinEqualParameter(
 			this, diagnostics, context);
 	}
@@ -311,7 +324,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeTargetPin(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CallOperationActionOperations.validateTypeTargetPin(this,
 			diagnostics, context);
 	}
@@ -322,7 +335,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOrderingMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CallOperationActionOperations.validateTypeOrderingMultiplicity(
 			this, diagnostics, context);
 	}
@@ -332,18 +345,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CALL_OPERATION_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__IN_STRUCTURED_NODE :
@@ -351,31 +365,31 @@
 			case UMLPackage.CALL_OPERATION_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CALL_OPERATION_ACTION__TARGET :
 				return basicSetTarget(null, msgs);
@@ -388,6 +402,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CALL_OPERATION_ACTION__EANNOTATIONS :
@@ -487,15 +502,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CALL_OPERATION_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__NAME :
 				setName((String) newValue);
@@ -505,7 +524,8 @@
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -521,39 +541,49 @@
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -563,7 +593,7 @@
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.CALL_OPERATION_ACTION__OPERATION :
 				setOperation((Operation) newValue);
@@ -580,6 +610,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_OPERATION_ACTION__EANNOTATIONS :
@@ -660,6 +691,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CALL_OPERATION_ACTION__EANNOTATIONS :
@@ -755,6 +787,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.CALL_OPERATION_ACTION__TARGET);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CentralBufferNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CentralBufferNodeImpl.java
index b7a6f08..8447da2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CentralBufferNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CentralBufferNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CentralBufferNodeImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: CentralBufferNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CENTRAL_BUFFER_NODE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ChangeEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ChangeEventImpl.java
index 3faf5b1..235ca76 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ChangeEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ChangeEventImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ChangeEventImpl.java,v 1.18 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ChangeEventImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,6 +32,8 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.ChangeEvent;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -81,6 +84,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CHANGE_EVENT;
 	}
@@ -90,23 +94,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CHANGE_EVENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.CHANGE_EVENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CHANGE_EVENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -223,18 +229,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CHANGE_EVENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CHANGE_EVENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CHANGE_EVENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CHANGE_EVENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CHANGE_EVENT__OWNING_TEMPLATE_PARAMETER :
@@ -252,6 +259,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CHANGE_EVENT__EANNOTATIONS :
@@ -301,15 +309,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CHANGE_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CHANGE_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CHANGE_EVENT__NAME :
 				setName((String) newValue);
@@ -319,7 +331,8 @@
 				return;
 			case UMLPackage.CHANGE_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CHANGE_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -342,6 +355,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CHANGE_EVENT__EANNOTATIONS :
@@ -380,6 +394,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CHANGE_EVENT__EANNOTATIONS :
@@ -433,6 +448,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.CHANGE_EVENT__CHANGE_EXPRESSION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassImpl.java
index cc25187..7e0fd20 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassImpl.java,v 1.37 2006/11/14 18:02:15 khussey Exp $
+ * $Id: ClassImpl.java,v 1.38 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -25,6 +24,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
@@ -48,25 +48,35 @@
 import org.eclipse.uml2.uml.BehavioredClassifier;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Extension;
 import org.eclipse.uml2.uml.Feature;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLFactory;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.BehavioredClassifierOperations;
@@ -113,7 +123,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedBehaviors = null;
+	protected EList<Behavior> ownedBehaviors = null;
 
 	/**
 	 * The cached value of the '{@link #getClassifierBehavior() <em>Classifier Behavior</em>}' reference.
@@ -133,7 +143,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList interfaceRealizations = null;
+	protected EList<InterfaceRealization> interfaceRealizations = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTriggers() <em>Owned Trigger</em>}' containment reference list.
@@ -143,7 +153,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedTriggers = null;
+	protected EList<Trigger> ownedTriggers = null;
 
 	/**
 	 * The cached value of the '{@link #getNestedClassifiers() <em>Nested Classifier</em>}' containment reference list.
@@ -153,7 +163,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nestedClassifiers = null;
+	protected EList<Classifier> nestedClassifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedOperations() <em>Owned Operation</em>}' containment reference list.
@@ -163,7 +173,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedOperations = null;
+	protected EList<Operation> ownedOperations = null;
 
 	/**
 	 * The default value of the '{@link #isActive() <em>Is Active</em>}' attribute.
@@ -193,7 +203,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedReceptions = null;
+	protected EList<Reception> ownedReceptions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -209,6 +219,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLASS;
 	}
@@ -218,24 +229,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.CLASS__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.CLASS__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.CLASS__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -243,23 +255,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CLASS__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.CLASS__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CLASS__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -268,9 +281,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedBehaviors() {
+	public EList<Behavior> getOwnedBehaviors() {
 		if (ownedBehaviors == null) {
-			ownedBehaviors = new SubsetSupersetEObjectContainmentEList.Resolving(
+			ownedBehaviors = new SubsetSupersetEObjectContainmentEList.Resolving<Behavior>(
 				Behavior.class, this, UMLPackage.CLASS__OWNED_BEHAVIOR, null,
 				OWNED_BEHAVIOR_ESUBSETS);
 		}
@@ -306,9 +319,7 @@
 	 */
 	public Behavior getOwnedBehavior(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedBehaviorLoop : for (Iterator i = getOwnedBehaviors().iterator(); i
-			.hasNext();) {
-			Behavior ownedBehavior = (Behavior) i.next();
+		ownedBehaviorLoop : for (Behavior ownedBehavior : getOwnedBehaviors()) {
 			if (eClass != null && !eClass.isInstance(ownedBehavior))
 				continue ownedBehaviorLoop;
 			if (name != null && !(ignoreCase
@@ -327,9 +338,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this, UMLPackage.CLASS__CLIENT_DEPENDENCY,
 				null, CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
 		}
@@ -381,7 +392,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newClassifierBehavior != null) {
-				EList ownedBehaviors = getOwnedBehaviors();
+				EList<Behavior> ownedBehaviors = getOwnedBehaviors();
 				if (!ownedBehaviors.contains(newClassifierBehavior)) {
 					ownedBehaviors.add(newClassifierBehavior);
 				}
@@ -407,9 +418,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInterfaceRealizations() {
+	public EList<InterfaceRealization> getInterfaceRealizations() {
 		if (interfaceRealizations == null) {
-			interfaceRealizations = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			interfaceRealizations = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<InterfaceRealization>(
 				InterfaceRealization.class, this,
 				UMLPackage.CLASS__INTERFACE_REALIZATION,
 				INTERFACE_REALIZATION_ESUPERSETS, null,
@@ -451,10 +462,7 @@
 	 */
 	public InterfaceRealization getInterfaceRealization(String name,
 			Interface contract, boolean ignoreCase, boolean createOnDemand) {
-		interfaceRealizationLoop : for (Iterator i = getInterfaceRealizations()
-			.iterator(); i.hasNext();) {
-			InterfaceRealization interfaceRealization = (InterfaceRealization) i
-				.next();
+		interfaceRealizationLoop : for (InterfaceRealization interfaceRealization : getInterfaceRealizations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(interfaceRealization.getName())
 				: name.equals(interfaceRealization.getName())))
@@ -474,9 +482,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedTriggers() {
+	public EList<Trigger> getOwnedTriggers() {
 		if (ownedTriggers == null) {
-			ownedTriggers = new EObjectContainmentEList.Resolving(
+			ownedTriggers = new EObjectContainmentEList.Resolving<Trigger>(
 				Trigger.class, this, UMLPackage.CLASS__OWNED_TRIGGER);
 		}
 		return ownedTriggers;
@@ -511,9 +519,7 @@
 	 */
 	public Trigger getOwnedTrigger(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedTriggerLoop : for (Iterator i = getOwnedTriggers().iterator(); i
-			.hasNext();) {
-			Trigger ownedTrigger = (Trigger) i.next();
+		ownedTriggerLoop : for (Trigger ownedTrigger : getOwnedTriggers()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedTrigger.getName())
 				: name.equals(ownedTrigger.getName())))
@@ -530,22 +536,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.CLASS__FEATURE, FEATURE_ESUBSETS));
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.CLASS__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.CLASS__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -554,22 +562,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.CLASS__ATTRIBUTE, ATTRIBUTE_ESUBSETS));
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.CLASS__ATTRIBUTE,
+						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.CLASS__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -578,9 +588,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedOperations() {
+	public EList<Operation> getOwnedOperations() {
 		if (ownedOperations == null) {
-			ownedOperations = new EObjectContainmentWithInverseEList.Resolving(
+			ownedOperations = new EObjectContainmentWithInverseEList.Resolving<Operation>(
 				Operation.class, this, UMLPackage.CLASS__OWNED_OPERATION,
 				UMLPackage.OPERATION__CLASS);
 		}
@@ -593,7 +603,7 @@
 	 * @generated
 	 */
 	public Operation createOwnedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Operation newOwnedOperation = (Operation) create(UMLPackage.Literals.OPERATION);
 		getOwnedOperations().add(newOwnedOperation);
 		if (name != null)
@@ -624,8 +634,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedOperation(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -635,28 +645,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedOperationLoop : for (Iterator i = getOwnedOperations().iterator(); i
-			.hasNext();) {
-			Operation ownedOperation = (Operation) i.next();
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedOperationLoop : for (Operation ownedOperation : getOwnedOperations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedOperation.getName())
 				: name.equals(ownedOperation.getName())))
 				continue ownedOperationLoop;
-			EList ownedParameterList = ownedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedOperation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedOperationLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -679,9 +687,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNestedClassifiers() {
+	public EList<Classifier> getNestedClassifiers() {
 		if (nestedClassifiers == null) {
-			nestedClassifiers = new EObjectContainmentEList.Resolving(
+			nestedClassifiers = new EObjectContainmentEList.Resolving<Classifier>(
 				Classifier.class, this, UMLPackage.CLASS__NESTED_CLASSIFIER);
 		}
 		return nestedClassifiers;
@@ -716,9 +724,7 @@
 	 */
 	public Classifier getNestedClassifier(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		nestedClassifierLoop : for (Iterator i = getNestedClassifiers()
-			.iterator(); i.hasNext();) {
-			Classifier nestedClassifier = (Classifier) i.next();
+		nestedClassifierLoop : for (Classifier nestedClassifier : getNestedClassifiers()) {
 			if (eClass != null && !eClass.isInstance(nestedClassifier))
 				continue nestedClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -733,35 +739,40 @@
 	}
 
 	protected static class SuperClassEList
-			extends DerivedSubsetEObjectEList {
+			extends DerivedSubsetEObjectEList<Object> {
 
-		protected SuperClassEList(Class dataClass, InternalEObject owner,
+		protected SuperClassEList(Class<?> dataClass, InternalEObject owner,
 				int featureID, int[] sourceFeatureIDs) {
 			super(dataClass, owner, featureID, sourceFeatureIDs);
 		}
 
-		public List basicList() {
+		@Override
+		public List<Object> basicList() {
 			return new SuperClassEList(dataClass, owner, featureID,
 				sourceFeatureIDs) {
 
-				public ListIterator listIterator(int index) {
+				@Override
+				public ListIterator<Object> listIterator(int index) {
 					return basicListIterator(index);
 				}
 			};
 		}
 
+		@Override
 		protected boolean isIncluded(EStructuralFeature feature) {
 			return false;
 		}
 
+		@Override
 		protected Object derive(Object object) {
 			return ((Generalization) object).getGeneral();
 		}
 
-		protected Object validate(int index, Object object) {
+		@Override
+		protected Generalization validate(int index, Object object) {
 			Generalization generalization = UMLFactory.eINSTANCE
 				.createGeneralization();
-			generalization.setGeneral((org.eclipse.uml2.uml.Class) super
+			generalization.setGeneral((Classifier) super
 				.validate(index, object));
 			return generalization;
 		}
@@ -779,23 +790,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getSuperClasses() {
+	@SuppressWarnings("unchecked")
+	public EList<org.eclipse.uml2.uml.Class> getSuperClasses() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList superClasses = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASS__SUPER_CLASS);
+			EList<org.eclipse.uml2.uml.Class> superClasses = (EList<org.eclipse.uml2.uml.Class>) cache
+				.get(eResource, this, UMLPackage.Literals.CLASS__SUPER_CLASS);
 			if (superClasses == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.CLASS__SUPER_CLASS,
-					superClasses = new SuperClassEList(
-						org.eclipse.uml2.uml.Class.class, this,
-						UMLPackage.CLASS__SUPER_CLASS, SUPER_CLASS_ESUPERSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.CLASS__SUPER_CLASS,
+						superClasses = (EList<org.eclipse.uml2.uml.Class>) ((EList<?>) new SuperClassEList(
+							org.eclipse.uml2.uml.Class.class, this,
+							UMLPackage.CLASS__SUPER_CLASS,
+							SUPER_CLASS_ESUPERSETS)));
 			}
 			return superClasses;
 		}
-		return new SuperClassEList(org.eclipse.uml2.uml.Class.class, this,
-			UMLPackage.CLASS__SUPER_CLASS, SUPER_CLASS_ESUPERSETS);
+		return (EList<org.eclipse.uml2.uml.Class>) ((EList<?>) new SuperClassEList(
+			org.eclipse.uml2.uml.Class.class, this,
+			UMLPackage.CLASS__SUPER_CLASS, SUPER_CLASS_ESUPERSETS));
 	}
 
 	/**
@@ -814,10 +831,7 @@
 	 */
 	public org.eclipse.uml2.uml.Class getSuperClass(String name,
 			boolean ignoreCase, EClass eClass) {
-		superClassLoop : for (Iterator i = getSuperClasses().iterator(); i
-			.hasNext();) {
-			org.eclipse.uml2.uml.Class superClass = (org.eclipse.uml2.uml.Class) i
-				.next();
+		superClassLoop : for (org.eclipse.uml2.uml.Class superClass : getSuperClasses()) {
 			if (eClass != null && !eClass.isInstance(superClass))
 				continue superClassLoop;
 			if (name != null && !(ignoreCase
@@ -870,9 +884,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedReceptions() {
+	public EList<Reception> getOwnedReceptions() {
 		if (ownedReceptions == null) {
-			ownedReceptions = new EObjectContainmentEList.Resolving(
+			ownedReceptions = new EObjectContainmentEList.Resolving<Reception>(
 				Reception.class, this, UMLPackage.CLASS__OWNED_RECEPTION);
 		}
 		return ownedReceptions;
@@ -884,7 +898,7 @@
 	 * @generated
 	 */
 	public Reception createOwnedReception(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Reception newOwnedReception = (Reception) create(UMLPackage.Literals.RECEPTION);
 		getOwnedReceptions().add(newOwnedReception);
 		if (name != null)
@@ -915,8 +929,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Reception getOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedReception(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -926,28 +940,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedReceptionLoop : for (Iterator i = getOwnedReceptions().iterator(); i
-			.hasNext();) {
-			Reception ownedReception = (Reception) i.next();
+	public Reception getOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedReceptionLoop : for (Reception ownedReception : getOwnedReceptions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedReception.getName())
 				: name.equals(ownedReception.getName())))
 				continue ownedReceptionLoop;
-			EList ownedParameterList = ownedReception.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedReception
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedReceptionLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -970,11 +982,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtensions() {
+	public EList<Extension> getExtensions() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Extension> result = (EList<Extension>) cache.get(this,
 				UMLPackage.Literals.CLASS__EXTENSION);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASS__EXTENSION,
@@ -1000,9 +1013,7 @@
 	 * @generated
 	 */
 	public Extension getExtension(String name, boolean ignoreCase) {
-		extensionLoop : for (Iterator i = getExtensions().iterator(); i
-			.hasNext();) {
-			Extension extension = (Extension) i.next();
+		extensionLoop : for (Extension extension : getExtensions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(extension.getName())
 				: name.equals(extension.getName())))
@@ -1017,9 +1028,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this, UMLPackage.CLASS__OWNED_ATTRIBUTE);
 		}
 		return ownedAttributes;
@@ -1030,6 +1041,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property createOwnedAttribute(String name, Type type, EClass eClass) {
 		Property newOwnedAttribute = (Property) create(eClass);
 		getOwnedAttributes().add(newOwnedAttribute);
@@ -1045,6 +1057,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property createOwnedAttribute(String name, Type type) {
 		return createOwnedAttribute(name, type, UMLPackage.Literals.PROPERTY);
 	}
@@ -1054,6 +1067,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property getOwnedAttribute(String name, Type type) {
 		return getOwnedAttribute(name, type, false, null, false);
 	}
@@ -1063,11 +1077,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -1134,7 +1147,7 @@
 	 * @generated
 	 */
 	public boolean validateClassBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return BehavioredClassifierOperations.validateClassBehavior(this,
 			diagnostics, context);
 	}
@@ -1144,10 +1157,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImplementedInterfaces() {
+	public EList<Interface> getImplementedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.BEHAVIORED_CLASSIFIER.getEOperations().get(
 					1));
 			if (result == null) {
@@ -1166,10 +1180,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllImplementedInterfaces() {
+	public EList<Interface> getAllImplementedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.BEHAVIORED_CLASSIFIER.getEOperations().get(
 					2));
 			if (result == null) {
@@ -1188,7 +1203,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validatePassiveClass(DiagnosticChain diagnostics, Map context) {
+	public boolean validatePassiveClass(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ClassOperations.validatePassiveClass(this, diagnostics, context);
 	}
 
@@ -1197,8 +1213,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType) {
+	public Operation createOwnedOperation(String name,
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			Type returnType) {
 		return ClassOperations.createOwnedOperation(this, name, parameterNames,
 			parameterTypes, returnType);
 	}
@@ -1217,7 +1234,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList inherit(EList inhs) {
+	public EList<NamedElement> inherit(EList<NamedElement> inhs) {
 		return ClassOperations.inherit(this, inhs);
 	}
 
@@ -1226,24 +1243,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1258,8 +1277,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.CLASS__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -1269,22 +1288,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.CLASS__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -1294,79 +1314,80 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLASS__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CLASS__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.CLASS__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.CLASS__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.CLASS__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CLASS__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASS__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -1377,6 +1398,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
@@ -1516,15 +1538,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CLASS__NAME :
 				setName((String) newValue);
@@ -1534,22 +1560,26 @@
 				return;
 			case UMLPackage.CLASS__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CLASS__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.CLASS__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.CLASS__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CLASS__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1565,7 +1595,8 @@
 				return;
 			case UMLPackage.CLASS__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1575,84 +1606,101 @@
 				return;
 			case UMLPackage.CLASS__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.CLASS__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.CLASS__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.CLASS__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.CLASS__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.CLASS__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.CLASS__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.CLASS__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.CLASS__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.CLASS__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.CLASS__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.CLASS__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.CLASS__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.CLASS__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.CLASS__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1663,6 +1711,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
@@ -1785,6 +1834,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASS__EANNOTATIONS :
@@ -1907,7 +1957,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == BehavioredClassifier.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.CLASS__OWNED_BEHAVIOR :
@@ -1930,7 +1981,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == BehavioredClassifier.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR :
@@ -1953,6 +2005,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1986,6 +2039,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers() || isSetOwnedAttributes()
 			|| eIsSet(UMLPackage.CLASS__OWNED_BEHAVIOR)
@@ -2048,6 +2102,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.CLASS__INTERFACE_REALIZATION);
@@ -2070,6 +2125,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.CLASS__OWNED_OPERATION)
@@ -2091,6 +2147,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes() || isSetOwnedAttributes();
 	}
@@ -2100,8 +2157,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGenerals() {
-		return getSuperClasses();
+	@Override
+	public EList<Classifier> getGenerals() {
+		@SuppressWarnings("unchecked")
+		EList<Classifier> superClass = (EList<Classifier>) ((EList<?>) getSuperClasses());
+		return superClass;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierImpl.java
index 706ac6b..01f19bb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassifierImpl.java,v 1.38 2006/11/17 15:48:50 khussey Exp $
+ * $Id: ClassifierImpl.java,v 1.39 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -49,14 +49,19 @@
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.ClassifierTemplateParameter;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
 import org.eclipse.uml2.uml.Generalization;
 import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.PackageableElement;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.Property;
@@ -163,7 +168,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -183,7 +188,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList collaborationUses = null;
+	protected EList<CollaborationUse> collaborationUses = null;
 
 	/**
 	 * The default value of the '{@link #isAbstract() <em>Is Abstract</em>}' attribute.
@@ -213,7 +218,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalizations = null;
+	protected EList<Generalization> generalizations = null;
 
 	/**
 	 * The cached value of the '{@link #getPowertypeExtents() <em>Powertype Extent</em>}' reference list.
@@ -223,7 +228,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList powertypeExtents = null;
+	protected EList<GeneralizationSet> powertypeExtents = null;
 
 	/**
 	 * The cached value of the '{@link #getRedefinedClassifiers() <em>Redefined Classifier</em>}' reference list.
@@ -233,7 +238,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedClassifiers = null;
+	protected EList<Classifier> redefinedClassifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getSubstitutions() <em>Substitution</em>}' containment reference list.
@@ -243,7 +248,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList substitutions = null;
+	protected EList<Substitution> substitutions = null;
 
 	/**
 	 * The cached value of the '{@link #getRepresentation() <em>Representation</em>}' reference.
@@ -263,7 +268,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedUseCases = null;
+	protected EList<UseCase> ownedUseCases = null;
 
 	/**
 	 * The cached value of the '{@link #getUseCases() <em>Use Case</em>}' reference list.
@@ -273,7 +278,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList useCases = null;
+	protected EList<UseCase> useCases = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -289,6 +294,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLASSIFIER;
 	}
@@ -298,24 +304,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.CLASSIFIER__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.CLASSIFIER__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.CLASSIFIER__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -336,9 +348,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -355,26 +365,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContextsGen() {
+	public EList<Classifier> getRedefinitionContextsGen() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class, this,
 							UMLPackage.CLASSIFIER__REDEFINITION_CONTEXT, null));
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.CLASSIFIER__REDEFINITION_CONTEXT, null);
 	}
 
@@ -384,26 +398,30 @@
 	 */
 	protected static final int[] REDEFINITION_CONTEXT_ESUBSETS = new int[]{UMLPackage.CLASSIFIER__NAMESPACE};
 
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedEObjectEList(
+						redefinitionContexts = new DerivedEObjectEList<Classifier>(
 							Classifier.class, this,
 							UMLPackage.CLASSIFIER__REDEFINITION_CONTEXT,
 							REDEFINITION_CONTEXT_ESUBSETS));
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedEObjectEList(Classifier.class, this,
+		return new DerivedEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.CLASSIFIER__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -424,9 +442,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -750,8 +766,8 @@
 			if (eInternalContainer() != null)
 				msgs = eBasicRemoveFromContainer(msgs);
 			if (newPackage != null)
-				msgs = ((InternalEList) newPackage.getOwnedTypes()).basicAdd(
-					this, msgs);
+				msgs = ((InternalEList<Type>) newPackage.getOwnedTypes())
+					.basicAdd(this, msgs);
 			msgs = eBasicSetContainer((InternalEObject) newPackage,
 				UMLPackage.CLASSIFIER__PACKAGE, msgs);
 			if (msgs != null)
@@ -766,23 +782,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CLASSIFIER__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.CLASSIFIER__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CLASSIFIER__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -791,9 +809,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.CLASSIFIER__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -830,9 +848,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -987,24 +1003,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
-				cache
-					.put(eResource, this,
-						UMLPackage.Literals.CLASSIFIER__FEATURE,
-						features = new DerivedUnionEObjectEList(Feature.class,
-							this, UMLPackage.CLASSIFIER__FEATURE,
-							FEATURE_ESUBSETS));
+				cache.put(eResource, this,
+					UMLPackage.Literals.CLASSIFIER__FEATURE,
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.CLASSIFIER__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.CLASSIFIER__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -1023,8 +1039,7 @@
 	 * @generated
 	 */
 	public Feature getFeature(String name, boolean ignoreCase, EClass eClass) {
-		featureLoop : for (Iterator i = getFeatures().iterator(); i.hasNext();) {
-			Feature feature = (Feature) i.next();
+		featureLoop : for (Feature feature : getFeatures()) {
 			if (eClass != null && !eClass.isInstance(feature))
 				continue featureLoop;
 			if (name != null && !(ignoreCase
@@ -1041,23 +1056,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.CLASSIFIER__MEMBER, MEMBER_ESUBSETS));
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.CLASSIFIER__MEMBER, MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.CLASSIFIER__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.CLASSIFIER__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -1065,25 +1082,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.CLASSIFIER__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.CLASSIFIER__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.CLASSIFIER__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -1091,22 +1109,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.CLASSIFIER__ATTRIBUTE, null));
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.CLASSIFIER__ATTRIBUTE,
+						null));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.CLASSIFIER__ATTRIBUTE, null);
 	}
 
@@ -1126,9 +1146,7 @@
 	 */
 	public Property getAttribute(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		attributeLoop : for (Iterator i = getAttributes().iterator(); i
-			.hasNext();) {
-			Property attribute = (Property) i.next();
+		attributeLoop : for (Property attribute : getAttributes()) {
 			if (eClass != null && !eClass.isInstance(attribute))
 				continue attributeLoop;
 			if (name != null && !(ignoreCase
@@ -1147,9 +1165,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this,
 				UMLPackage.CLASSIFIER__CLIENT_DEPENDENCY, null,
 				CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
@@ -1162,9 +1180,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCollaborationUses() {
+	public EList<CollaborationUse> getCollaborationUses() {
 		if (collaborationUses == null) {
-			collaborationUses = new SubsetSupersetEObjectContainmentEList.Resolving(
+			collaborationUses = new SubsetSupersetEObjectContainmentEList.Resolving<CollaborationUse>(
 				CollaborationUse.class, this,
 				UMLPackage.CLASSIFIER__COLLABORATION_USE, null,
 				COLLABORATION_USE_ESUBSETS);
@@ -1201,9 +1219,7 @@
 	 */
 	public CollaborationUse getCollaborationUse(String name,
 			boolean ignoreCase, boolean createOnDemand) {
-		collaborationUseLoop : for (Iterator i = getCollaborationUses()
-			.iterator(); i.hasNext();) {
-			CollaborationUse collaborationUse = (CollaborationUse) i.next();
+		collaborationUseLoop : for (CollaborationUse collaborationUse : getCollaborationUses()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(collaborationUse.getName())
 				: name.equals(collaborationUse.getName())))
@@ -1248,9 +1264,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralizations() {
+	public EList<Generalization> getGeneralizations() {
 		if (generalizations == null) {
-			generalizations = new EObjectContainmentWithInverseEList.Resolving(
+			generalizations = new EObjectContainmentWithInverseEList.Resolving<Generalization>(
 				Generalization.class, this,
 				UMLPackage.CLASSIFIER__GENERALIZATION,
 				UMLPackage.GENERALIZATION__SPECIFIC);
@@ -1263,9 +1279,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPowertypeExtents() {
+	public EList<GeneralizationSet> getPowertypeExtents() {
 		if (powertypeExtents == null) {
-			powertypeExtents = new EObjectWithInverseResolvingEList(
+			powertypeExtents = new EObjectWithInverseResolvingEList<GeneralizationSet>(
 				GeneralizationSet.class, this,
 				UMLPackage.CLASSIFIER__POWERTYPE_EXTENT,
 				UMLPackage.GENERALIZATION_SET__POWERTYPE);
@@ -1288,9 +1304,7 @@
 	 * @generated
 	 */
 	public GeneralizationSet getPowertypeExtent(String name, boolean ignoreCase) {
-		powertypeExtentLoop : for (Iterator i = getPowertypeExtents()
-			.iterator(); i.hasNext();) {
-			GeneralizationSet powertypeExtent = (GeneralizationSet) i.next();
+		powertypeExtentLoop : for (GeneralizationSet powertypeExtent : getPowertypeExtents()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(powertypeExtent.getName())
 				: name.equals(powertypeExtent.getName())))
@@ -1305,11 +1319,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInheritedMembers() {
+	public EList<NamedElement> getInheritedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> result = (EList<NamedElement>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER__INHERITED_MEMBER);
 			if (result == null) {
 				cache.put(this,
@@ -1337,9 +1352,7 @@
 	 */
 	public NamedElement getInheritedMember(String name, boolean ignoreCase,
 			EClass eClass) {
-		inheritedMemberLoop : for (Iterator i = getInheritedMembers()
-			.iterator(); i.hasNext();) {
-			NamedElement inheritedMember = (NamedElement) i.next();
+		inheritedMemberLoop : for (NamedElement inheritedMember : getInheritedMembers()) {
 			if (eClass != null && !eClass.isInstance(inheritedMember))
 				continue inheritedMemberLoop;
 			if (name != null && !(ignoreCase
@@ -1356,10 +1369,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedClassifiers() {
+	public EList<Classifier> getRedefinedClassifiers() {
 		if (redefinedClassifiers == null) {
-			redefinedClassifiers = new EObjectResolvingEList(Classifier.class,
-				this, UMLPackage.CLASSIFIER__REDEFINED_CLASSIFIER);
+			redefinedClassifiers = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
+				UMLPackage.CLASSIFIER__REDEFINED_CLASSIFIER);
 		}
 		return redefinedClassifiers;
 	}
@@ -1380,9 +1394,7 @@
 	 */
 	public Classifier getRedefinedClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinedClassifierLoop : for (Iterator i = getRedefinedClassifiers()
-			.iterator(); i.hasNext();) {
-			Classifier redefinedClassifier = (Classifier) i.next();
+		redefinedClassifierLoop : for (Classifier redefinedClassifier : getRedefinedClassifiers()) {
 			if (eClass != null && !eClass.isInstance(redefinedClassifier))
 				continue redefinedClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -1399,11 +1411,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGenerals() {
+	public EList<Classifier> getGenerals() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER__GENERAL);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER__GENERAL,
@@ -1429,8 +1442,7 @@
 	 * @generated
 	 */
 	public Classifier getGeneral(String name, boolean ignoreCase, EClass eClass) {
-		generalLoop : for (Iterator i = getGenerals().iterator(); i.hasNext();) {
-			Classifier general = (Classifier) i.next();
+		generalLoop : for (Classifier general : getGenerals()) {
 			if (eClass != null && !eClass.isInstance(general))
 				continue generalLoop;
 			if (name != null && !(ignoreCase
@@ -1447,9 +1459,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedUseCases() {
+	public EList<UseCase> getOwnedUseCases() {
 		if (ownedUseCases == null) {
-			ownedUseCases = new EObjectContainmentEList.Resolving(
+			ownedUseCases = new EObjectContainmentEList.Resolving<UseCase>(
 				UseCase.class, this, UMLPackage.CLASSIFIER__OWNED_USE_CASE);
 		}
 		return ownedUseCases;
@@ -1484,9 +1496,7 @@
 	 */
 	public UseCase getOwnedUseCase(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedUseCaseLoop : for (Iterator i = getOwnedUseCases().iterator(); i
-			.hasNext();) {
-			UseCase ownedUseCase = (UseCase) i.next();
+		ownedUseCaseLoop : for (UseCase ownedUseCase : getOwnedUseCases()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedUseCase.getName())
 				: name.equals(ownedUseCase.getName())))
@@ -1503,9 +1513,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getUseCases() {
+	public EList<UseCase> getUseCases() {
 		if (useCases == null) {
-			useCases = new EObjectWithInverseResolvingEList.ManyInverse(
+			useCases = new EObjectWithInverseResolvingEList.ManyInverse<UseCase>(
 				UseCase.class, this, UMLPackage.CLASSIFIER__USE_CASE,
 				UMLPackage.USE_CASE__SUBJECT);
 		}
@@ -1527,8 +1537,7 @@
 	 * @generated
 	 */
 	public UseCase getUseCase(String name, boolean ignoreCase) {
-		useCaseLoop : for (Iterator i = getUseCases().iterator(); i.hasNext();) {
-			UseCase useCase = (UseCase) i.next();
+		useCaseLoop : for (UseCase useCase : getUseCases()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(useCase.getName())
 				: name.equals(useCase.getName())))
@@ -1543,9 +1552,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubstitutions() {
+	public EList<Substitution> getSubstitutions() {
 		if (substitutions == null) {
-			substitutions = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			substitutions = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Substitution>(
 				Substitution.class, this, UMLPackage.CLASSIFIER__SUBSTITUTION,
 				SUBSTITUTION_ESUPERSETS, null,
 				UMLPackage.SUBSTITUTION__SUBSTITUTING_CLASSIFIER);
@@ -1584,9 +1593,7 @@
 	 */
 	public Substitution getSubstitution(String name, Classifier contract,
 			boolean ignoreCase, boolean createOnDemand) {
-		substitutionLoop : for (Iterator i = getSubstitutions().iterator(); i
-			.hasNext();) {
-			Substitution substitution = (Substitution) i.next();
+		substitutionLoop : for (Substitution substitution : getSubstitutions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(substitution.getName())
 				: name.equals(substitution.getName())))
@@ -1646,7 +1653,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newRepresentation != null) {
-				EList collaborationUses = getCollaborationUses();
+				EList<CollaborationUse> collaborationUses = getCollaborationUses();
 				if (!collaborationUses.contains(newRepresentation)) {
 					collaborationUses.add(newRepresentation);
 				}
@@ -1673,7 +1680,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -1684,7 +1691,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -1746,11 +1753,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAssociations() {
+	public EList<Association> getAssociations() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.TYPE
-				.getEOperations().get(1));
+			@SuppressWarnings("unchecked")
+			EList<Association> result = (EList<Association>) cache.get(this,
+				UMLPackage.Literals.TYPE.getEOperations().get(1));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TYPE.getEOperations()
 					.get(1), result = TypeOperations.getAssociations(this));
@@ -1765,12 +1773,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -1797,7 +1806,7 @@
 	 * @generated
 	 */
 	public boolean validateNoCyclesInGeneralization(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ClassifierOperations.validateNoCyclesInGeneralization(this,
 			diagnostics, context);
 	}
@@ -1808,7 +1817,7 @@
 	 * @generated
 	 */
 	public boolean validateSpecializeType(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ClassifierOperations.validateSpecializeType(this, diagnostics,
 			context);
 	}
@@ -1819,7 +1828,7 @@
 	 * @generated
 	 */
 	public boolean validateGeneralizationHierarchies(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ClassifierOperations.validateGeneralizationHierarchies(this,
 			diagnostics, context);
 	}
@@ -1830,7 +1839,7 @@
 	 * @generated
 	 */
 	public boolean validateMapsToGeneralizationSet(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ClassifierOperations.validateMapsToGeneralizationSet(this,
 			diagnostics, context);
 	}
@@ -1864,9 +1873,7 @@
 	 */
 	public Generalization getGeneralization(Classifier general,
 			boolean createOnDemand) {
-		generalizationLoop : for (Iterator i = getGeneralizations().iterator(); i
-			.hasNext();) {
-			Generalization generalization = (Generalization) i.next();
+		generalizationLoop : for (Generalization generalization : getGeneralizations()) {
 			if (general != null && !general.equals(generalization.getGeneral()))
 				continue generalizationLoop;
 			return generalization;
@@ -1881,10 +1888,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllAttributes() {
+	public EList<Property> getAllAttributes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Property> result = (EList<Property>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(4));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -1901,10 +1909,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOperations() {
+	public EList<Operation> getOperations() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Operation> result = (EList<Operation>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(5));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -1920,10 +1929,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllOperations() {
+	public EList<Operation> getAllOperations() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Operation> result = (EList<Operation>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(6));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -1940,8 +1950,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOperation(String name, EList parameterNames,
-			EList parameterTypes) {
+	public Operation getOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes) {
 		return ClassifierOperations.getOperation(this, name, parameterNames,
 			parameterTypes);
 	}
@@ -1951,8 +1961,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOperation(String name, EList parameterNames,
-			EList parameterTypes, boolean ignoreCase) {
+	public Operation getOperation(String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, boolean ignoreCase) {
 		return ClassifierOperations.getOperation(this, name, parameterNames,
 			parameterTypes, ignoreCase);
 	}
@@ -1962,10 +1972,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getUsedInterfaces() {
+	public EList<Interface> getUsedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(9));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -1982,10 +1993,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllUsedInterfaces() {
+	public EList<Interface> getAllUsedInterfaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(10));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -2011,10 +2023,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allFeatures() {
+	public EList<Feature> allFeatures() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Feature> result = (EList<Feature>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(13));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -2030,10 +2043,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parents() {
+	public EList<Classifier> parents() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(14));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -2049,7 +2063,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList inheritableMembers(Classifier c) {
+	public EList<NamedElement> inheritableMembers(Classifier c) {
 		return ClassifierOperations.inheritableMembers(this, c);
 	}
 
@@ -2076,7 +2090,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList inherit(EList inhs) {
+	public EList<NamedElement> inherit(EList<NamedElement> inhs) {
 		return ClassifierOperations.inherit(this, inhs);
 	}
 
@@ -2085,10 +2099,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allParents() {
+	public EList<Classifier> allParents() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.CLASSIFIER.getEOperations().get(20));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.CLASSIFIER.getEOperations()
@@ -2104,24 +2119,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -2136,8 +2153,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -2147,16 +2164,17 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -2166,55 +2184,56 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.CLASSIFIER__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -2225,6 +2244,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -2241,6 +2261,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
@@ -2346,15 +2367,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__NAME :
 				setName((String) newValue);
@@ -2364,22 +2389,26 @@
 				return;
 			case UMLPackage.CLASSIFIER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -2395,7 +2424,8 @@
 				return;
 			case UMLPackage.CLASSIFIER__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -2405,38 +2435,45 @@
 				return;
 			case UMLPackage.CLASSIFIER__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -2447,6 +2484,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
@@ -2533,6 +2571,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER__EANNOTATIONS :
@@ -2623,7 +2662,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.CLASSIFIER__IS_LEAF :
@@ -2678,7 +2718,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.REDEFINABLE_ELEMENT__IS_LEAF :
@@ -2733,6 +2774,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -2799,6 +2841,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.CLASSIFIER__OWNING_TEMPLATE_PARAMETER);
@@ -2823,6 +2866,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.CLASSIFIER__PACKAGE);
 	}
@@ -2852,6 +2896,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.CLASSIFIER__TEMPLATE_BINDING)
@@ -2940,6 +2985,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetMembers() {
 		return super.isSetMembers() || isSetFeatures()
 			|| eIsSet(UMLPackage.CLASSIFIER__INHERITED_MEMBER);
@@ -2950,6 +2996,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.CLASSIFIER__OWNED_USE_CASE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierTemplateParameterImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierTemplateParameterImpl.java
index 59aacea..c02acc1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierTemplateParameterImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClassifierTemplateParameterImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassifierTemplateParameterImpl.java,v 1.17 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ClassifierTemplateParameterImpl.java,v 1.18 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,6 +29,7 @@
 
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.ClassifierTemplateParameter;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -109,6 +111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLASSIFIER_TEMPLATE_PARAMETER;
 	}
@@ -288,6 +291,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetParameteredElement(
 			ParameterableElement newParameteredElement, NotificationChain msgs) {
 
@@ -355,7 +359,7 @@
 	 * @generated
 	 */
 	public boolean validateHasConstrainingClassifier(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ClassifierTemplateParameterOperations
 			.validateHasConstrainingClassifier(this, diagnostics, context);
 	}
@@ -365,6 +369,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -418,15 +423,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__SIGNATURE :
 				setSignature((TemplateSignature) newValue);
@@ -461,6 +470,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -502,6 +512,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -537,6 +548,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClauseImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClauseImpl.java
index 710d21c..7e96e62 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClauseImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClauseImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClauseImpl.java,v 1.12 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ClauseImpl.java,v 1.13 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,6 +33,7 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Clause;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ExecutableNode;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Type;
@@ -70,7 +71,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList tests = null;
+	protected EList<ExecutableNode> tests = null;
 
 	/**
 	 * The cached value of the '{@link #getBodies() <em>Body</em>}' reference list.
@@ -80,7 +81,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodies = null;
+	protected EList<ExecutableNode> bodies = null;
 
 	/**
 	 * The cached value of the '{@link #getPredecessorClauses() <em>Predecessor Clause</em>}' reference list.
@@ -90,7 +91,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList predecessorClauses = null;
+	protected EList<Clause> predecessorClauses = null;
 
 	/**
 	 * The cached value of the '{@link #getSuccessorClauses() <em>Successor Clause</em>}' reference list.
@@ -100,7 +101,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList successorClauses = null;
+	protected EList<Clause> successorClauses = null;
 
 	/**
 	 * The cached value of the '{@link #getDecider() <em>Decider</em>}' reference.
@@ -120,7 +121,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodyOutputs = null;
+	protected EList<OutputPin> bodyOutputs = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -136,6 +137,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLAUSE;
 	}
@@ -145,10 +147,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTests() {
+	public EList<ExecutableNode> getTests() {
 		if (tests == null) {
-			tests = new EObjectResolvingEList(ExecutableNode.class, this,
-				UMLPackage.CLAUSE__TEST);
+			tests = new EObjectResolvingEList<ExecutableNode>(
+				ExecutableNode.class, this, UMLPackage.CLAUSE__TEST);
 		}
 		return tests;
 	}
@@ -168,8 +170,7 @@
 	 * @generated
 	 */
 	public ExecutableNode getTest(String name, boolean ignoreCase, EClass eClass) {
-		testLoop : for (Iterator i = getTests().iterator(); i.hasNext();) {
-			ExecutableNode test = (ExecutableNode) i.next();
+		testLoop : for (ExecutableNode test : getTests()) {
 			if (eClass != null && !eClass.isInstance(test))
 				continue testLoop;
 			if (name != null && !(ignoreCase
@@ -186,10 +187,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodies() {
+	public EList<ExecutableNode> getBodies() {
 		if (bodies == null) {
-			bodies = new EObjectResolvingEList(ExecutableNode.class, this,
-				UMLPackage.CLAUSE__BODY);
+			bodies = new EObjectResolvingEList<ExecutableNode>(
+				ExecutableNode.class, this, UMLPackage.CLAUSE__BODY);
 		}
 		return bodies;
 	}
@@ -209,8 +210,7 @@
 	 * @generated
 	 */
 	public ExecutableNode getBody(String name, boolean ignoreCase, EClass eClass) {
-		bodyLoop : for (Iterator i = getBodies().iterator(); i.hasNext();) {
-			ExecutableNode body = (ExecutableNode) i.next();
+		bodyLoop : for (ExecutableNode body : getBodies()) {
 			if (eClass != null && !eClass.isInstance(body))
 				continue bodyLoop;
 			if (name != null && !(ignoreCase
@@ -227,9 +227,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPredecessorClauses() {
+	public EList<Clause> getPredecessorClauses() {
 		if (predecessorClauses == null) {
-			predecessorClauses = new EObjectWithInverseResolvingEList.ManyInverse(
+			predecessorClauses = new EObjectWithInverseResolvingEList.ManyInverse<Clause>(
 				Clause.class, this, UMLPackage.CLAUSE__PREDECESSOR_CLAUSE,
 				UMLPackage.CLAUSE__SUCCESSOR_CLAUSE);
 		}
@@ -241,9 +241,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuccessorClauses() {
+	public EList<Clause> getSuccessorClauses() {
 		if (successorClauses == null) {
-			successorClauses = new EObjectWithInverseResolvingEList.ManyInverse(
+			successorClauses = new EObjectWithInverseResolvingEList.ManyInverse<Clause>(
 				Clause.class, this, UMLPackage.CLAUSE__SUCCESSOR_CLAUSE,
 				UMLPackage.CLAUSE__PREDECESSOR_CLAUSE);
 		}
@@ -297,10 +297,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodyOutputs() {
+	public EList<OutputPin> getBodyOutputs() {
 		if (bodyOutputs == null) {
-			bodyOutputs = new EObjectResolvingEList(OutputPin.class, this,
-				UMLPackage.CLAUSE__BODY_OUTPUT);
+			bodyOutputs = new EObjectResolvingEList<OutputPin>(OutputPin.class,
+				this, UMLPackage.CLAUSE__BODY_OUTPUT);
 		}
 		return bodyOutputs;
 	}
@@ -320,9 +320,7 @@
 	 * @generated
 	 */
 	public OutputPin getBodyOutput(String name, Type type, boolean ignoreCase) {
-		bodyOutputLoop : for (Iterator i = getBodyOutputs().iterator(); i
-			.hasNext();) {
-			OutputPin bodyOutput = (OutputPin) i.next();
+		bodyOutputLoop : for (OutputPin bodyOutput : getBodyOutputs()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(bodyOutput.getName())
 				: name.equals(bodyOutput.getName())))
@@ -340,7 +338,7 @@
 	 * @generated
 	 */
 	public boolean validateDeciderOutput(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ClauseOperations.validateDeciderOutput(this, diagnostics,
 			context);
 	}
@@ -351,7 +349,7 @@
 	 * @generated
 	 */
 	public boolean validateBodyOutputPins(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ClauseOperations.validateBodyOutputPins(this, diagnostics,
 			context);
 	}
@@ -361,18 +359,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLAUSE__PREDECESSOR_CLAUSE :
-				return ((InternalEList) getPredecessorClauses()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPredecessorClauses())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CLAUSE__SUCCESSOR_CLAUSE :
-				return ((InternalEList) getSuccessorClauses()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSuccessorClauses())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -382,20 +382,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLAUSE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLAUSE__PREDECESSOR_CLAUSE :
-				return ((InternalEList) getPredecessorClauses()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getPredecessorClauses())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLAUSE__SUCCESSOR_CLAUSE :
-				return ((InternalEList) getSuccessorClauses()).basicRemove(
+				return ((InternalEList<?>) getSuccessorClauses()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -406,6 +407,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
@@ -441,38 +443,47 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CLAUSE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CLAUSE__TEST :
 				getTests().clear();
-				getTests().addAll((Collection) newValue);
+				getTests().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 			case UMLPackage.CLAUSE__BODY :
 				getBodies().clear();
-				getBodies().addAll((Collection) newValue);
+				getBodies().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 			case UMLPackage.CLAUSE__PREDECESSOR_CLAUSE :
 				getPredecessorClauses().clear();
-				getPredecessorClauses().addAll((Collection) newValue);
+				getPredecessorClauses().addAll(
+					(Collection<? extends Clause>) newValue);
 				return;
 			case UMLPackage.CLAUSE__SUCCESSOR_CLAUSE :
 				getSuccessorClauses().clear();
-				getSuccessorClauses().addAll((Collection) newValue);
+				getSuccessorClauses().addAll(
+					(Collection<? extends Clause>) newValue);
 				return;
 			case UMLPackage.CLAUSE__DECIDER :
 				setDecider((OutputPin) newValue);
 				return;
 			case UMLPackage.CLAUSE__BODY_OUTPUT :
 				getBodyOutputs().clear();
-				getBodyOutputs().addAll((Collection) newValue);
+				getBodyOutputs().addAll(
+					(Collection<? extends OutputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -483,6 +494,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
@@ -518,6 +530,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLAUSE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearAssociationActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearAssociationActionImpl.java
index 33cf6d8..42223f8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearAssociationActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearAssociationActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClearAssociationActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ClearAssociationActionImpl.java,v 1.23 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,9 +36,17 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.ClearAssociationAction;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -99,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLEAR_ASSOCIATION_ACTION;
 	}
@@ -108,22 +118,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.CLEAR_ASSOCIATION_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.CLEAR_ASSOCIATION_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -291,7 +303,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ClearAssociationActionOperations.validateSameType(this,
 			diagnostics, context);
 	}
@@ -301,7 +314,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ClearAssociationActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -311,18 +325,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__IN_STRUCTURED_NODE :
@@ -330,26 +345,26 @@
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 		}
@@ -361,6 +376,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__EANNOTATIONS :
@@ -448,15 +464,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__NAME :
 				setName((String) newValue);
@@ -466,7 +486,8 @@
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -482,35 +503,44 @@
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__OBJECT :
 				setObject((InputPin) newValue);
@@ -527,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__EANNOTATIONS :
@@ -595,6 +626,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION__EANNOTATIONS :
@@ -680,6 +712,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.CLEAR_ASSOCIATION_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearStructuralFeatureActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearStructuralFeatureActionImpl.java
index 49cce44..ff14ab4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearStructuralFeatureActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearStructuralFeatureActionImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClearStructuralFeatureActionImpl.java,v 1.2 2005/11/23 20:01:13 khussey Exp $
+ * $Id: ClearStructuralFeatureActionImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLEAR_STRUCTURAL_FEATURE_ACTION;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearVariableActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearVariableActionImpl.java
index b99dec8..f4b3b70 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearVariableActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ClearVariableActionImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClearVariableActionImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: ClearVariableActionImpl.java,v 1.3 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CLEAR_VARIABLE_ACTION;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationImpl.java
index 55c20f6..2d03c19 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CollaborationImpl.java,v 1.26 2006/11/14 18:02:19 khussey Exp $
+ * $Id: CollaborationImpl.java,v 1.27 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,19 +35,32 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Collaboration;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
 import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredClassifier;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.StructuredClassifierOperations;
@@ -85,7 +98,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedConnectors() <em>Owned Connector</em>}' containment reference list.
@@ -95,7 +108,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedConnectors = null;
+	protected EList<Connector> ownedConnectors = null;
 
 	/**
 	 * The cached value of the '{@link #getCollaborationRoles() <em>Collaboration Role</em>}' reference list.
@@ -105,7 +118,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList collaborationRoles = null;
+	protected EList<ConnectableElement> collaborationRoles = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -121,6 +134,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COLLABORATION;
 	}
@@ -130,24 +144,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRoles() {
+	public EList<ConnectableElement> getRoles() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList roles = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE);
+			@SuppressWarnings("unchecked")
+			EList<ConnectableElement> roles = (EList<ConnectableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE);
 			if (roles == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE,
-					roles = new DerivedUnionEObjectEList(
+					roles = new DerivedUnionEObjectEList<ConnectableElement>(
 						ConnectableElement.class, this,
 						UMLPackage.COLLABORATION__ROLE, ROLE_ESUBSETS));
 			}
 			return roles;
 		}
-		return new DerivedUnionEObjectEList(ConnectableElement.class, this,
-			UMLPackage.COLLABORATION__ROLE, ROLE_ESUBSETS);
+		return new DerivedUnionEObjectEList<ConnectableElement>(
+			ConnectableElement.class, this, UMLPackage.COLLABORATION__ROLE,
+			ROLE_ESUBSETS);
 	}
 
 	/**
@@ -166,8 +183,7 @@
 	 */
 	public ConnectableElement getRole(String name, Type type,
 			boolean ignoreCase, EClass eClass) {
-		roleLoop : for (Iterator i = getRoles().iterator(); i.hasNext();) {
-			ConnectableElement role = (ConnectableElement) i.next();
+		roleLoop : for (ConnectableElement role : getRoles()) {
 			if (eClass != null && !eClass.isInstance(role))
 				continue roleLoop;
 			if (name != null && !(ignoreCase
@@ -186,25 +202,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.COLLABORATION__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.COLLABORATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.COLLABORATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -212,23 +229,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.COLLABORATION__ATTRIBUTE,
-						ATTRIBUTE_ESUBSETS));
+				cache
+					.put(eResource, this,
+						UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
+						attributes = new DerivedUnionEObjectEList<Property>(
+							Property.class, this,
+							UMLPackage.COLLABORATION__ATTRIBUTE,
+							ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.COLLABORATION__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -237,25 +257,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
-				cache
-					.put(eResource, this,
-						UMLPackage.Literals.NAMESPACE__MEMBER,
-						members = new DerivedUnionEObjectEList(
-							NamedElement.class, this,
-							UMLPackage.COLLABORATION__MEMBER, MEMBER_ESUBSETS));
+				cache.put(eResource, this,
+					UMLPackage.Literals.NAMESPACE__MEMBER,
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.COLLABORATION__MEMBER, MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.COLLABORATION__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.COLLABORATION__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -263,23 +283,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.COLLABORATION__FEATURE,
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.COLLABORATION__FEATURE,
 						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.COLLABORATION__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -288,9 +309,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this, UMLPackage.COLLABORATION__OWNED_ATTRIBUTE);
 		}
 		return ownedAttributes;
@@ -336,9 +357,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -365,12 +384,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getParts() {
+	public EList<Property> getParts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList parts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.STRUCTURED_CLASSIFIER__PART);
+			@SuppressWarnings("unchecked")
+			EList<Property> parts = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.STRUCTURED_CLASSIFIER__PART);
 			if (parts == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.STRUCTURED_CLASSIFIER__PART,
@@ -400,8 +420,7 @@
 	 */
 	public Property getPart(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		partLoop : for (Iterator i = getParts().iterator(); i.hasNext();) {
-			Property part = (Property) i.next();
+		partLoop : for (Property part : getParts()) {
 			if (eClass != null && !eClass.isInstance(part))
 				continue partLoop;
 			if (name != null && !(ignoreCase
@@ -420,9 +439,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedConnectors() {
+	public EList<Connector> getOwnedConnectors() {
 		if (ownedConnectors == null) {
-			ownedConnectors = new EObjectContainmentEList.Resolving(
+			ownedConnectors = new EObjectContainmentEList.Resolving<Connector>(
 				Connector.class, this,
 				UMLPackage.COLLABORATION__OWNED_CONNECTOR);
 		}
@@ -458,9 +477,7 @@
 	 */
 	public Connector getOwnedConnector(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedConnectorLoop : for (Iterator i = getOwnedConnectors().iterator(); i
-			.hasNext();) {
-			Connector ownedConnector = (Connector) i.next();
+		ownedConnectorLoop : for (Connector ownedConnector : getOwnedConnectors()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedConnector.getName())
 				: name.equals(ownedConnector.getName())))
@@ -477,9 +494,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCollaborationRoles() {
+	public EList<ConnectableElement> getCollaborationRoles() {
 		if (collaborationRoles == null) {
-			collaborationRoles = new EObjectResolvingEList(
+			collaborationRoles = new EObjectResolvingEList<ConnectableElement>(
 				ConnectableElement.class, this,
 				UMLPackage.COLLABORATION__COLLABORATION_ROLE);
 		}
@@ -502,10 +519,7 @@
 	 */
 	public ConnectableElement getCollaborationRole(String name, Type type,
 			boolean ignoreCase, EClass eClass) {
-		collaborationRoleLoop : for (Iterator i = getCollaborationRoles()
-			.iterator(); i.hasNext();) {
-			ConnectableElement collaborationRole = (ConnectableElement) i
-				.next();
+		collaborationRoleLoop : for (ConnectableElement collaborationRole : getCollaborationRoles()) {
 			if (eClass != null && !eClass.isInstance(collaborationRole))
 				continue collaborationRoleLoop;
 			if (name != null && !(ignoreCase
@@ -525,7 +539,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicities(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StructuredClassifierOperations.validateMultiplicities(this,
 			diagnostics, context);
 	}
@@ -546,70 +560,71 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COLLABORATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.COLLABORATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.COLLABORATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.COLLABORATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.COLLABORATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.COLLABORATION__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -620,6 +635,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION__EANNOTATIONS :
@@ -745,15 +761,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__NAME :
 				setName((String) newValue);
@@ -763,22 +783,26 @@
 				return;
 			case UMLPackage.COLLABORATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.COLLABORATION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -794,7 +818,8 @@
 				return;
 			case UMLPackage.COLLABORATION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -804,65 +829,78 @@
 				return;
 			case UMLPackage.COLLABORATION__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.COLLABORATION__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.COLLABORATION__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.COLLABORATION__COLLABORATION_ROLE :
 				getCollaborationRoles().clear();
-				getCollaborationRoles().addAll((Collection) newValue);
+				getCollaborationRoles().addAll(
+					(Collection<? extends ConnectableElement>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -873,6 +911,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION__EANNOTATIONS :
@@ -980,6 +1019,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION__EANNOTATIONS :
@@ -1090,7 +1130,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == StructuredClassifier.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.COLLABORATION__OWNED_ATTRIBUTE :
@@ -1113,7 +1154,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == StructuredClassifier.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE :
@@ -1174,6 +1216,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.COLLABORATION__OWNED_ATTRIBUTE)
@@ -1195,6 +1238,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.COLLABORATION__OWNED_ATTRIBUTE);
@@ -1220,6 +1264,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetMembers() {
 		return super.isSetMembers() || isSetRoles();
 	}
@@ -1241,6 +1286,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.COLLABORATION__OWNED_CONNECTOR);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationUseImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationUseImpl.java
index 125bd9e..b42a76d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationUseImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CollaborationUseImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CollaborationUseImpl.java,v 1.18 2006/11/14 18:02:17 khussey Exp $
+ * $Id: CollaborationUseImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -38,6 +38,7 @@
 
 import org.eclipse.uml2.uml.Collaboration;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.StringExpression;
@@ -83,7 +84,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList roleBindings = null;
+	protected EList<Dependency> roleBindings = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -99,6 +100,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COLLABORATION_USE;
 	}
@@ -108,23 +110,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.COLLABORATION_USE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.COLLABORATION_USE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.COLLABORATION_USE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -175,9 +179,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRoleBindings() {
+	public EList<Dependency> getRoleBindings() {
 		if (roleBindings == null) {
-			roleBindings = new EObjectContainmentEList.Resolving(
+			roleBindings = new EObjectContainmentEList.Resolving<Dependency>(
 				Dependency.class, this,
 				UMLPackage.COLLABORATION_USE__ROLE_BINDING);
 		}
@@ -222,9 +226,7 @@
 	 */
 	public Dependency getRoleBinding(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		roleBindingLoop : for (Iterator i = getRoleBindings().iterator(); i
-			.hasNext();) {
-			Dependency roleBinding = (Dependency) i.next();
+		roleBindingLoop : for (Dependency roleBinding : getRoleBindings()) {
 			if (eClass != null && !eClass.isInstance(roleBinding))
 				continue roleBindingLoop;
 			if (name != null && !(ignoreCase
@@ -244,7 +246,7 @@
 	 * @generated
 	 */
 	public boolean validateClientElements(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CollaborationUseOperations.validateClientElements(this,
 			diagnostics, context);
 	}
@@ -254,7 +256,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEveryRole(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEveryRole(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CollaborationUseOperations.validateEveryRole(this, diagnostics,
 			context);
 	}
@@ -264,7 +267,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateConnectors(DiagnosticChain diagnostics, Map context) {
+	public boolean validateConnectors(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CollaborationUseOperations.validateConnectors(this, diagnostics,
 			context);
 	}
@@ -274,22 +278,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION_USE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION_USE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COLLABORATION_USE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COLLABORATION_USE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.COLLABORATION_USE__ROLE_BINDING :
-				return ((InternalEList) getRoleBindings()).basicRemove(
+				return ((InternalEList<?>) getRoleBindings()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -300,6 +305,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION_USE__EANNOTATIONS :
@@ -343,15 +349,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION_USE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COLLABORATION_USE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COLLABORATION_USE__NAME :
 				setName((String) newValue);
@@ -361,7 +371,8 @@
 				return;
 			case UMLPackage.COLLABORATION_USE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.COLLABORATION_USE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -371,7 +382,8 @@
 				return;
 			case UMLPackage.COLLABORATION_USE__ROLE_BINDING :
 				getRoleBindings().clear();
-				getRoleBindings().addAll((Collection) newValue);
+				getRoleBindings().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -382,6 +394,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION_USE__EANNOTATIONS :
@@ -417,6 +430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COLLABORATION_USE__EANNOTATIONS :
@@ -468,6 +482,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.COLLABORATION_USE__ROLE_BINDING);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CombinedFragmentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CombinedFragmentImpl.java
index 3624d0b..bdf2ea7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CombinedFragmentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CombinedFragmentImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CombinedFragmentImpl.java,v 1.19 2006/11/14 18:02:18 khussey Exp $
+ * $Id: CombinedFragmentImpl.java,v 1.20 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,11 +37,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.CombinedFragment;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Gate;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
 import org.eclipse.uml2.uml.InteractionOperatorKind;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -96,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList operands = null;
+	protected EList<InteractionOperand> operands = null;
 
 	/**
 	 * The cached value of the '{@link #getCfragmentGates() <em>Cfragment Gate</em>}' containment reference list.
@@ -106,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList cfragmentGates = null;
+	protected EList<Gate> cfragmentGates = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -122,6 +126,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COMBINED_FRAGMENT;
 	}
@@ -131,23 +136,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.COMBINED_FRAGMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.COMBINED_FRAGMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.COMBINED_FRAGMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -184,9 +191,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOperands() {
+	public EList<InteractionOperand> getOperands() {
 		if (operands == null) {
-			operands = new EObjectContainmentEList.Resolving(
+			operands = new EObjectContainmentEList.Resolving<InteractionOperand>(
 				InteractionOperand.class, this,
 				UMLPackage.COMBINED_FRAGMENT__OPERAND);
 		}
@@ -222,8 +229,7 @@
 	 */
 	public InteractionOperand getOperand(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		operandLoop : for (Iterator i = getOperands().iterator(); i.hasNext();) {
-			InteractionOperand operand = (InteractionOperand) i.next();
+		operandLoop : for (InteractionOperand operand : getOperands()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(operand.getName())
 				: name.equals(operand.getName())))
@@ -240,10 +246,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCfragmentGates() {
+	public EList<Gate> getCfragmentGates() {
 		if (cfragmentGates == null) {
-			cfragmentGates = new EObjectContainmentEList.Resolving(Gate.class,
-				this, UMLPackage.COMBINED_FRAGMENT__CFRAGMENT_GATE);
+			cfragmentGates = new EObjectContainmentEList.Resolving<Gate>(
+				Gate.class, this, UMLPackage.COMBINED_FRAGMENT__CFRAGMENT_GATE);
 		}
 		return cfragmentGates;
 	}
@@ -277,9 +283,7 @@
 	 */
 	public Gate getCfragmentGate(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		cfragmentGateLoop : for (Iterator i = getCfragmentGates().iterator(); i
-			.hasNext();) {
-			Gate cfragmentGate = (Gate) i.next();
+		cfragmentGateLoop : for (Gate cfragmentGate : getCfragmentGates()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(cfragmentGate.getName())
 				: name.equals(cfragmentGate.getName())))
@@ -297,7 +301,7 @@
 	 * @generated
 	 */
 	public boolean validateOptLoopBreakNeg(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CombinedFragmentOperations.validateOptLoopBreakNeg(this,
 			diagnostics, context);
 	}
@@ -308,7 +312,7 @@
 	 * @generated
 	 */
 	public boolean validateMinintAndMaxint(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CombinedFragmentOperations.validateMinintAndMaxint(this,
 			diagnostics, context);
 	}
@@ -318,7 +322,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateBreak(DiagnosticChain diagnostics, Map context) {
+	public boolean validateBreak(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CombinedFragmentOperations.validateBreak(this, diagnostics,
 			context);
 	}
@@ -329,7 +334,7 @@
 	 * @generated
 	 */
 	public boolean validateConsiderAndIgnore(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CombinedFragmentOperations.validateConsiderAndIgnore(this,
 			diagnostics, context);
 	}
@@ -339,35 +344,36 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COMBINED_FRAGMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.COMBINED_FRAGMENT__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__ENCLOSING_OPERAND :
 				return basicSetEnclosingOperand(null, msgs);
 			case UMLPackage.COMBINED_FRAGMENT__OPERAND :
-				return ((InternalEList) getOperands()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getOperands()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.COMBINED_FRAGMENT__CFRAGMENT_GATE :
-				return ((InternalEList) getCfragmentGates()).basicRemove(
+				return ((InternalEList<?>) getCfragmentGates()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -378,6 +384,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COMBINED_FRAGMENT__EANNOTATIONS :
@@ -433,15 +440,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COMBINED_FRAGMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__NAME :
 				setName((String) newValue);
@@ -451,18 +462,20 @@
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -475,11 +488,13 @@
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__OPERAND :
 				getOperands().clear();
-				getOperands().addAll((Collection) newValue);
+				getOperands().addAll(
+					(Collection<? extends InteractionOperand>) newValue);
 				return;
 			case UMLPackage.COMBINED_FRAGMENT__CFRAGMENT_GATE :
 				getCfragmentGates().clear();
-				getCfragmentGates().addAll((Collection) newValue);
+				getCfragmentGates().addAll(
+					(Collection<? extends Gate>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -490,6 +505,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMBINED_FRAGMENT__EANNOTATIONS :
@@ -540,6 +556,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMBINED_FRAGMENT__EANNOTATIONS :
@@ -588,6 +605,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -619,6 +637,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.COMBINED_FRAGMENT__OPERAND)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommentImpl.java
index 95358e0..6eadfd7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommentImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CommentImpl.java,v 1.10 2006/11/14 18:02:20 khussey Exp $
+ * $Id: CommentImpl.java,v 1.11 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -17,6 +17,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
@@ -81,7 +82,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList annotatedElements = null;
+	protected EList<Element> annotatedElements = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -97,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COMMENT;
 	}
@@ -156,10 +158,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAnnotatedElements() {
+	public EList<Element> getAnnotatedElements() {
 		if (annotatedElements == null) {
-			annotatedElements = new EObjectResolvingEList(Element.class, this,
-				UMLPackage.COMMENT__ANNOTATED_ELEMENT);
+			annotatedElements = new EObjectResolvingEList<Element>(
+				Element.class, this, UMLPackage.COMMENT__ANNOTATED_ELEMENT);
 		}
 		return annotatedElements;
 	}
@@ -169,6 +171,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COMMENT__EANNOTATIONS :
@@ -194,22 +197,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COMMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COMMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COMMENT__BODY :
 				setBody((String) newValue);
 				return;
 			case UMLPackage.COMMENT__ANNOTATED_ELEMENT :
 				getAnnotatedElements().clear();
-				getAnnotatedElements().addAll((Collection) newValue);
+				getAnnotatedElements().addAll(
+					(Collection<? extends Element>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -220,6 +228,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMMENT__EANNOTATIONS :
@@ -243,6 +252,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMMENT__EANNOTATIONS :
@@ -267,6 +277,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommunicationPathImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommunicationPathImpl.java
index 9c3738e..5f8ae52 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommunicationPathImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CommunicationPathImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CommunicationPathImpl.java,v 1.2 2005/11/23 20:01:19 khussey Exp $
+ * $Id: CommunicationPathImpl.java,v 1.3 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COMMUNICATION_PATH;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationEnds(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CommunicationPathOperations.validateAssociationEnds(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentImpl.java
index 1e93441..a898522 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ComponentImpl.java,v 1.29 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ComponentImpl.java,v 1.30 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,18 +36,35 @@
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Component;
 import org.eclipse.uml2.uml.ComponentRealization;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.ComponentOperations;
@@ -103,7 +120,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList packagedElements = null;
+	protected EList<PackageableElement> packagedElements = null;
 
 	/**
 	 * The cached value of the '{@link #getRealizations() <em>Realization</em>}' containment reference list.
@@ -113,7 +130,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList realizations = null;
+	protected EList<ComponentRealization> realizations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -130,6 +147,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COMPONENT;
 	}
@@ -139,25 +157,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.COMPONENT__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.COMPONENT__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.COMPONENT__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -165,23 +184,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.COMPONENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.COMPONENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.COMPONENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -218,11 +239,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRequireds() {
+	public EList<Interface> getRequireds() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.COMPONENT__REQUIRED);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.COMPONENT__REQUIRED,
@@ -248,8 +270,7 @@
 	 * @generated
 	 */
 	public Interface getRequired(String name, boolean ignoreCase) {
-		requiredLoop : for (Iterator i = getRequireds().iterator(); i.hasNext();) {
-			Interface required = (Interface) i.next();
+		requiredLoop : for (Interface required : getRequireds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(required.getName())
 				: name.equals(required.getName())))
@@ -264,11 +285,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getProvideds() {
+	public EList<Interface> getProvideds() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.COMPONENT__PROVIDED);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.COMPONENT__PROVIDED,
@@ -294,8 +316,7 @@
 	 * @generated
 	 */
 	public Interface getProvided(String name, boolean ignoreCase) {
-		providedLoop : for (Iterator i = getProvideds().iterator(); i.hasNext();) {
-			Interface provided = (Interface) i.next();
+		providedLoop : for (Interface provided : getProvideds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(provided.getName())
 				: name.equals(provided.getName())))
@@ -310,9 +331,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackagedElements() {
+	public EList<PackageableElement> getPackagedElements() {
 		if (packagedElements == null) {
-			packagedElements = new EObjectContainmentEList.Resolving(
+			packagedElements = new EObjectContainmentEList.Resolving<PackageableElement>(
 				PackageableElement.class, this,
 				UMLPackage.COMPONENT__PACKAGED_ELEMENT);
 		}
@@ -348,9 +369,7 @@
 	 */
 	public PackageableElement getPackagedElement(String name,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		packagedElementLoop : for (Iterator i = getPackagedElements()
-			.iterator(); i.hasNext();) {
-			PackageableElement packagedElement = (PackageableElement) i.next();
+		packagedElementLoop : for (PackageableElement packagedElement : getPackagedElements()) {
 			if (eClass != null && !eClass.isInstance(packagedElement))
 				continue packagedElementLoop;
 			if (name != null && !(ignoreCase
@@ -369,9 +388,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRealizations() {
+	public EList<ComponentRealization> getRealizations() {
 		if (realizations == null) {
-			realizations = new EObjectContainmentWithInverseEList.Resolving(
+			realizations = new EObjectContainmentWithInverseEList.Resolving<ComponentRealization>(
 				ComponentRealization.class, this,
 				UMLPackage.COMPONENT__REALIZATION,
 				UMLPackage.COMPONENT_REALIZATION__ABSTRACTION);
@@ -408,9 +427,7 @@
 	 */
 	public ComponentRealization getRealization(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		realizationLoop : for (Iterator i = getRealizations().iterator(); i
-			.hasNext();) {
-			ComponentRealization realization = (ComponentRealization) i.next();
+		realizationLoop : for (ComponentRealization realization : getRealizations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(realization.getName())
 				: name.equals(realization.getName())))
@@ -464,7 +481,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList realizedInterfaces(Classifier classifier) {
+	public EList<Interface> realizedInterfaces(Classifier classifier) {
 		return ComponentOperations.realizedInterfaces(this, classifier);
 	}
 
@@ -473,7 +490,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList usedInterfaces(Classifier classifier) {
+	public EList<Interface> usedInterfaces(Classifier classifier) {
 		return ComponentOperations.usedInterfaces(this, classifier);
 	}
 
@@ -482,24 +499,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -514,8 +533,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.COMPONENT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -525,25 +544,26 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.COMPONENT__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT__REALIZATION :
-				return ((InternalEList) getRealizations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getRealizations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -553,85 +573,86 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COMPONENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.COMPONENT__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.COMPONENT__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.COMPONENT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.COMPONENT__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.COMPONENT__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__PACKAGED_ELEMENT :
-				return ((InternalEList) getPackagedElements()).basicRemove(
+				return ((InternalEList<?>) getPackagedElements()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT__REALIZATION :
-				return ((InternalEList) getRealizations()).basicRemove(
+				return ((InternalEList<?>) getRealizations()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -642,6 +663,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
@@ -793,15 +815,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COMPONENT__NAME :
 				setName((String) newValue);
@@ -811,22 +837,26 @@
 				return;
 			case UMLPackage.COMPONENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.COMPONENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.COMPONENT__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.COMPONENT__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.COMPONENT__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -842,7 +872,8 @@
 				return;
 			case UMLPackage.COMPONENT__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -852,95 +883,114 @@
 				return;
 			case UMLPackage.COMPONENT__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.COMPONENT__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.COMPONENT__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.COMPONENT__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.COMPONENT__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.COMPONENT__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.COMPONENT__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.COMPONENT__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.COMPONENT__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.COMPONENT__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.COMPONENT__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.COMPONENT__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.COMPONENT__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.COMPONENT__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.COMPONENT__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.COMPONENT__IS_INDIRECTLY_INSTANTIATED :
 				setIsIndirectlyInstantiated(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.COMPONENT__PACKAGED_ELEMENT :
 				getPackagedElements().clear();
-				getPackagedElements().addAll((Collection) newValue);
+				getPackagedElements().addAll(
+					(Collection<? extends PackageableElement>) newValue);
 				return;
 			case UMLPackage.COMPONENT__REALIZATION :
 				getRealizations().clear();
-				getRealizations().addAll((Collection) newValue);
+				getRealizations().addAll(
+					(Collection<? extends ComponentRealization>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -951,6 +1001,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
@@ -1082,6 +1133,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT__EANNOTATIONS :
@@ -1214,6 +1266,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1249,6 +1302,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.COMPONENT__PACKAGED_ELEMENT);
@@ -1281,6 +1335,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.COMPONENT__REALIZATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentRealizationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentRealizationImpl.java
index 6ddfd8e..5b8e85b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentRealizationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ComponentRealizationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ComponentRealizationImpl.java,v 1.15 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ComponentRealizationImpl.java,v 1.16 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,8 +33,10 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Component;
 import org.eclipse.uml2.uml.ComponentRealization;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.OpaqueExpression;
@@ -87,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.COMPONENT_REALIZATION;
 	}
@@ -108,9 +112,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClients() {
+	public EList<NamedElement> getClients() {
 		if (clients == null) {
-			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<NamedElement>(
 				NamedElement.class, this,
 				UMLPackage.COMPONENT_REALIZATION__CLIENT, null,
 				CLIENT_ESUBSETS, UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY);
@@ -133,9 +137,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new SubsetSupersetEObjectResolvingEList(
+			suppliers = new SubsetSupersetEObjectResolvingEList<NamedElement>(
 				NamedElement.class, this,
 				UMLPackage.COMPONENT_REALIZATION__SUPPLIER, null,
 				SUPPLIER_ESUBSETS);
@@ -188,7 +192,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newAbstraction != null) {
-				EList clients = getClients();
+				EList<NamedElement> clients = getClients();
 				if (!clients.contains(newAbstraction)) {
 					clients.add(newAbstraction);
 				}
@@ -270,7 +274,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newRealizingClassifier != null) {
-				EList suppliers = getSuppliers();
+				EList<NamedElement> suppliers = getSuppliers();
 				if (!suppliers.contains(newRealizingClassifier)) {
 					suppliers.add(newRealizingClassifier);
 				}
@@ -283,15 +287,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -306,7 +312,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT :
-				return ((InternalEList) getClients()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClients())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__ABSTRACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -320,18 +327,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__OWNING_TEMPLATE_PARAMETER :
@@ -339,7 +347,7 @@
 			case UMLPackage.COMPONENT_REALIZATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.COMPONENT_REALIZATION__MAPPING :
 				return basicSetMapping(null, msgs);
@@ -354,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -373,6 +382,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
@@ -440,15 +450,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__NAME :
 				setName((String) newValue);
@@ -458,7 +472,8 @@
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -471,11 +486,13 @@
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.COMPONENT_REALIZATION__MAPPING :
 				setMapping((OpaqueExpression) newValue);
@@ -495,6 +512,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
@@ -545,6 +563,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.COMPONENT_REALIZATION__EANNOTATIONS :
@@ -613,6 +632,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.COMPONENT_REALIZATION__ABSTRACTION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConditionalNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConditionalNodeImpl.java
index 3eba15e..3a92863 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConditionalNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConditionalNodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConditionalNodeImpl.java,v 1.21 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ConditionalNodeImpl.java,v 1.22 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,14 +37,25 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Clause;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConditionalNode;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.Variable;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.ConditionalNodeOperations;
@@ -119,7 +130,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList clauses = null;
+	protected EList<Clause> clauses = null;
 
 	/**
 	 * The cached value of the '{@link #getResults() <em>Result</em>}' containment reference list.
@@ -129,7 +140,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList results = null;
+	protected EList<OutputPin> results = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -145,6 +156,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONDITIONAL_NODE;
 	}
@@ -154,23 +166,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CONDITIONAL_NODE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.CONDITIONAL_NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CONDITIONAL_NODE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -179,22 +193,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.CONDITIONAL_NODE__OUTPUT,
-						OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.CONDITIONAL_NODE__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.CONDITIONAL_NODE__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -259,10 +274,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClauses() {
+	public EList<Clause> getClauses() {
 		if (clauses == null) {
-			clauses = new EObjectContainmentEList.Resolving(Clause.class, this,
-				UMLPackage.CONDITIONAL_NODE__CLAUSE);
+			clauses = new EObjectContainmentEList.Resolving<Clause>(
+				Clause.class, this, UMLPackage.CONDITIONAL_NODE__CLAUSE);
 		}
 		return clauses;
 	}
@@ -283,10 +298,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getResults() {
+	public EList<OutputPin> getResults() {
 		if (results == null) {
-			results = new EObjectContainmentEList.Resolving(OutputPin.class,
-				this, UMLPackage.CONDITIONAL_NODE__RESULT);
+			results = new EObjectContainmentEList.Resolving<OutputPin>(
+				OutputPin.class, this, UMLPackage.CONDITIONAL_NODE__RESULT);
 		}
 		return results;
 	}
@@ -322,8 +337,7 @@
 	 */
 	public OutputPin getResult(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		resultLoop : for (Iterator i = getResults().iterator(); i.hasNext();) {
-			OutputPin result = (OutputPin) i.next();
+		resultLoop : for (OutputPin result : getResults()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(result.getName())
 				: name.equals(result.getName())))
@@ -343,7 +357,7 @@
 	 * @generated
 	 */
 	public boolean validateResultNoIncoming(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConditionalNodeOperations.validateResultNoIncoming(this,
 			diagnostics, context);
 	}
@@ -353,18 +367,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONDITIONAL_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CONDITIONAL_NODE__IN_STRUCTURED_NODE :
@@ -372,49 +387,51 @@
 			case UMLPackage.CONDITIONAL_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CONDITIONAL_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CONDITIONAL_NODE__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.CONDITIONAL_NODE__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONDITIONAL_NODE__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.CONDITIONAL_NODE__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.CONDITIONAL_NODE__CLAUSE :
-				return ((InternalEList) getClauses()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClauses()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CONDITIONAL_NODE__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -425,6 +442,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONDITIONAL_NODE__EANNOTATIONS :
@@ -552,15 +570,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONDITIONAL_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__NAME :
 				setName((String) newValue);
@@ -570,7 +592,8 @@
 				return;
 			case UMLPackage.CONDITIONAL_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -586,65 +609,80 @@
 				return;
 			case UMLPackage.CONDITIONAL_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__MUST_ISOLATE :
 				setMustIsolate(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.CONDITIONAL_NODE__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__IS_DETERMINATE :
 				setIsDeterminate(((Boolean) newValue).booleanValue());
@@ -654,11 +692,11 @@
 				return;
 			case UMLPackage.CONDITIONAL_NODE__CLAUSE :
 				getClauses().clear();
-				getClauses().addAll((Collection) newValue);
+				getClauses().addAll((Collection<? extends Clause>) newValue);
 				return;
 			case UMLPackage.CONDITIONAL_NODE__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -669,6 +707,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONDITIONAL_NODE__EANNOTATIONS :
@@ -767,6 +806,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONDITIONAL_NODE__EANNOTATIONS :
@@ -876,6 +916,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -916,6 +957,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.CONDITIONAL_NODE__CLAUSE);
@@ -936,6 +978,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.CONDITIONAL_NODE__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementImpl.java
index 92ee435..99ae3d7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectableElementImpl.java,v 1.16 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ConnectableElementImpl.java,v 1.17 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -29,9 +30,11 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
 import org.eclipse.uml2.uml.ConnectableElementTemplateParameter;
 import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.StringExpression;
@@ -80,7 +83,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ends = null;
+	protected EList<ConnectorEnd> ends = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -96,6 +99,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONNECTABLE_ELEMENT;
 	}
@@ -306,10 +310,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEnds() {
+	public EList<ConnectorEnd> getEnds() {
 		if (ends == null) {
-			ends = new EObjectWithInverseResolvingEList(ConnectorEnd.class,
-				this, UMLPackage.CONNECTABLE_ELEMENT__END,
+			ends = new EObjectWithInverseResolvingEList<ConnectorEnd>(
+				ConnectorEnd.class, this, UMLPackage.CONNECTABLE_ELEMENT__END,
 				UMLPackage.CONNECTOR_END__ROLE);
 		}
 		return ends;
@@ -338,15 +342,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -361,7 +367,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__END :
-				return ((InternalEList) getEnds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEnds())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -371,18 +378,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -390,7 +398,8 @@
 			case UMLPackage.CONNECTABLE_ELEMENT__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.CONNECTABLE_ELEMENT__END :
-				return ((InternalEList) getEnds()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEnds()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -400,6 +409,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -416,6 +426,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
@@ -467,15 +478,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONNECTABLE_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONNECTABLE_ELEMENT__NAME :
 				setName((String) newValue);
@@ -485,7 +500,8 @@
 				return;
 			case UMLPackage.CONNECTABLE_ELEMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONNECTABLE_ELEMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -501,7 +517,7 @@
 				return;
 			case UMLPackage.CONNECTABLE_ELEMENT__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -512,6 +528,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
@@ -553,6 +570,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT__EANNOTATIONS :
@@ -595,7 +613,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.CONNECTABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -614,7 +633,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -647,6 +667,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.CONNECTABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementTemplateParameterImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementTemplateParameterImpl.java
index 62031d5..3622562 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementTemplateParameterImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectableElementTemplateParameterImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectableElementTemplateParameterImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ConnectableElementTemplateParameterImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -57,6 +57,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER;
 	}
@@ -115,6 +116,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetParameteredElement(
 			ParameterableElement newParameteredElement, NotificationChain msgs) {
 
@@ -183,6 +185,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -224,6 +227,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectionPointReferenceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectionPointReferenceImpl.java
index b28b285..4f86e26 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectionPointReferenceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectionPointReferenceImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectionPointReferenceImpl.java,v 1.16 2006/11/14 18:02:15 khussey Exp $
+ * $Id: ConnectionPointReferenceImpl.java,v 1.17 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,12 +32,15 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectionPointReference;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Pseudostate;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Transition;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -71,7 +74,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList entries = null;
+	protected EList<Pseudostate> entries = null;
 
 	/**
 	 * The cached value of the '{@link #getExits() <em>Exit</em>}' reference list.
@@ -81,7 +84,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList exits = null;
+	protected EList<Pseudostate> exits = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -97,6 +100,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONNECTION_POINT_REFERENCE;
 	}
@@ -118,10 +122,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEntries() {
+	public EList<Pseudostate> getEntries() {
 		if (entries == null) {
-			entries = new EObjectResolvingEList(Pseudostate.class, this,
-				UMLPackage.CONNECTION_POINT_REFERENCE__ENTRY);
+			entries = new EObjectResolvingEList<Pseudostate>(Pseudostate.class,
+				this, UMLPackage.CONNECTION_POINT_REFERENCE__ENTRY);
 		}
 		return entries;
 	}
@@ -141,8 +145,7 @@
 	 * @generated
 	 */
 	public Pseudostate getEntry(String name, boolean ignoreCase) {
-		entryLoop : for (Iterator i = getEntries().iterator(); i.hasNext();) {
-			Pseudostate entry = (Pseudostate) i.next();
+		entryLoop : for (Pseudostate entry : getEntries()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(entry.getName())
 				: name.equals(entry.getName())))
@@ -157,10 +160,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExits() {
+	public EList<Pseudostate> getExits() {
 		if (exits == null) {
-			exits = new EObjectResolvingEList(Pseudostate.class, this,
-				UMLPackage.CONNECTION_POINT_REFERENCE__EXIT);
+			exits = new EObjectResolvingEList<Pseudostate>(Pseudostate.class,
+				this, UMLPackage.CONNECTION_POINT_REFERENCE__EXIT);
 		}
 		return exits;
 	}
@@ -180,8 +183,7 @@
 	 * @generated
 	 */
 	public Pseudostate getExit(String name, boolean ignoreCase) {
-		exitLoop : for (Iterator i = getExits().iterator(); i.hasNext();) {
-			Pseudostate exit = (Pseudostate) i.next();
+		exitLoop : for (Pseudostate exit : getExits()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(exit.getName())
 				: name.equals(exit.getName())))
@@ -260,7 +262,7 @@
 	 * @generated
 	 */
 	public boolean validateEntryPseudostates(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectionPointReferenceOperations.validateEntryPseudostates(
 			this, diagnostics, context);
 	}
@@ -271,7 +273,7 @@
 	 * @generated
 	 */
 	public boolean validateExitPseudostates(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectionPointReferenceOperations.validateExitPseudostates(
 			this, diagnostics, context);
 	}
@@ -281,20 +283,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CONTAINER :
 				if (eInternalContainer() != null)
@@ -313,26 +317,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CONTAINER :
 				return basicSetContainer(null, msgs);
 			case UMLPackage.CONNECTION_POINT_REFERENCE__STATE :
@@ -346,6 +351,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -364,6 +370,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
@@ -417,15 +424,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__NAME :
 				setName((String) newValue);
@@ -435,29 +446,33 @@
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__CONTAINER :
 				setContainer((Region) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__ENTRY :
 				getEntries().clear();
-				getEntries().addAll((Collection) newValue);
+				getEntries().addAll(
+					(Collection<? extends Pseudostate>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EXIT :
 				getExits().clear();
-				getExits().addAll((Collection) newValue);
+				getExits().addAll((Collection<? extends Pseudostate>) newValue);
 				return;
 			case UMLPackage.CONNECTION_POINT_REFERENCE__STATE :
 				setState((State) newValue);
@@ -471,6 +486,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
@@ -518,6 +534,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTION_POINT_REFERENCE__EANNOTATIONS :
@@ -578,6 +595,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.CONNECTION_POINT_REFERENCE__STATE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorEndImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorEndImpl.java
index fbcd530..cb6643f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorEndImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorEndImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorEndImpl.java,v 1.14 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ConnectorEndImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -27,6 +28,7 @@
 
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
 import org.eclipse.uml2.uml.ConnectorEnd;
 import org.eclipse.uml2.uml.Property;
@@ -88,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONNECTOR_END;
 	}
@@ -238,7 +241,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConnectorEndOperations.validateMultiplicity(this, diagnostics,
 			context);
 	}
@@ -249,7 +253,7 @@
 	 * @generated
 	 */
 	public boolean validatePartWithPortEmpty(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectorEndOperations.validatePartWithPortEmpty(this,
 			diagnostics, context);
 	}
@@ -260,7 +264,7 @@
 	 * @generated
 	 */
 	public boolean validateRoleAndPartWithPort(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectorEndOperations.validateRoleAndPartWithPort(this,
 			diagnostics, context);
 	}
@@ -271,7 +275,7 @@
 	 * @generated
 	 */
 	public boolean validateSelfPartWithPort(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectorEndOperations.validateSelfPartWithPort(this,
 			diagnostics, context);
 	}
@@ -281,12 +285,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONNECTOR_END__ROLE :
 				if (role != null)
 					msgs = ((InternalEObject) role).eInverseRemove(this,
@@ -302,14 +308,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTOR_END__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTOR_END__UPPER_VALUE :
 				return basicSetUpperValue(null, msgs);
@@ -326,6 +333,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
@@ -379,15 +387,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONNECTOR_END__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONNECTOR_END__IS_ORDERED :
 				setIsOrdered(((Boolean) newValue).booleanValue());
@@ -422,6 +434,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
@@ -463,6 +476,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR_END__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorImpl.java
index 7f28463..9b2e933 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConnectorImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorImpl.java,v 1.15 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ConnectorImpl.java,v 1.16 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -39,9 +39,11 @@
 
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Connector;
 import org.eclipse.uml2.uml.ConnectorEnd;
 import org.eclipse.uml2.uml.ConnectorKind;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
@@ -91,7 +93,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedConnectors = null;
+	protected EList<Connector> redefinedConnectors = null;
 
 	/**
 	 * The cached value of the '{@link #getEnds() <em>End</em>}' containment reference list.
@@ -101,7 +103,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ends = null;
+	protected EList<ConnectorEnd> ends = null;
 
 	/**
 	 * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
@@ -140,7 +142,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList contracts = null;
+	protected EList<Behavior> contracts = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -156,6 +158,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONNECTOR;
 	}
@@ -165,24 +168,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.CONNECTOR__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.CONNECTOR__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.CONNECTOR__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -191,23 +200,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CONNECTOR__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.CONNECTOR__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CONNECTOR__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -258,10 +269,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedConnectors() {
+	public EList<Connector> getRedefinedConnectors() {
 		if (redefinedConnectors == null) {
-			redefinedConnectors = new EObjectResolvingEList(Connector.class,
-				this, UMLPackage.CONNECTOR__REDEFINED_CONNECTOR);
+			redefinedConnectors = new EObjectResolvingEList<Connector>(
+				Connector.class, this,
+				UMLPackage.CONNECTOR__REDEFINED_CONNECTOR);
 		}
 		return redefinedConnectors;
 	}
@@ -281,9 +293,7 @@
 	 * @generated
 	 */
 	public Connector getRedefinedConnector(String name, boolean ignoreCase) {
-		redefinedConnectorLoop : for (Iterator i = getRedefinedConnectors()
-			.iterator(); i.hasNext();) {
-			Connector redefinedConnector = (Connector) i.next();
+		redefinedConnectorLoop : for (Connector redefinedConnector : getRedefinedConnectors()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(redefinedConnector.getName())
 				: name.equals(redefinedConnector.getName())))
@@ -298,10 +308,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEnds() {
+	public EList<ConnectorEnd> getEnds() {
 		if (ends == null) {
-			ends = new EObjectContainmentEList.Resolving(ConnectorEnd.class,
-				this, UMLPackage.CONNECTOR__END);
+			ends = new EObjectContainmentEList.Resolving<ConnectorEnd>(
+				ConnectorEnd.class, this, UMLPackage.CONNECTOR__END);
 		}
 		return ends;
 	}
@@ -374,10 +384,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContracts() {
+	public EList<Behavior> getContracts() {
 		if (contracts == null) {
-			contracts = new EObjectResolvingEList(Behavior.class, this,
-				UMLPackage.CONNECTOR__CONTRACT);
+			contracts = new EObjectResolvingEList<Behavior>(Behavior.class,
+				this, UMLPackage.CONNECTOR__CONTRACT);
 		}
 		return contracts;
 	}
@@ -397,8 +407,7 @@
 	 * @generated
 	 */
 	public Behavior getContract(String name, boolean ignoreCase, EClass eClass) {
-		contractLoop : for (Iterator i = getContracts().iterator(); i.hasNext();) {
-			Behavior contract = (Behavior) i.next();
+		contractLoop : for (Behavior contract : getContracts()) {
 			if (eClass != null && !eClass.isInstance(contract))
 				continue contractLoop;
 			if (name != null && !(ignoreCase
@@ -415,7 +424,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTypes(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTypes(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConnectorOperations.validateTypes(this, diagnostics, context);
 	}
 
@@ -424,7 +434,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateCompatible(DiagnosticChain diagnostics, Map context) {
+	public boolean validateCompatible(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConnectorOperations.validateCompatible(this, diagnostics,
 			context);
 	}
@@ -434,7 +445,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateRoles(DiagnosticChain diagnostics, Map context) {
+	public boolean validateRoles(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConnectorOperations.validateRoles(this, diagnostics, context);
 	}
 
@@ -444,7 +456,7 @@
 	 * @generated
 	 */
 	public boolean validateBetweenInterfacesPorts(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectorOperations.validateBetweenInterfacesPorts(this,
 			diagnostics, context);
 	}
@@ -455,7 +467,7 @@
 	 * @generated
 	 */
 	public boolean validateBetweenInterfacePortImplements(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ConnectorOperations.validateBetweenInterfacePortImplements(this,
 			diagnostics, context);
 	}
@@ -466,7 +478,7 @@
 	 * @generated
 	 */
 	public boolean validateBetweenInterfacePortSignature(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ConnectorOperations.validateBetweenInterfacePortSignature(this,
 			diagnostics, context);
 	}
@@ -477,7 +489,7 @@
 	 * @generated
 	 */
 	public boolean validateUnionSignatureCompatible(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ConnectorOperations.validateUnionSignatureCompatible(this,
 			diagnostics, context);
 	}
@@ -488,7 +500,7 @@
 	 * @generated
 	 */
 	public boolean validateAssemblyConnector(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConnectorOperations.validateAssemblyConnector(this, diagnostics,
 			context);
 	}
@@ -498,22 +510,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTOR__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONNECTOR__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONNECTOR__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CONNECTOR__END :
-				return ((InternalEList) getEnds()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEnds()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -523,6 +537,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR__EANNOTATIONS :
@@ -586,15 +601,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONNECTOR__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONNECTOR__NAME :
 				setName((String) newValue);
@@ -604,7 +623,8 @@
 				return;
 			case UMLPackage.CONNECTOR__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONNECTOR__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -620,18 +640,20 @@
 				return;
 			case UMLPackage.CONNECTOR__REDEFINED_CONNECTOR :
 				getRedefinedConnectors().clear();
-				getRedefinedConnectors().addAll((Collection) newValue);
+				getRedefinedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.CONNECTOR__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 			case UMLPackage.CONNECTOR__KIND :
 				setKind((ConnectorKind) newValue);
 				return;
 			case UMLPackage.CONNECTOR__CONTRACT :
 				getContracts().clear();
-				getContracts().addAll((Collection) newValue);
+				getContracts()
+					.addAll((Collection<? extends Behavior>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -642,6 +664,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR__EANNOTATIONS :
@@ -692,6 +715,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONNECTOR__EANNOTATIONS :
@@ -747,6 +771,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -776,6 +801,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.CONNECTOR__REDEFINED_CONNECTOR);
@@ -798,6 +824,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || eIsSet(UMLPackage.CONNECTOR__END);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConsiderIgnoreFragmentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConsiderIgnoreFragmentImpl.java
index 8154d09..f31c598 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConsiderIgnoreFragmentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConsiderIgnoreFragmentImpl.java
@@ -8,25 +8,30 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConsiderIgnoreFragmentImpl.java,v 1.13 2006/04/10 19:16:21 khussey Exp $
+ * $Id: ConsiderIgnoreFragmentImpl.java,v 1.14 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConsiderIgnoreFragment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Gate;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
 import org.eclipse.uml2.uml.InteractionOperatorKind;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -59,7 +64,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList messages = null;
+	protected EList<NamedElement> messages = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -75,6 +80,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONSIDER_IGNORE_FRAGMENT;
 	}
@@ -84,9 +90,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMessages() {
+	public EList<NamedElement> getMessages() {
 		if (messages == null) {
-			messages = new EObjectResolvingEList(NamedElement.class, this,
+			messages = new EObjectResolvingEList<NamedElement>(
+				NamedElement.class, this,
 				UMLPackage.CONSIDER_IGNORE_FRAGMENT__MESSAGE);
 		}
 		return messages;
@@ -108,8 +115,7 @@
 	 */
 	public NamedElement getMessage(String name, boolean ignoreCase,
 			EClass eClass) {
-		messageLoop : for (Iterator i = getMessages().iterator(); i.hasNext();) {
-			NamedElement message = (NamedElement) i.next();
+		messageLoop : for (NamedElement message : getMessages()) {
 			if (eClass != null && !eClass.isInstance(message))
 				continue messageLoop;
 			if (name != null && !(ignoreCase
@@ -127,7 +133,7 @@
 	 * @generated
 	 */
 	public boolean validateConsiderOrIgnore(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConsiderIgnoreFragmentOperations.validateConsiderOrIgnore(this,
 			diagnostics, context);
 	}
@@ -137,7 +143,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConsiderIgnoreFragmentOperations.validateType(this, diagnostics,
 			context);
 	}
@@ -147,6 +154,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__EANNOTATIONS :
@@ -204,15 +212,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__NAME :
 				setName((String) newValue);
@@ -222,18 +234,20 @@
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -246,15 +260,18 @@
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__OPERAND :
 				getOperands().clear();
-				getOperands().addAll((Collection) newValue);
+				getOperands().addAll(
+					(Collection<? extends InteractionOperand>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__CFRAGMENT_GATE :
 				getCfragmentGates().clear();
-				getCfragmentGates().addAll((Collection) newValue);
+				getCfragmentGates().addAll(
+					(Collection<? extends Gate>) newValue);
 				return;
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__MESSAGE :
 				getMessages().clear();
-				getMessages().addAll((Collection) newValue);
+				getMessages().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -265,6 +282,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__EANNOTATIONS :
@@ -318,6 +336,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConstraintImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConstraintImpl.java
index 8885f24..fd350b1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConstraintImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ConstraintImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConstraintImpl.java,v 1.19 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ConstraintImpl.java,v 1.20 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,7 +37,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.StringExpression;
@@ -77,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList constrainedElements = null;
+	protected EList<Element> constrainedElements = null;
 
 	/**
 	 * The cached value of the '{@link #getSpecification() <em>Specification</em>}' containment reference.
@@ -103,6 +106,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONSTRAINT;
 	}
@@ -112,23 +116,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.CONSTRAINT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.CONSTRAINT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.CONSTRAINT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -137,10 +143,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConstrainedElements() {
+	public EList<Element> getConstrainedElements() {
 		if (constrainedElements == null) {
-			constrainedElements = new EObjectResolvingEList(Element.class,
-				this, UMLPackage.CONSTRAINT__CONSTRAINED_ELEMENT);
+			constrainedElements = new EObjectResolvingEList<Element>(
+				Element.class, this, UMLPackage.CONSTRAINT__CONSTRAINED_ELEMENT);
 		}
 		return constrainedElements;
 	}
@@ -317,7 +323,7 @@
 	 * @generated
 	 */
 	public boolean validateNotApplyToSelf(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConstraintOperations.validateNotApplyToSelf(this, diagnostics,
 			context);
 	}
@@ -328,7 +334,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationBoolean(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ConstraintOperations.validateValueSpecificationBoolean(this,
 			diagnostics, context);
 	}
@@ -338,7 +344,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateBooleanValue(DiagnosticChain diagnostics, Map context) {
+	public boolean validateBooleanValue(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ConstraintOperations.validateBooleanValue(this, diagnostics,
 			context);
 	}
@@ -349,7 +356,7 @@
 	 * @generated
 	 */
 	public boolean validateNoSideEffects(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConstraintOperations.validateNoSideEffects(this, diagnostics,
 			context);
 	}
@@ -360,7 +367,7 @@
 	 * @generated
 	 */
 	public boolean validateNotAppliedToSelf(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ConstraintOperations.validateNotAppliedToSelf(this, diagnostics,
 			context);
 	}
@@ -370,15 +377,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONSTRAINT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.CONSTRAINT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -405,18 +414,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONSTRAINT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CONSTRAINT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CONSTRAINT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CONSTRAINT__OWNING_TEMPLATE_PARAMETER :
@@ -436,6 +446,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -455,6 +466,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
@@ -510,15 +522,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONSTRAINT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONSTRAINT__NAME :
 				setName((String) newValue);
@@ -528,7 +544,8 @@
 				return;
 			case UMLPackage.CONSTRAINT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONSTRAINT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -541,7 +558,8 @@
 				return;
 			case UMLPackage.CONSTRAINT__CONSTRAINED_ELEMENT :
 				getConstrainedElements().clear();
-				getConstrainedElements().addAll((Collection) newValue);
+				getConstrainedElements().addAll(
+					(Collection<? extends Element>) newValue);
 				return;
 			case UMLPackage.CONSTRAINT__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -558,6 +576,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
@@ -602,6 +621,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONSTRAINT__EANNOTATIONS :
@@ -672,6 +692,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.CONSTRAINT__SPECIFICATION);
@@ -696,6 +717,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.CONSTRAINT__CONTEXT);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ContinuationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ContinuationImpl.java
index 32093ab..1174e26 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ContinuationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ContinuationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ContinuationImpl.java,v 1.13 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ContinuationImpl.java,v 1.14 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,12 +19,17 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Continuation;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -83,6 +88,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONTINUATION;
 	}
@@ -119,7 +125,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameName(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameName(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ContinuationOperations.validateSameName(this, diagnostics,
 			context);
 	}
@@ -129,7 +136,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGlobal(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGlobal(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ContinuationOperations
 			.validateGlobal(this, diagnostics, context);
 	}
@@ -140,7 +148,7 @@
 	 * @generated
 	 */
 	public boolean validateFirstOrLastInteractionFragment(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ContinuationOperations.validateFirstOrLastInteractionFragment(
 			this, diagnostics, context);
 	}
@@ -150,6 +158,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CONTINUATION__EANNOTATIONS :
@@ -203,15 +212,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CONTINUATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CONTINUATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CONTINUATION__NAME :
 				setName((String) newValue);
@@ -221,18 +234,20 @@
 				return;
 			case UMLPackage.CONTINUATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CONTINUATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.CONTINUATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.CONTINUATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.CONTINUATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -252,6 +267,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONTINUATION__EANNOTATIONS :
@@ -296,6 +312,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CONTINUATION__EANNOTATIONS :
@@ -340,6 +357,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlFlowImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlFlowImpl.java
index c1245fd..26c6af8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlFlowImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlFlowImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ControlFlowImpl.java,v 1.2 2005/11/23 20:01:19 khussey Exp $
+ * $Id: ControlFlowImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONTROL_FLOW;
 	}
@@ -59,7 +60,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateObjectNodes(DiagnosticChain diagnostics, Map context) {
+	public boolean validateObjectNodes(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ControlFlowOperations.validateObjectNodes(this, diagnostics,
 			context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlNodeImpl.java
index cb02824..6ce4163 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ControlNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ControlNodeImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: ControlNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CONTROL_NODE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkActionImpl.java
index 63c2e69..59ccf1d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkActionImpl.java,v 1.14 2006/04/10 19:16:19 khussey Exp $
+ * $Id: CreateLinkActionImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -59,6 +59,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CREATE_LINK_ACTION;
 	}
@@ -68,9 +69,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEndData() {
+	public EList<LinkEndData> getEndData() {
 		if (endData == null) {
-			endData = new EObjectContainmentEList.Resolving(
+			endData = new EObjectContainmentEList.Resolving<LinkEndData>(
 				LinkEndCreationData.class, this,
 				UMLPackage.CREATE_LINK_ACTION__END_DATA);
 		}
@@ -82,6 +83,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public LinkEndData createEndData() {
 		LinkEndCreationData newEndData = (LinkEndCreationData) create(UMLPackage.Literals.LINK_END_CREATION_DATA);
 		getEndData().add(newEndData);
@@ -103,7 +105,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationNotAbstract(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CreateLinkActionOperations.validateAssociationNotAbstract(this,
 			diagnostics, context);
 	}
@@ -113,6 +115,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_ACTION__EANNOTATIONS :
@@ -196,6 +199,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_ACTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkObjectActionImpl.java
index c544d8b..a7bdb22 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateLinkObjectActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkObjectActionImpl.java,v 1.21 2006/11/14 18:02:16 khussey Exp $
+ * $Id: CreateLinkObjectActionImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,17 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.CreateLinkObjectAction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
+import org.eclipse.uml2.uml.LinkEndData;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -87,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CREATE_LINK_OBJECT_ACTION;
 	}
@@ -96,22 +108,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.CREATE_LINK_OBJECT_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.CREATE_LINK_OBJECT_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.CREATE_LINK_OBJECT_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -227,7 +241,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationClass(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CreateLinkObjectActionOperations.validateAssociationClass(this,
 			diagnostics, context);
 	}
@@ -237,7 +251,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTypeOfResult(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTypeOfResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CreateLinkObjectActionOperations.validateTypeOfResult(this,
 			diagnostics, context);
 	}
@@ -247,7 +262,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CreateLinkObjectActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -257,18 +273,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -276,32 +293,32 @@
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__END_DATA :
-				return ((InternalEList) getEndData()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getEndData()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__INPUT_VALUE :
-				return ((InternalEList) getInputValues()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getInputValues()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -313,6 +330,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__EANNOTATIONS :
@@ -400,15 +418,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -418,7 +440,8 @@
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -434,43 +457,54 @@
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__END_DATA :
 				getEndData().clear();
-				getEndData().addAll((Collection) newValue);
+				getEndData().addAll(
+					(Collection<? extends LinkEndData>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__INPUT_VALUE :
 				getInputValues().clear();
-				getInputValues().addAll((Collection) newValue);
+				getInputValues().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__RESULT :
 				setResult((OutputPin) newValue);
@@ -484,6 +518,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__EANNOTATIONS :
@@ -555,6 +590,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION__EANNOTATIONS :
@@ -642,6 +678,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.CREATE_LINK_OBJECT_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateObjectActionImpl.java
index 7e28c77..a21d3cb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreateObjectActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateObjectActionImpl.java,v 1.21 2006/11/14 18:02:16 khussey Exp $
+ * $Id: CreateObjectActionImpl.java,v 1.22 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,8 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.CreateObjectAction;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -99,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CREATE_OBJECT_ACTION;
 	}
@@ -108,22 +118,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.CREATE_OBJECT_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.CREATE_OBJECT_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.CREATE_OBJECT_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -278,7 +290,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifierNotAbstract(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CreateObjectActionOperations.validateClassifierNotAbstract(this,
 			diagnostics, context);
 	}
@@ -289,7 +301,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifierNotAssociationClass(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return CreateObjectActionOperations
 			.validateClassifierNotAssociationClass(this, diagnostics, context);
 	}
@@ -299,7 +311,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CreateObjectActionOperations.validateSameType(this, diagnostics,
 			context);
 	}
@@ -309,7 +322,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return CreateObjectActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -319,18 +333,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.CREATE_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -338,26 +353,26 @@
 			case UMLPackage.CREATE_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.CREATE_OBJECT_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -369,6 +384,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.CREATE_OBJECT_ACTION__EANNOTATIONS :
@@ -456,15 +472,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.CREATE_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -474,7 +494,8 @@
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -490,35 +511,44 @@
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.CREATE_OBJECT_ACTION__CLASSIFIER :
 				setClassifier((Classifier) newValue);
@@ -535,6 +565,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CREATE_OBJECT_ACTION__EANNOTATIONS :
@@ -603,6 +634,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.CREATE_OBJECT_ACTION__EANNOTATIONS :
@@ -688,6 +720,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.CREATE_OBJECT_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreationEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreationEventImpl.java
index 95e7a89..176aaf9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreationEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/CreationEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreationEventImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: CreationEventImpl.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.CREATION_EVENT;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateNoOccurrenceAbove(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return CreationEventOperations.validateNoOccurrenceAbove(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataStoreNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataStoreNodeImpl.java
index 78c3a86..f1abf0d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataStoreNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataStoreNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DataStoreNodeImpl.java,v 1.2 2005/11/23 20:01:19 khussey Exp $
+ * $Id: DataStoreNodeImpl.java,v 1.3 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DATA_STORE_NODE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataTypeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataTypeImpl.java
index a889ad6..c050822 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataTypeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DataTypeImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DataTypeImpl.java,v 1.25 2006/11/14 18:02:19 khussey Exp $
+ * $Id: DataTypeImpl.java,v 1.26 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -29,18 +29,29 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.DataTypeOperations;
@@ -74,7 +85,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedOperations() <em>Owned Operation</em>}' containment reference list.
@@ -84,7 +95,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedOperations = null;
+	protected EList<Operation> ownedOperations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -100,6 +111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DATA_TYPE;
 	}
@@ -109,23 +121,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.DATA_TYPE__ATTRIBUTE,
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.DATA_TYPE__ATTRIBUTE,
 						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.DATA_TYPE__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -134,25 +147,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.DATA_TYPE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.DATA_TYPE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.DATA_TYPE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -160,22 +174,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.DATA_TYPE__FEATURE, FEATURE_ESUBSETS));
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.DATA_TYPE__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.DATA_TYPE__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -184,9 +200,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentWithInverseEList.Resolving(
+			ownedAttributes = new EObjectContainmentWithInverseEList.Resolving<Property>(
 				Property.class, this, UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE,
 				UMLPackage.PROPERTY__DATATYPE);
 		}
@@ -233,9 +249,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -256,9 +270,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedOperations() {
+	public EList<Operation> getOwnedOperations() {
 		if (ownedOperations == null) {
-			ownedOperations = new EObjectContainmentWithInverseEList.Resolving(
+			ownedOperations = new EObjectContainmentWithInverseEList.Resolving<Operation>(
 				Operation.class, this, UMLPackage.DATA_TYPE__OWNED_OPERATION,
 				UMLPackage.OPERATION__DATATYPE);
 		}
@@ -271,7 +285,7 @@
 	 * @generated
 	 */
 	public Operation createOwnedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Operation newOwnedOperation = (Operation) create(UMLPackage.Literals.OPERATION);
 		getOwnedOperations().add(newOwnedOperation);
 		if (name != null)
@@ -302,8 +316,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedOperation(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -313,28 +327,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedOperationLoop : for (Iterator i = getOwnedOperations().iterator(); i
-			.hasNext();) {
-			Operation ownedOperation = (Operation) i.next();
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedOperationLoop : for (Operation ownedOperation : getOwnedOperations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedOperation.getName())
 				: name.equals(ownedOperation.getName())))
 				continue ownedOperationLoop;
-			EList ownedParameterList = ownedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedOperation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedOperationLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -357,8 +369,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType) {
+	public Operation createOwnedOperation(String name,
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			Type returnType) {
 		return DataTypeOperations.createOwnedOperation(this, name,
 			parameterNames, parameterTypes, returnType);
 	}
@@ -379,7 +392,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList inherit(EList inhs) {
+	public EList<NamedElement> inherit(EList<NamedElement> inhs) {
 		return DataTypeOperations.inherit(this, inhs);
 	}
 
@@ -388,24 +401,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -420,8 +435,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.DATA_TYPE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -431,22 +446,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedAttributes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -456,61 +472,62 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DATA_TYPE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.DATA_TYPE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.DATA_TYPE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.DATA_TYPE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DATA_TYPE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -521,6 +538,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
@@ -630,15 +648,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__NAME :
 				setName((String) newValue);
@@ -648,22 +670,26 @@
 				return;
 			case UMLPackage.DATA_TYPE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -679,7 +705,8 @@
 				return;
 			case UMLPackage.DATA_TYPE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -689,46 +716,55 @@
 				return;
 			case UMLPackage.DATA_TYPE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.DATA_TYPE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -739,6 +775,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
@@ -831,6 +868,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DATA_TYPE__EANNOTATIONS :
@@ -935,6 +973,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE);
@@ -958,6 +997,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.DATA_TYPE__OWNED_ATTRIBUTE)
@@ -980,6 +1020,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.DATA_TYPE__OWNED_OPERATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DecisionNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DecisionNodeImpl.java
index ae9d1dd..95ac9eb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DecisionNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DecisionNodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DecisionNodeImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: DecisionNodeImpl.java,v 1.15 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,21 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.DecisionNode;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -75,6 +82,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DECISION_NODE;
 	}
@@ -129,7 +137,7 @@
 	 * @generated
 	 */
 	public boolean validateOneIncomingEdge(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DecisionNodeOperations.validateOneIncomingEdge(this,
 			diagnostics, context);
 	}
@@ -140,7 +148,7 @@
 	 * @generated
 	 */
 	public boolean validateInputParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DecisionNodeOperations.validateInputParameter(this, diagnostics,
 			context);
 	}
@@ -150,7 +158,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return DecisionNodeOperations.validateEdges(this, diagnostics, context);
 	}
 
@@ -159,6 +168,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DECISION_NODE__EANNOTATIONS :
@@ -228,15 +238,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DECISION_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__NAME :
 				setName((String) newValue);
@@ -246,7 +260,8 @@
 				return;
 			case UMLPackage.DECISION_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -262,23 +277,29 @@
 				return;
 			case UMLPackage.DECISION_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.DECISION_NODE__DECISION_INPUT :
 				setDecisionInput((Behavior) newValue);
@@ -292,6 +313,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DECISION_NODE__EANNOTATIONS :
@@ -348,6 +370,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DECISION_NODE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DependencyImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DependencyImpl.java
index 9756277..236a6b6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DependencyImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DependencyImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DependencyImpl.java,v 1.15 2006/11/14 18:02:17 khussey Exp $
+ * $Id: DependencyImpl.java,v 1.16 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -30,6 +30,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
@@ -69,7 +70,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList suppliers = null;
+	protected EList<NamedElement> suppliers = null;
 
 	/**
 	 * The cached value of the '{@link #getClients() <em>Client</em>}' reference list.
@@ -79,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList clients = null;
+	protected EList<NamedElement> clients = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -95,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEPENDENCY;
 	}
@@ -104,24 +106,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.DEPENDENCY__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DEPENDENCY__RELATED_ELEMENT, RELATED_ELEMENT_ESUBSETS);
 	}
 
@@ -130,22 +134,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.DEPENDENCY__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.DEPENDENCY__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DEPENDENCY__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -154,22 +160,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.DEPENDENCY__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.DEPENDENCY__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DEPENDENCY__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -178,10 +186,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new EObjectResolvingEList(NamedElement.class, this,
-				UMLPackage.DEPENDENCY__SUPPLIER);
+			suppliers = new EObjectResolvingEList<NamedElement>(
+				NamedElement.class, this, UMLPackage.DEPENDENCY__SUPPLIER);
 		}
 		return suppliers;
 	}
@@ -202,8 +210,7 @@
 	 */
 	public NamedElement getSupplier(String name, boolean ignoreCase,
 			EClass eClass) {
-		supplierLoop : for (Iterator i = getSuppliers().iterator(); i.hasNext();) {
-			NamedElement supplier = (NamedElement) i.next();
+		supplierLoop : for (NamedElement supplier : getSuppliers()) {
 			if (eClass != null && !eClass.isInstance(supplier))
 				continue supplierLoop;
 			if (name != null && !(ignoreCase
@@ -220,9 +227,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClients() {
+	public EList<NamedElement> getClients() {
 		if (clients == null) {
-			clients = new EObjectWithInverseResolvingEList.ManyInverse(
+			clients = new EObjectWithInverseResolvingEList.ManyInverse<NamedElement>(
 				NamedElement.class, this, UMLPackage.DEPENDENCY__CLIENT,
 				UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY);
 		}
@@ -244,8 +251,7 @@
 	 * @generated
 	 */
 	public NamedElement getClient(String name, boolean ignoreCase, EClass eClass) {
-		clientLoop : for (Iterator i = getClients().iterator(); i.hasNext();) {
-			NamedElement client = (NamedElement) i.next();
+		clientLoop : for (NamedElement client : getClients()) {
 			if (eClass != null && !eClass.isInstance(client))
 				continue clientLoop;
 			if (name != null && !(ignoreCase
@@ -262,15 +268,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPENDENCY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPENDENCY__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -285,7 +293,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.DEPENDENCY__CLIENT :
-				return ((InternalEList) getClients()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClients())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -295,18 +304,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPENDENCY__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPENDENCY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DEPENDENCY__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DEPENDENCY__OWNING_TEMPLATE_PARAMETER :
@@ -314,7 +324,7 @@
 			case UMLPackage.DEPENDENCY__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.DEPENDENCY__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -325,6 +335,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
@@ -380,15 +391,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DEPENDENCY__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DEPENDENCY__NAME :
 				setName((String) newValue);
@@ -398,7 +413,8 @@
 				return;
 			case UMLPackage.DEPENDENCY__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DEPENDENCY__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -411,11 +427,13 @@
 				return;
 			case UMLPackage.DEPENDENCY__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.DEPENDENCY__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -426,6 +444,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
@@ -467,6 +486,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPENDENCY__EANNOTATIONS :
@@ -515,7 +535,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.DEPENDENCY__RELATED_ELEMENT :
@@ -542,7 +563,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeployedArtifactImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeployedArtifactImpl.java
index 94c973c..5cd003a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeployedArtifactImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeployedArtifactImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeployedArtifactImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: DeployedArtifactImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEPLOYED_ARTIFACT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentImpl.java
index 495380c..adc6ff8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentImpl.java,v 1.19 2006/11/14 18:02:20 khussey Exp $
+ * $Id: DeploymentImpl.java,v 1.20 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +35,8 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DeployedArtifact;
 import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.DeploymentSpecification;
@@ -76,7 +78,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList deployedArtifacts = null;
+	protected EList<DeployedArtifact> deployedArtifacts = null;
 
 	/**
 	 * The cached value of the '{@link #getConfigurations() <em>Configuration</em>}' containment reference list.
@@ -86,7 +88,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList configurations = null;
+	protected EList<DeploymentSpecification> configurations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -102,6 +104,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEPLOYMENT;
 	}
@@ -111,23 +114,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.DEPLOYMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.DEPLOYMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DEPLOYMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -136,9 +141,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new SubsetSupersetEObjectResolvingEList(
+			suppliers = new SubsetSupersetEObjectResolvingEList<NamedElement>(
 				NamedElement.class, this, UMLPackage.DEPLOYMENT__SUPPLIER,
 				null, SUPPLIER_ESUBSETS);
 		}
@@ -150,9 +155,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClients() {
+	public EList<NamedElement> getClients() {
 		if (clients == null) {
-			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<NamedElement>(
 				NamedElement.class, this, UMLPackage.DEPLOYMENT__CLIENT, null,
 				CLIENT_ESUBSETS, UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY);
 		}
@@ -164,9 +169,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployedArtifacts() {
+	public EList<DeployedArtifact> getDeployedArtifacts() {
 		if (deployedArtifacts == null) {
-			deployedArtifacts = new SubsetSupersetEObjectResolvingEList(
+			deployedArtifacts = new SubsetSupersetEObjectResolvingEList<DeployedArtifact>(
 				DeployedArtifact.class, this,
 				UMLPackage.DEPLOYMENT__DEPLOYED_ARTIFACT,
 				DEPLOYED_ARTIFACT_ESUPERSETS, null);
@@ -190,9 +195,7 @@
 	 */
 	public DeployedArtifact getDeployedArtifact(String name,
 			boolean ignoreCase, EClass eClass) {
-		deployedArtifactLoop : for (Iterator i = getDeployedArtifacts()
-			.iterator(); i.hasNext();) {
-			DeployedArtifact deployedArtifact = (DeployedArtifact) i.next();
+		deployedArtifactLoop : for (DeployedArtifact deployedArtifact : getDeployedArtifacts()) {
 			if (eClass != null && !eClass.isInstance(deployedArtifact))
 				continue deployedArtifactLoop;
 			if (name != null && !(ignoreCase
@@ -209,9 +212,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConfigurations() {
+	public EList<DeploymentSpecification> getConfigurations() {
 		if (configurations == null) {
-			configurations = new EObjectContainmentWithInverseEList.Resolving(
+			configurations = new EObjectContainmentWithInverseEList.Resolving<DeploymentSpecification>(
 				DeploymentSpecification.class, this,
 				UMLPackage.DEPLOYMENT__CONFIGURATION,
 				UMLPackage.DEPLOYMENT_SPECIFICATION__DEPLOYMENT);
@@ -248,10 +251,7 @@
 	 */
 	public DeploymentSpecification getConfiguration(String name,
 			boolean ignoreCase, boolean createOnDemand) {
-		configurationLoop : for (Iterator i = getConfigurations().iterator(); i
-			.hasNext();) {
-			DeploymentSpecification configuration = (DeploymentSpecification) i
-				.next();
+		configurationLoop : for (DeploymentSpecification configuration : getConfigurations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(configuration.getName())
 				: name.equals(configuration.getName())))
@@ -298,7 +298,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newLocation != null) {
-				EList clients = getClients();
+				EList<NamedElement> clients = getClients();
 				if (!clients.contains(newLocation)) {
 					clients.add(newLocation);
 				}
@@ -340,15 +340,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -363,10 +365,11 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.DEPLOYMENT__CLIENT :
-				return ((InternalEList) getClients()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClients())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__CONFIGURATION :
-				return ((InternalEList) getConfigurations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConfigurations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__LOCATION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -380,18 +383,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DEPLOYMENT__OWNING_TEMPLATE_PARAMETER :
@@ -399,10 +403,10 @@
 			case UMLPackage.DEPLOYMENT__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.DEPLOYMENT__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.DEPLOYMENT__CONFIGURATION :
-				return ((InternalEList) getConfigurations()).basicRemove(
+				return ((InternalEList<?>) getConfigurations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT__LOCATION :
 				return basicSetLocation(null, msgs);
@@ -415,6 +419,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -435,6 +440,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
@@ -498,15 +504,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__NAME :
 				setName((String) newValue);
@@ -516,7 +526,8 @@
 				return;
 			case UMLPackage.DEPLOYMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -529,19 +540,23 @@
 				return;
 			case UMLPackage.DEPLOYMENT__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__DEPLOYED_ARTIFACT :
 				getDeployedArtifacts().clear();
-				getDeployedArtifacts().addAll((Collection) newValue);
+				getDeployedArtifacts().addAll(
+					(Collection<? extends DeployedArtifact>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__CONFIGURATION :
 				getConfigurations().clear();
-				getConfigurations().addAll((Collection) newValue);
+				getConfigurations().addAll(
+					(Collection<? extends DeploymentSpecification>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT__LOCATION :
 				setLocation((DeploymentTarget) newValue);
@@ -555,6 +570,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
@@ -605,6 +621,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT__EANNOTATIONS :
@@ -703,6 +720,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.DEPLOYMENT__CONFIGURATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentSpecificationImpl.java
index 412a984..cd18967 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentSpecificationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentSpecificationImpl.java,v 1.19 2006/11/14 18:02:16 khussey Exp $
+ * $Id: DeploymentSpecificationImpl.java,v 1.20 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,13 +29,28 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Artifact;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.DeploymentSpecification;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.Manifestation;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.DeploymentSpecificationOperations;
@@ -130,6 +146,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEPLOYMENT_SPECIFICATION;
 	}
@@ -312,7 +329,7 @@
 	 * @generated
 	 */
 	public boolean validateDeployedElements(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DeploymentSpecificationOperations.validateDeployedElements(this,
 			diagnostics, context);
 	}
@@ -323,7 +340,7 @@
 	 * @generated
 	 */
 	public boolean validateDeploymentTarget(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DeploymentSpecificationOperations.validateDeploymentTarget(this,
 			diagnostics, context);
 	}
@@ -333,24 +350,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -365,8 +384,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -378,16 +397,17 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__DEPLOYMENT :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -401,67 +421,68 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__NESTED_ARTIFACT :
-				return ((InternalEList) getNestedArtifacts()).basicRemove(
+				return ((InternalEList<?>) getNestedArtifacts()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__MANIFESTATION :
-				return ((InternalEList) getManifestations()).basicRemove(
+				return ((InternalEList<?>) getManifestations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__DEPLOYMENT :
 				return basicSetDeployment(null, msgs);
@@ -474,6 +495,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -494,6 +516,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
@@ -617,15 +640,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -635,22 +662,26 @@
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -666,7 +697,8 @@
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -676,57 +708,68 @@
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__FILE_NAME :
 				setFileName((String) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__NESTED_ARTIFACT :
 				getNestedArtifacts().clear();
-				getNestedArtifacts().addAll((Collection) newValue);
+				getNestedArtifacts().addAll(
+					(Collection<? extends Artifact>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__MANIFESTATION :
 				getManifestations().clear();
-				getManifestations().addAll((Collection) newValue);
+				getManifestations().addAll(
+					(Collection<? extends Manifestation>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__DEPLOYMENT_LOCATION :
 				setDeploymentLocation((String) newValue);
@@ -746,6 +789,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
@@ -856,6 +900,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_SPECIFICATION__EANNOTATIONS :
@@ -962,6 +1007,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentTargetImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentTargetImpl.java
index 17c820e..ffaa509 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentTargetImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeploymentTargetImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentTargetImpl.java,v 1.19 2006/11/14 18:02:15 khussey Exp $
+ * $Id: DeploymentTargetImpl.java,v 1.20 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -30,6 +30,7 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentWithInverseEList;
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.DeploymentTarget;
@@ -69,7 +70,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList deployments = null;
+	protected EList<Deployment> deployments = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -85,6 +86,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEPLOYMENT_TARGET;
 	}
@@ -94,23 +96,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.DEPLOYMENT_TARGET__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.DEPLOYMENT_TARGET__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DEPLOYMENT_TARGET__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -119,9 +123,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this,
 				UMLPackage.DEPLOYMENT_TARGET__CLIENT_DEPENDENCY, null,
 				CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
@@ -134,9 +138,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployments() {
+	public EList<Deployment> getDeployments() {
 		if (deployments == null) {
-			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Deployment>(
 				Deployment.class, this,
 				UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT,
 				DEPLOYMENT_ESUPERSETS, null, UMLPackage.DEPLOYMENT__LOCATION);
@@ -173,9 +177,7 @@
 	 */
 	public Deployment getDeployment(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		deploymentLoop : for (Iterator i = getDeployments().iterator(); i
-			.hasNext();) {
-			Deployment deployment = (Deployment) i.next();
+		deploymentLoop : for (Deployment deployment : getDeployments()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(deployment.getName())
 				: name.equals(deployment.getName())))
@@ -192,12 +194,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployedElements() {
+	public EList<PackageableElement> getDeployedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this,
+					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
 			if (result == null) {
 				cache.put(this,
 					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT,
@@ -225,9 +229,7 @@
 	 */
 	public PackageableElement getDeployedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		deployedElementLoop : for (Iterator i = getDeployedElements()
-			.iterator(); i.hasNext();) {
-			PackageableElement deployedElement = (PackageableElement) i.next();
+		deployedElementLoop : for (PackageableElement deployedElement : getDeployedElements()) {
 			if (eClass != null && !eClass.isInstance(deployedElement))
 				continue deployedElementLoop;
 			if (name != null && !(ignoreCase
@@ -244,18 +246,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getDeployments())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -265,23 +269,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getDeployments()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -291,6 +296,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
@@ -332,15 +338,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_TARGET__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_TARGET__NAME :
 				setName((String) newValue);
@@ -350,14 +360,16 @@
 				return;
 			case UMLPackage.DEPLOYMENT_TARGET__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_TARGET__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -368,6 +380,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
@@ -400,6 +413,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DEPLOYMENT_TARGET__EANNOTATIONS :
@@ -471,6 +485,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyLinkActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyLinkActionImpl.java
index 789bbaf..c72c5f4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyLinkActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyLinkActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestroyLinkActionImpl.java,v 1.14 2006/04/10 19:16:20 khussey Exp $
+ * $Id: DestroyLinkActionImpl.java,v 1.15 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -53,6 +53,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DESTROY_LINK_ACTION;
 	}
@@ -62,9 +63,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEndData() {
+	public EList<LinkEndData> getEndData() {
 		if (endData == null) {
-			endData = new EObjectContainmentEList.Resolving(
+			endData = new EObjectContainmentEList.Resolving<LinkEndData>(
 				LinkEndDestructionData.class, this,
 				UMLPackage.DESTROY_LINK_ACTION__END_DATA);
 		}
@@ -76,6 +77,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public LinkEndData createEndData() {
 		LinkEndDestructionData newEndData = (LinkEndDestructionData) create(UMLPackage.Literals.LINK_END_DESTRUCTION_DATA);
 		getEndData().add(newEndData);
@@ -96,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_LINK_ACTION__EANNOTATIONS :
@@ -179,6 +182,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_LINK_ACTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyObjectActionImpl.java
index 105b849..3e3db1b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestroyObjectActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestroyObjectActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: DestroyObjectActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,8 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DestroyObjectAction;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -129,6 +138,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DESTROY_OBJECT_ACTION;
 	}
@@ -138,23 +148,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(InputPin.class,
-							this, UMLPackage.DESTROY_OBJECT_ACTION__INPUT,
+						inputs = new DerivedUnionEObjectEList<InputPin>(
+							InputPin.class, this,
+							UMLPackage.DESTROY_OBJECT_ACTION__INPUT,
 							INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.DESTROY_OBJECT_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -329,7 +341,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return DestroyObjectActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -339,7 +352,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return DestroyObjectActionOperations.validateNoType(this, diagnostics,
 			context);
 	}
@@ -349,18 +363,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -368,26 +383,26 @@
 			case UMLPackage.DESTROY_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.DESTROY_OBJECT_ACTION__TARGET :
 				return basicSetTarget(null, msgs);
 		}
@@ -399,6 +414,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_OBJECT_ACTION__EANNOTATIONS :
@@ -490,15 +506,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -508,7 +528,8 @@
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -524,35 +545,44 @@
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.DESTROY_OBJECT_ACTION__IS_DESTROY_LINKS :
 				setIsDestroyLinks(((Boolean) newValue).booleanValue());
@@ -572,6 +602,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_OBJECT_ACTION__EANNOTATIONS :
@@ -643,6 +674,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DESTROY_OBJECT_ACTION__EANNOTATIONS :
@@ -720,6 +752,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -748,6 +781,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.DESTROY_OBJECT_ACTION__TARGET);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestructionEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestructionEventImpl.java
index 6370a8b..a4e6538 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestructionEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DestructionEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestructionEventImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: DestructionEventImpl.java,v 1.3 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DESTRUCTION_EVENT;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateNoOccurrenceSpecificationsBelow(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return DestructionEventOperations
 			.validateNoOccurrenceSpecificationsBelow(this, diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeviceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeviceImpl.java
index b37178b..4ff443f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeviceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DeviceImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeviceImpl.java,v 1.2 2005/11/23 20:01:20 khussey Exp $
+ * $Id: DeviceImpl.java,v 1.3 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DEVICE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DirectedRelationshipImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DirectedRelationshipImpl.java
index ac5e096..0f7232e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DirectedRelationshipImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DirectedRelationshipImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DirectedRelationshipImpl.java,v 1.11 2006/11/14 18:02:20 khussey Exp $
+ * $Id: DirectedRelationshipImpl.java,v 1.12 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -57,6 +57,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DIRECTED_RELATIONSHIP;
 	}
@@ -66,22 +67,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.DIRECTED_RELATIONSHIP__SOURCE, null));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DIRECTED_RELATIONSHIP__SOURCE, null);
 	}
 
@@ -90,24 +93,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.DIRECTED_RELATIONSHIP__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DIRECTED_RELATIONSHIP__RELATED_ELEMENT,
 			RELATED_ELEMENT_ESUBSETS);
 	}
@@ -117,22 +122,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.DIRECTED_RELATIONSHIP__TARGET, null));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.DIRECTED_RELATIONSHIP__TARGET, null);
 	}
 
@@ -141,6 +148,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DIRECTED_RELATIONSHIP__EANNOTATIONS :
@@ -168,6 +176,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DIRECTED_RELATIONSHIP__EANNOTATIONS :
@@ -214,6 +223,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRelatedElements() {
 		return super.isSetRelatedElements() || isSetSources() || isSetTargets();
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationConstraintImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationConstraintImpl.java
index 8da316b..0ce4bfc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationConstraintImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationConstraintImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationConstraintImpl.java,v 1.19 2006/11/14 18:02:19 khussey Exp $
+ * $Id: DurationConstraintImpl.java,v 1.20 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -21,6 +21,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,7 +29,10 @@
 
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DurationConstraint;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.DurationInterval;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.StringExpression;
@@ -67,7 +71,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList firstEvents = null;
+	protected EList<Boolean> firstEvents = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -83,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DURATION_CONSTRAINT;
 	}
@@ -92,10 +97,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFirstEvents() {
+	public EList<Boolean> getFirstEvents() {
 		if (firstEvents == null) {
-			firstEvents = new EDataTypeUniqueEList(Boolean.class, this,
-				UMLPackage.DURATION_CONSTRAINT__FIRST_EVENT);
+			firstEvents = new EDataTypeUniqueEList<Boolean>(Boolean.class,
+				this, UMLPackage.DURATION_CONSTRAINT__FIRST_EVENT);
 		}
 		return firstEvents;
 	}
@@ -164,6 +169,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetSpecification(
 			ValueSpecification newSpecification, NotificationChain msgs) {
 
@@ -210,6 +216,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ValueSpecification createSpecification(String name, Type type,
 			EClass eClass) {
 		ValueSpecification newSpecification = (ValueSpecification) create(eClass);
@@ -236,7 +243,7 @@
 	 * @generated
 	 */
 	public boolean validateFirstEventMultiplicity(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DurationConstraintOperations.validateFirstEventMultiplicity(
 			this, diagnostics, context);
 	}
@@ -246,6 +253,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DURATION_CONSTRAINT__EANNOTATIONS :
@@ -303,15 +311,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DURATION_CONSTRAINT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__NAME :
 				setName((String) newValue);
@@ -321,7 +333,8 @@
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -334,7 +347,8 @@
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__CONSTRAINED_ELEMENT :
 				getConstrainedElements().clear();
-				getConstrainedElements().addAll((Collection) newValue);
+				getConstrainedElements().addAll(
+					(Collection<? extends Element>) newValue);
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -344,7 +358,8 @@
 				return;
 			case UMLPackage.DURATION_CONSTRAINT__FIRST_EVENT :
 				getFirstEvents().clear();
-				getFirstEvents().addAll((Collection) newValue);
+				getFirstEvents().addAll(
+					(Collection<? extends Boolean>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -355,6 +370,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION_CONSTRAINT__EANNOTATIONS :
@@ -402,6 +418,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION_CONSTRAINT__EANNOTATIONS :
@@ -449,6 +466,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationImpl.java
index 5910b87..dda8f76 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationImpl.java,v 1.14 2006/11/14 18:02:20 khussey Exp $
+ * $Id: DurationImpl.java,v 1.15 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -25,6 +25,8 @@
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Duration;
 import org.eclipse.uml2.uml.Observation;
 import org.eclipse.uml2.uml.StringExpression;
@@ -72,7 +74,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList observations = null;
+	protected EList<Observation> observations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -88,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DURATION;
 	}
@@ -139,10 +142,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getObservations() {
+	public EList<Observation> getObservations() {
 		if (observations == null) {
-			observations = new EObjectResolvingEList(Observation.class, this,
-				UMLPackage.DURATION__OBSERVATION);
+			observations = new EObjectResolvingEList<Observation>(
+				Observation.class, this, UMLPackage.DURATION__OBSERVATION);
 		}
 		return observations;
 	}
@@ -163,9 +166,7 @@
 	 */
 	public Observation getObservation(String name, boolean ignoreCase,
 			EClass eClass) {
-		observationLoop : for (Iterator i = getObservations().iterator(); i
-			.hasNext();) {
-			Observation observation = (Observation) i.next();
+		observationLoop : for (Observation observation : getObservations()) {
 			if (eClass != null && !eClass.isInstance(observation))
 				continue observationLoop;
 			if (name != null && !(ignoreCase
@@ -191,6 +192,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DURATION__EANNOTATIONS :
@@ -246,15 +248,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DURATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DURATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DURATION__NAME :
 				setName((String) newValue);
@@ -264,7 +270,8 @@
 				return;
 			case UMLPackage.DURATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DURATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -283,7 +290,8 @@
 				return;
 			case UMLPackage.DURATION__OBSERVATION :
 				getObservations().clear();
-				getObservations().addAll((Collection) newValue);
+				getObservations().addAll(
+					(Collection<? extends Observation>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -294,6 +302,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION__EANNOTATIONS :
@@ -338,6 +347,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationIntervalImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationIntervalImpl.java
index 1d14b9b..a169ec0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationIntervalImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationIntervalImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationIntervalImpl.java,v 1.12 2006/11/14 18:02:16 khussey Exp $
+ * $Id: DurationIntervalImpl.java,v 1.13 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -56,6 +56,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DURATION_INTERVAL;
 	}
@@ -102,6 +103,7 @@
 
 	}
 
+	@Override
 	public void setMin(ValueSpecification newMin) {
 
 		if (newMin != null && !(newMin instanceof Duration)) {
@@ -162,6 +164,7 @@
 
 	}
 
+	@Override
 	public void setMax(ValueSpecification newMax) {
 
 		if (newMax != null && !(newMax instanceof Duration)) {
@@ -185,6 +188,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DURATION_INTERVAL__EANNOTATIONS :
@@ -242,6 +246,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION_INTERVAL__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationObservationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationObservationImpl.java
index 3a71aaf..8a5db14 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationObservationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/DurationObservationImpl.java
@@ -8,22 +8,24 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationObservationImpl.java,v 1.5 2006/04/10 19:16:20 khussey Exp $
+ * $Id: DurationObservationImpl.java,v 1.6 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DurationObservation;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.StringExpression;
@@ -59,7 +61,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList events = null;
+	protected EList<NamedElement> events = null;
 
 	/**
 	 * The cached value of the '{@link #getFirstEvents() <em>First Event</em>}' attribute list.
@@ -69,7 +71,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList firstEvents = null;
+	protected EList<Boolean> firstEvents = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -85,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.DURATION_OBSERVATION;
 	}
@@ -94,9 +97,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEvents() {
+	public EList<NamedElement> getEvents() {
 		if (events == null) {
-			events = new EObjectResolvingEList(NamedElement.class, this,
+			events = new EObjectResolvingEList<NamedElement>(
+				NamedElement.class, this,
 				UMLPackage.DURATION_OBSERVATION__EVENT);
 		}
 		return events;
@@ -117,8 +121,7 @@
 	 * @generated
 	 */
 	public NamedElement getEvent(String name, boolean ignoreCase, EClass eClass) {
-		eventLoop : for (Iterator i = getEvents().iterator(); i.hasNext();) {
-			NamedElement event = (NamedElement) i.next();
+		eventLoop : for (NamedElement event : getEvents()) {
 			if (eClass != null && !eClass.isInstance(event))
 				continue eventLoop;
 			if (name != null && !(ignoreCase
@@ -135,10 +138,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFirstEvents() {
+	public EList<Boolean> getFirstEvents() {
 		if (firstEvents == null) {
-			firstEvents = new EDataTypeUniqueEList(Boolean.class, this,
-				UMLPackage.DURATION_OBSERVATION__FIRST_EVENT);
+			firstEvents = new EDataTypeUniqueEList<Boolean>(Boolean.class,
+				this, UMLPackage.DURATION_OBSERVATION__FIRST_EVENT);
 		}
 		return firstEvents;
 	}
@@ -149,7 +152,7 @@
 	 * @generated
 	 */
 	public boolean validateFirstEventMultiplicity(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return DurationObservationOperations.validateFirstEventMultiplicity(
 			this, diagnostics, context);
 	}
@@ -159,6 +162,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.DURATION_OBSERVATION__EANNOTATIONS :
@@ -208,15 +212,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.DURATION_OBSERVATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.DURATION_OBSERVATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.DURATION_OBSERVATION__NAME :
 				setName((String) newValue);
@@ -226,7 +234,8 @@
 				return;
 			case UMLPackage.DURATION_OBSERVATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.DURATION_OBSERVATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -239,11 +248,13 @@
 				return;
 			case UMLPackage.DURATION_OBSERVATION__EVENT :
 				getEvents().clear();
-				getEvents().addAll((Collection) newValue);
+				getEvents().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.DURATION_OBSERVATION__FIRST_EVENT :
 				getFirstEvents().clear();
-				getFirstEvents().addAll((Collection) newValue);
+				getFirstEvents().addAll(
+					(Collection<? extends Boolean>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -254,6 +265,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION_OBSERVATION__EANNOTATIONS :
@@ -295,6 +307,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.DURATION_OBSERVATION__EANNOTATIONS :
@@ -337,6 +350,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImpl.java
index 07f8b1c..9855f80 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ElementImpl.java,v 1.35 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ElementImpl.java,v 1.36 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -41,8 +41,10 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Relationship;
 import org.eclipse.uml2.uml.Stereotype;
 import org.eclipse.uml2.uml.UMLPackage;
 
@@ -75,7 +77,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedComments = null;
+	protected EList<Comment> ownedComments = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -91,6 +93,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ELEMENT;
 	}
@@ -100,23 +103,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.ELEMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.ELEMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ELEMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -125,9 +129,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedComments() {
+	public EList<Comment> getOwnedComments() {
 		if (ownedComments == null) {
-			ownedComments = new EObjectContainmentEList.Resolving(
+			ownedComments = new EObjectContainmentEList.Resolving<Comment>(
 				Comment.class, this, UMLPackage.ELEMENT__OWNED_COMMENT);
 		}
 		return ownedComments;
@@ -149,7 +153,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotOwnSelf(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotOwnSelf(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ElementOperations.validateNotOwnSelf(this, diagnostics, context);
 	}
 
@@ -158,7 +163,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateHasOwner(DiagnosticChain diagnostics, Map context) {
+	public boolean validateHasOwner(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ElementOperations.validateHasOwner(this, diagnostics, context);
 	}
 
@@ -167,11 +173,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getStereotypeApplications() {
+	public EList<EObject> getStereotypeApplications() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(16));
+			@SuppressWarnings("unchecked")
+			EList<EObject> result = (EList<EObject>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(16));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(16), result = ElementOperations
@@ -196,11 +203,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRequiredStereotypes() {
+	public EList<Stereotype> getRequiredStereotypes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(18));
+			@SuppressWarnings("unchecked")
+			EList<Stereotype> result = (EList<Stereotype>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(18));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(18), result = ElementOperations
@@ -225,11 +233,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAppliedStereotypes() {
+	public EList<Stereotype> getAppliedStereotypes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(20));
+			@SuppressWarnings("unchecked")
+			EList<Stereotype> result = (EList<Stereotype>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(20));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(20), result = ElementOperations
@@ -254,7 +263,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAppliedSubstereotypes(Stereotype stereotype) {
+	public EList<Stereotype> getAppliedSubstereotypes(Stereotype stereotype) {
 		return ElementOperations.getAppliedSubstereotypes(this, stereotype);
 	}
 
@@ -311,11 +320,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelationships() {
+	public EList<Relationship> getRelationships() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(28));
+			@SuppressWarnings("unchecked")
+			EList<Relationship> result = (EList<Relationship>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(28));
 			if (result == null) {
 				cache
 					.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
@@ -332,7 +342,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelationships(EClass eClass) {
+	public EList<Relationship> getRelationships(EClass eClass) {
 		return ElementOperations.getRelationships(this, eClass);
 	}
 
@@ -341,11 +351,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSourceDirectedRelationships() {
+	public EList<DirectedRelationship> getSourceDirectedRelationships() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(30));
+			@SuppressWarnings("unchecked")
+			EList<DirectedRelationship> result = (EList<DirectedRelationship>) cache
+				.get(this, UMLPackage.Literals.ELEMENT.getEOperations().get(30));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(30), result = ElementOperations
@@ -361,7 +372,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSourceDirectedRelationships(EClass eClass) {
+	public EList<DirectedRelationship> getSourceDirectedRelationships(
+			EClass eClass) {
 		return ElementOperations.getSourceDirectedRelationships(this, eClass);
 	}
 
@@ -370,11 +382,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargetDirectedRelationships() {
+	public EList<DirectedRelationship> getTargetDirectedRelationships() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(32));
+			@SuppressWarnings("unchecked")
+			EList<DirectedRelationship> result = (EList<DirectedRelationship>) cache
+				.get(this, UMLPackage.Literals.ELEMENT.getEOperations().get(32));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(32), result = ElementOperations
@@ -390,7 +403,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargetDirectedRelationships(EClass eClass) {
+	public EList<DirectedRelationship> getTargetDirectedRelationships(
+			EClass eClass) {
 		return ElementOperations.getTargetDirectedRelationships(this, eClass);
 	}
 
@@ -399,10 +413,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getKeywords() {
+	public EList<String> getKeywords() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(eResource(), this,
+			@SuppressWarnings("unchecked")
+			EList<String> result = (EList<String>) cache.get(eResource(), this,
 				UMLPackage.Literals.ELEMENT.getEOperations().get(4));
 			if (result == null) {
 				cache.put(eResource(), this, UMLPackage.Literals.ELEMENT
@@ -500,11 +515,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getApplicableStereotypes() {
+	public EList<Stereotype> getApplicableStereotypes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(14));
+			@SuppressWarnings("unchecked")
+			EList<Stereotype> result = (EList<Stereotype>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(14));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
 					.get(14), result = ElementOperations
@@ -547,11 +563,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allOwnedElements() {
+	public EList<Element> allOwnedElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.ELEMENT
-				.getEOperations().get(34));
+			@SuppressWarnings("unchecked")
+			EList<Element> result = (EList<Element>) cache.get(this,
+				UMLPackage.Literals.ELEMENT.getEOperations().get(34));
 			if (result == null) {
 				cache
 					.put(this, UMLPackage.Literals.ELEMENT.getEOperations()
@@ -577,14 +594,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -595,6 +613,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT__EANNOTATIONS :
@@ -616,15 +635,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -635,6 +658,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT__EANNOTATIONS :
@@ -652,6 +676,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT__EANNOTATIONS :
@@ -750,6 +775,7 @@
 		return basicGetOwner() != null;
 	}
 
+	@Override
 	public NotificationChain eBasicSetContainer(InternalEObject newContainer,
 			int newContainerFeatureID, NotificationChain msgs) {
 		msgs = super.eBasicSetContainer(newContainer, newContainerFeatureID,
@@ -770,8 +796,9 @@
 
 	private static final int ADAPTING = 1 << 7;
 
-	public EList eAdapters() {
-		EList eAdapters = super.eAdapters();
+	@Override
+	public EList<Adapter> eAdapters() {
+		EList<Adapter> eAdapters = super.eAdapters();
 
 		if ((eFlags & ADAPTING) == 0 && eAdapters.isEmpty()) {
 			CacheAdapter cacheAdapter = getCacheAdapter();
@@ -786,6 +813,7 @@
 		return eAdapters;
 	}
 
+	@Override
 	public void eSetDeliver(boolean deliver) {
 
 		if (deliver) {
@@ -799,16 +827,18 @@
 		super.eSetDeliver(deliver);
 	}
 
+	@Override
 	public boolean eNotificationRequired() {
 		return getCacheAdapter() == null
 			? super.eNotificationRequired()
 			: eDeliver();
 	}
 
+	@Override
 	public void eNotify(Notification notification) {
 
 		if (eDeliver()) {
-			BasicEList eBasicAdapters = eBasicAdapters();
+			BasicEList<Adapter> eBasicAdapters = eBasicAdapters();
 
 			if (eBasicAdapters == null || eBasicAdapters.isEmpty()) {
 				CacheAdapter cacheAdapter = getCacheAdapter();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImportImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImportImpl.java
index 22d6682..0a409f2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImportImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ElementImportImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ElementImportImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ElementImportImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Namespace;
@@ -140,6 +142,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ELEMENT_IMPORT;
 	}
@@ -149,22 +152,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.ELEMENT_IMPORT__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.ELEMENT_IMPORT__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ELEMENT_IMPORT__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -173,22 +178,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.ELEMENT_IMPORT__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.ELEMENT_IMPORT__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.ELEMENT_IMPORT__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -385,7 +392,7 @@
 	 * @generated
 	 */
 	public boolean validateVisibilityPublicOrPrivate(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ElementImportOperations.validateVisibilityPublicOrPrivate(this,
 			diagnostics, context);
 	}
@@ -396,7 +403,7 @@
 	 * @generated
 	 */
 	public boolean validateImportedElementIsPublic(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ElementImportOperations.validateImportedElementIsPublic(this,
 			diagnostics, context);
 	}
@@ -415,12 +422,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -434,14 +443,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ELEMENT_IMPORT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE :
 				return basicSetImportingNamespace(null, msgs);
@@ -454,6 +464,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -470,6 +481,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
@@ -509,15 +521,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ELEMENT_IMPORT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ELEMENT_IMPORT__VISIBILITY :
 				setVisibility((VisibilityKind) newValue);
@@ -540,6 +556,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
@@ -569,6 +586,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ELEMENT_IMPORT__EANNOTATIONS :
@@ -602,6 +620,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -633,6 +652,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.ELEMENT_IMPORT__IMPORTED_ELEMENT);
@@ -665,6 +685,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE);
@@ -689,6 +710,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EncapsulatedClassifierImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EncapsulatedClassifierImpl.java
index c2d95fa..a516b09 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EncapsulatedClassifierImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EncapsulatedClassifierImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: EncapsulatedClassifierImpl.java,v 1.23 2006/05/08 17:46:10 khussey Exp $
+ * $Id: EncapsulatedClassifierImpl.java,v 1.24 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -25,17 +25,29 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedSubsetEObjectEList;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 /**
@@ -80,6 +92,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ENCAPSULATED_CLASSIFIER;
 	}
@@ -89,9 +102,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this,
 				UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_ATTRIBUTE);
 		}
@@ -103,22 +116,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getOwnedPorts() {
+	public EList<Port> getOwnedPorts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedPorts = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Port> ownedPorts = (EList<Port>) cache.get(eResource, this,
 				UMLPackage.Literals.ENCAPSULATED_CLASSIFIER__OWNED_PORT);
 			if (ownedPorts == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ENCAPSULATED_CLASSIFIER__OWNED_PORT,
-					ownedPorts = new DerivedSubsetEObjectEList(Port.class,
-						this, UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_PORT,
+					ownedPorts = new DerivedSubsetEObjectEList<Port>(
+						Port.class, this,
+						UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_PORT,
 						OWNED_PORT_ESUPERSETS));
 			}
 			return ownedPorts;
 		}
-		return new DerivedSubsetEObjectEList(Port.class, this,
+		return new DerivedSubsetEObjectEList<Port>(Port.class, this,
 			UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_PORT,
 			OWNED_PORT_ESUPERSETS);
 	}
@@ -154,9 +169,7 @@
 	 */
 	public Port getOwnedPort(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedPortLoop : for (Iterator i = getOwnedPorts().iterator(); i
-			.hasNext();) {
-			Port ownedPort = (Port) i.next();
+		ownedPortLoop : for (Port ownedPort : getOwnedPorts()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedPort.getName())
 				: name.equals(ownedPort.getName())))
@@ -175,61 +188,62 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -240,6 +254,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__EANNOTATIONS :
@@ -355,15 +370,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__NAME :
 				setName((String) newValue);
@@ -373,22 +392,26 @@
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -404,7 +427,8 @@
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -414,50 +438,59 @@
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -468,6 +501,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__EANNOTATIONS :
@@ -563,6 +597,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENCAPSULATED_CLASSIFIER__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationImpl.java
index fb13146..512724e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: EnumerationImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: EnumerationImpl.java,v 1.24 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -29,14 +29,27 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Enumeration;
 import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 /**
@@ -65,7 +78,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedLiterals = null;
+	protected EList<EnumerationLiteral> ownedLiterals = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -81,6 +94,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ENUMERATION;
 	}
@@ -90,25 +104,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.ENUMERATION__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.ENUMERATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.ENUMERATION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -116,9 +131,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedLiterals() {
+	public EList<EnumerationLiteral> getOwnedLiterals() {
 		if (ownedLiterals == null) {
-			ownedLiterals = new EObjectContainmentWithInverseEList.Resolving(
+			ownedLiterals = new EObjectContainmentWithInverseEList.Resolving<EnumerationLiteral>(
 				EnumerationLiteral.class, this,
 				UMLPackage.ENUMERATION__OWNED_LITERAL,
 				UMLPackage.ENUMERATION_LITERAL__ENUMERATION);
@@ -142,9 +157,7 @@
 	 */
 	public EnumerationLiteral getOwnedLiteral(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedLiteralLoop : for (Iterator i = getOwnedLiterals().iterator(); i
-			.hasNext();) {
-			EnumerationLiteral ownedLiteral = (EnumerationLiteral) i.next();
+		ownedLiteralLoop : for (EnumerationLiteral ownedLiteral : getOwnedLiterals()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedLiteral.getName())
 				: name.equals(ownedLiteral.getName())))
@@ -174,24 +187,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -206,8 +221,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ENUMERATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -217,25 +232,26 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.ENUMERATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedAttributes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_LITERAL :
-				return ((InternalEList) getOwnedLiterals()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedLiterals())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -245,64 +261,65 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ENUMERATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ENUMERATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ENUMERATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ENUMERATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.ENUMERATION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.ENUMERATION__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION__OWNED_LITERAL :
-				return ((InternalEList) getOwnedLiterals()).basicRemove(
+				return ((InternalEList<?>) getOwnedLiterals()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -313,6 +330,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
@@ -424,15 +442,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__NAME :
 				setName((String) newValue);
@@ -442,22 +464,26 @@
 				return;
 			case UMLPackage.ENUMERATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ENUMERATION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -473,7 +499,8 @@
 				return;
 			case UMLPackage.ENUMERATION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -483,50 +510,60 @@
 				return;
 			case UMLPackage.ENUMERATION__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.ENUMERATION__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.ENUMERATION__OWNED_LITERAL :
 				getOwnedLiterals().clear();
-				getOwnedLiterals().addAll((Collection) newValue);
+				getOwnedLiterals().addAll(
+					(Collection<? extends EnumerationLiteral>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -537,6 +574,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
@@ -632,6 +670,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION__EANNOTATIONS :
@@ -743,6 +782,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.ENUMERATION__OWNED_LITERAL);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationLiteralImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationLiteralImpl.java
index 67ee673..44e27b2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationLiteralImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EnumerationLiteralImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: EnumerationLiteralImpl.java,v 1.15 2006/11/14 18:02:18 khussey Exp $
+ * $Id: EnumerationLiteralImpl.java,v 1.16 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,6 +16,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -24,9 +25,14 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.Enumeration;
 import org.eclipse.uml2.uml.EnumerationLiteral;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Slot;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -65,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.ENUMERATION_LITERAL;
 	}
@@ -150,18 +157,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getDeployments())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -176,7 +185,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.ENUMERATION_LITERAL__SLOT :
-				return ((InternalEList) getSlots()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSlots())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__ENUMERATION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -190,29 +200,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getDeployments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__SLOT :
-				return ((InternalEList) getSlots()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getSlots()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.ENUMERATION_LITERAL__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 			case UMLPackage.ENUMERATION_LITERAL__ENUMERATION :
@@ -226,6 +238,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -246,6 +259,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
@@ -307,15 +321,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__NAME :
 				setName((String) newValue);
@@ -325,14 +343,16 @@
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -342,11 +362,12 @@
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__CLASSIFIER :
 				getClassifiers().clear();
-				getClassifiers().addAll((Collection) newValue);
+				getClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__SLOT :
 				getSlots().clear();
-				getSlots().addAll((Collection) newValue);
+				getSlots().addAll((Collection<? extends Slot>) newValue);
 				return;
 			case UMLPackage.ENUMERATION_LITERAL__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -363,6 +384,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
@@ -413,6 +435,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.ENUMERATION_LITERAL__EANNOTATIONS :
@@ -477,6 +500,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.ENUMERATION_LITERAL__ENUMERATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EventImpl.java
index 53b77f6..c272cc3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/EventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: EventImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: EventImpl.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EVENT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExceptionHandlerImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExceptionHandlerImpl.java
index 8d0f6ea..b1fa9f3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExceptionHandlerImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExceptionHandlerImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExceptionHandlerImpl.java,v 1.14 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ExceptionHandlerImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,6 +33,7 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.ExecutableNode;
@@ -90,7 +91,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList exceptionTypes = null;
+	protected EList<Classifier> exceptionTypes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -106,6 +107,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXCEPTION_HANDLER;
 	}
@@ -215,9 +217,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExceptionTypes() {
+	public EList<Classifier> getExceptionTypes() {
 		if (exceptionTypes == null) {
-			exceptionTypes = new EObjectResolvingEList(Classifier.class, this,
+			exceptionTypes = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
 				UMLPackage.EXCEPTION_HANDLER__EXCEPTION_TYPE);
 		}
 		return exceptionTypes;
@@ -239,9 +242,7 @@
 	 */
 	public Classifier getExceptionType(String name, boolean ignoreCase,
 			EClass eClass) {
-		exceptionTypeLoop : for (Iterator i = getExceptionTypes().iterator(); i
-			.hasNext();) {
-			Classifier exceptionType = (Classifier) i.next();
+		exceptionTypeLoop : for (Classifier exceptionType : getExceptionTypes()) {
 			if (eClass != null && !eClass.isInstance(exceptionType))
 				continue exceptionTypeLoop;
 			if (name != null && !(ignoreCase
@@ -323,7 +324,7 @@
 	 * @generated
 	 */
 	public boolean validateExceptionBody(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ExceptionHandlerOperations.validateExceptionBody(this,
 			diagnostics, context);
 	}
@@ -333,7 +334,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateResultPins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateResultPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExceptionHandlerOperations.validateResultPins(this, diagnostics,
 			context);
 	}
@@ -343,7 +345,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOneInput(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOneInput(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExceptionHandlerOperations.validateOneInput(this, diagnostics,
 			context);
 	}
@@ -354,7 +357,7 @@
 	 * @generated
 	 */
 	public boolean validateEdgeSourceTarget(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ExceptionHandlerOperations.validateEdgeSourceTarget(this,
 			diagnostics, context);
 	}
@@ -364,12 +367,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXCEPTION_HANDLER__PROTECTED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -383,14 +388,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXCEPTION_HANDLER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXCEPTION_HANDLER__PROTECTED_NODE :
 				return basicSetProtectedNode(null, msgs);
@@ -403,6 +409,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -419,6 +426,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
@@ -454,15 +462,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXCEPTION_HANDLER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXCEPTION_HANDLER__HANDLER_BODY :
 				setHandlerBody((ExecutableNode) newValue);
@@ -472,7 +484,8 @@
 				return;
 			case UMLPackage.EXCEPTION_HANDLER__EXCEPTION_TYPE :
 				getExceptionTypes().clear();
-				getExceptionTypes().addAll((Collection) newValue);
+				getExceptionTypes().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.EXCEPTION_HANDLER__PROTECTED_NODE :
 				setProtectedNode((ExecutableNode) newValue);
@@ -486,6 +499,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
@@ -515,6 +529,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXCEPTION_HANDLER__EANNOTATIONS :
@@ -556,6 +571,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.EXCEPTION_HANDLER__PROTECTED_NODE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutableNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutableNodeImpl.java
index 954c0df..2c183c8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutableNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutableNodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutableNodeImpl.java,v 1.18 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ExecutableNodeImpl.java,v 1.19 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -17,6 +17,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -29,9 +30,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.ExecutableNode;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -63,7 +70,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList handlers = null;
+	protected EList<ExceptionHandler> handlers = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -79,6 +86,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXECUTABLE_NODE;
 	}
@@ -88,23 +96,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.EXECUTABLE_NODE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.EXECUTABLE_NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXECUTABLE_NODE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -113,9 +123,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getHandlers() {
+	public EList<ExceptionHandler> getHandlers() {
 		if (handlers == null) {
-			handlers = new EObjectContainmentWithInverseEList.Resolving(
+			handlers = new EObjectContainmentWithInverseEList.Resolving<ExceptionHandler>(
 				ExceptionHandler.class, this,
 				UMLPackage.EXECUTABLE_NODE__HANDLER,
 				UMLPackage.EXCEPTION_HANDLER__PROTECTED_NODE);
@@ -139,15 +149,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_STRUCTURED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -158,19 +170,20 @@
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetActivity((Activity) otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInInterruptibleRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getHandlers())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -180,18 +193,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_STRUCTURED_NODE :
@@ -199,19 +213,19 @@
 			case UMLPackage.EXECUTABLE_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.EXECUTABLE_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXECUTABLE_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -222,6 +236,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
@@ -289,15 +304,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__NAME :
 				setName((String) newValue);
@@ -307,7 +326,8 @@
 				return;
 			case UMLPackage.EXECUTABLE_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -323,27 +343,34 @@
 				return;
 			case UMLPackage.EXECUTABLE_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.EXECUTABLE_NODE__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -354,6 +381,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
@@ -410,6 +438,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTABLE_NODE__EANNOTATIONS :
@@ -482,6 +511,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.EXECUTABLE_NODE__HANDLER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEnvironmentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEnvironmentImpl.java
index e61c6bd..6650667 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEnvironmentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEnvironmentImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionEnvironmentImpl.java,v 1.2 2005/11/23 20:01:20 khussey Exp $
+ * $Id: ExecutionEnvironmentImpl.java,v 1.3 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXECUTION_ENVIRONMENT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEventImpl.java
index 5bf01a1..508f2b8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionEventImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: ExecutionEventImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXECUTION_EVENT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionOccurrenceSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionOccurrenceSpecificationImpl.java
index aabc6d8..77a6e65 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionOccurrenceSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionOccurrenceSpecificationImpl.java
@@ -8,24 +8,29 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionOccurrenceSpecificationImpl.java,v 1.13 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ExecutionOccurrenceSpecificationImpl.java,v 1.14 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Event;
 import org.eclipse.uml2.uml.ExecutionEvent;
 import org.eclipse.uml2.uml.ExecutionOccurrenceSpecification;
 import org.eclipse.uml2.uml.ExecutionSpecification;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -72,6 +77,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXECUTION_OCCURRENCE_SPECIFICATION;
 	}
@@ -166,6 +172,7 @@
 
 	}
 
+	@Override
 	public void setEvent(Event newEvent) {
 
 		if (newEvent != null && !(newEvent instanceof ExecutionEvent)) {
@@ -189,6 +196,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -250,15 +258,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -268,18 +280,20 @@
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -289,14 +303,16 @@
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__TO_BEFORE :
 				getToBefores().clear();
-				getToBefores().addAll((Collection) newValue);
+				getToBefores().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EVENT :
 				setEvent((Event) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__TO_AFTER :
 				getToAfters().clear();
-				getToAfters().addAll((Collection) newValue);
+				getToAfters().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EXECUTION :
 				setExecution((ExecutionSpecification) newValue);
@@ -310,6 +326,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -363,6 +380,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionSpecificationImpl.java
index 3b0612c..ef2244a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExecutionSpecificationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionSpecificationImpl.java,v 1.13 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ExecutionSpecificationImpl.java,v 1.14 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,19 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ExecutionSpecification;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.OccurrenceSpecification;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -86,6 +91,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXECUTION_SPECIFICATION;
 	}
@@ -181,7 +187,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameLifeline(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameLifeline(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExecutionSpecificationOperations.validateSameLifeline(this,
 			diagnostics, context);
 	}
@@ -191,6 +198,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -248,15 +256,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -266,18 +278,20 @@
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.EXECUTION_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -300,6 +314,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_SPECIFICATION__EANNOTATIONS :
@@ -347,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXECUTION_SPECIFICATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionNodeImpl.java
index bf21d48..9a81f45 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionNodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpansionNodeImpl.java,v 1.16 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ExpansionNodeImpl.java,v 1.17 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,6 +16,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -24,10 +25,17 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ExpansionNode;
 import org.eclipse.uml2.uml.ExpansionRegion;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
+import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -87,6 +95,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXPANSION_NODE;
 	}
@@ -250,15 +259,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_STRUCTURED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -269,17 +280,17 @@
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetActivity((Activity) otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInInterruptibleRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__REGION_AS_OUTPUT :
 				if (regionAsOutput != null)
 					msgs = ((InternalEObject) regionAsOutput).eInverseRemove(
@@ -301,18 +312,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_STRUCTURED_NODE :
@@ -320,16 +332,16 @@
 			case UMLPackage.EXPANSION_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.EXPANSION_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_NODE__UPPER_BOUND :
 				return basicSetUpperBound(null, msgs);
@@ -346,6 +358,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
@@ -439,15 +452,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__NAME :
 				setName((String) newValue);
@@ -457,7 +474,8 @@
 				return;
 			case UMLPackage.EXPANSION_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -473,23 +491,29 @@
 				return;
 			case UMLPackage.EXPANSION_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__TYPE :
 				setType((Type) newValue);
@@ -505,7 +529,7 @@
 				return;
 			case UMLPackage.EXPANSION_NODE__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.EXPANSION_NODE__SELECTION :
 				setSelection((Behavior) newValue);
@@ -525,6 +549,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
@@ -602,6 +627,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_NODE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionRegionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionRegionImpl.java
index adb76c2..09ad270 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionRegionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpansionRegionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpansionRegionImpl.java,v 1.17 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ExpansionRegionImpl.java,v 1.18 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,13 +32,24 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.ExpansionKind;
 import org.eclipse.uml2.uml.ExpansionNode;
 import org.eclipse.uml2.uml.ExpansionRegion;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.Variable;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.ExpansionRegionOperations;
@@ -90,7 +101,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inputElements = null;
+	protected EList<ExpansionNode> inputElements = null;
 
 	/**
 	 * The cached value of the '{@link #getOutputElements() <em>Output Element</em>}' reference list.
@@ -100,7 +111,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList outputElements = null;
+	protected EList<ExpansionNode> outputElements = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -116,6 +127,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXPANSION_REGION;
 	}
@@ -151,9 +163,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputElements() {
+	public EList<ExpansionNode> getInputElements() {
 		if (inputElements == null) {
-			inputElements = new EObjectWithInverseResolvingEList(
+			inputElements = new EObjectWithInverseResolvingEList<ExpansionNode>(
 				ExpansionNode.class, this,
 				UMLPackage.EXPANSION_REGION__INPUT_ELEMENT,
 				UMLPackage.EXPANSION_NODE__REGION_AS_INPUT);
@@ -177,9 +189,7 @@
 	 */
 	public ExpansionNode getInputElement(String name, Type type,
 			boolean ignoreCase) {
-		inputElementLoop : for (Iterator i = getInputElements().iterator(); i
-			.hasNext();) {
-			ExpansionNode inputElement = (ExpansionNode) i.next();
+		inputElementLoop : for (ExpansionNode inputElement : getInputElements()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(inputElement.getName())
 				: name.equals(inputElement.getName())))
@@ -196,9 +206,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputElements() {
+	public EList<ExpansionNode> getOutputElements() {
 		if (outputElements == null) {
-			outputElements = new EObjectWithInverseResolvingEList(
+			outputElements = new EObjectWithInverseResolvingEList<ExpansionNode>(
 				ExpansionNode.class, this,
 				UMLPackage.EXPANSION_REGION__OUTPUT_ELEMENT,
 				UMLPackage.EXPANSION_NODE__REGION_AS_OUTPUT);
@@ -222,9 +232,7 @@
 	 */
 	public ExpansionNode getOutputElement(String name, Type type,
 			boolean ignoreCase) {
-		outputElementLoop : for (Iterator i = getOutputElements().iterator(); i
-			.hasNext();) {
-			ExpansionNode outputElement = (ExpansionNode) i.next();
+		outputElementLoop : for (ExpansionNode outputElement : getOutputElements()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(outputElement.getName())
 				: name.equals(outputElement.getName())))
@@ -242,7 +250,7 @@
 	 * @generated
 	 */
 	public boolean validateExpansionNodes(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ExpansionRegionOperations.validateExpansionNodes(this,
 			diagnostics, context);
 	}
@@ -252,15 +260,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_STRUCTURED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -271,45 +281,48 @@
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetActivity((Activity) otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInInterruptibleRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__HANDLER :
-				return ((InternalEList) getHandlers()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getHandlers())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_ACTIVITY :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetInActivity((Activity) otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__VARIABLE :
-				return ((InternalEList) getVariables())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getVariables())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__EDGE :
-				return ((InternalEList) getEdges()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEdges())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__NODE :
-				return ((InternalEList) getNodes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getNodes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__INPUT_ELEMENT :
-				return ((InternalEList) getInputElements()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInputElements())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OUTPUT_ELEMENT :
-				return ((InternalEList) getOutputElements()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutputElements())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -319,18 +332,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_STRUCTURED_NODE :
@@ -338,49 +352,51 @@
 			case UMLPackage.EXPANSION_REGION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.EXPANSION_REGION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.EXPANSION_REGION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.EXPANSION_REGION__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.EXPANSION_REGION__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.EXPANSION_REGION__INPUT_ELEMENT :
-				return ((InternalEList) getInputElements()).basicRemove(
+				return ((InternalEList<?>) getInputElements()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPANSION_REGION__OUTPUT_ELEMENT :
-				return ((InternalEList) getOutputElements()).basicRemove(
+				return ((InternalEList<?>) getOutputElements()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -391,6 +407,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
@@ -512,15 +529,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__NAME :
 				setName((String) newValue);
@@ -530,7 +551,8 @@
 				return;
 			case UMLPackage.EXPANSION_REGION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -546,76 +568,93 @@
 				return;
 			case UMLPackage.EXPANSION_REGION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__MUST_ISOLATE :
 				setMustIsolate(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.EXPANSION_REGION__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__MODE :
 				setMode((ExpansionKind) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__INPUT_ELEMENT :
 				getInputElements().clear();
-				getInputElements().addAll((Collection) newValue);
+				getInputElements().addAll(
+					(Collection<? extends ExpansionNode>) newValue);
 				return;
 			case UMLPackage.EXPANSION_REGION__OUTPUT_ELEMENT :
 				getOutputElements().clear();
-				getOutputElements().addAll((Collection) newValue);
+				getOutputElements().addAll(
+					(Collection<? extends ExpansionNode>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -626,6 +665,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
@@ -721,6 +761,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPANSION_REGION__EANNOTATIONS :
@@ -828,6 +869,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpressionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpressionImpl.java
index 911d654..589d4ad 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpressionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExpressionImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpressionImpl.java,v 1.18 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ExpressionImpl.java,v 1.19 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,6 +32,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Expression;
 import org.eclipse.uml2.uml.StringExpression;
@@ -97,7 +99,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList operands = null;
+	protected EList<ValueSpecification> operands = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -113,6 +115,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXPRESSION;
 	}
@@ -122,23 +125,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.EXPRESSION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.EXPRESSION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXPRESSION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -199,9 +204,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOperands() {
+	public EList<ValueSpecification> getOperands() {
 		if (operands == null) {
-			operands = new EObjectContainmentEList.Resolving(
+			operands = new EObjectContainmentEList.Resolving<ValueSpecification>(
 				ValueSpecification.class, this, UMLPackage.EXPRESSION__OPERAND);
 		}
 		return operands;
@@ -239,8 +244,7 @@
 	 */
 	public ValueSpecification getOperand(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		operandLoop : for (Iterator i = getOperands().iterator(); i.hasNext();) {
-			ValueSpecification operand = (ValueSpecification) i.next();
+		operandLoop : for (ValueSpecification operand : getOperands()) {
 			if (eClass != null && !eClass.isInstance(operand))
 				continue operandLoop;
 			if (name != null && !(ignoreCase
@@ -261,18 +265,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXPRESSION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPRESSION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXPRESSION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXPRESSION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXPRESSION__OWNING_TEMPLATE_PARAMETER :
@@ -280,7 +285,7 @@
 			case UMLPackage.EXPRESSION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.EXPRESSION__OPERAND :
-				return ((InternalEList) getOperands()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getOperands()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -291,6 +296,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXPRESSION__EANNOTATIONS :
@@ -344,15 +350,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXPRESSION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXPRESSION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXPRESSION__NAME :
 				setName((String) newValue);
@@ -362,7 +372,8 @@
 				return;
 			case UMLPackage.EXPRESSION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXPRESSION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -381,7 +392,8 @@
 				return;
 			case UMLPackage.EXPRESSION__OPERAND :
 				getOperands().clear();
-				getOperands().addAll((Collection) newValue);
+				getOperands().addAll(
+					(Collection<? extends ValueSpecification>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -392,6 +404,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPRESSION__EANNOTATIONS :
@@ -436,6 +449,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXPRESSION__EANNOTATIONS :
@@ -480,6 +494,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -511,6 +526,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.EXPRESSION__OPERAND);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtendImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtendImpl.java
index 3a77c47..b9a87e0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtendImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtendImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtendImpl.java,v 1.20 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ExtendImpl.java,v 1.21 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Extend;
@@ -102,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList extensionLocations = null;
+	protected EList<ExtensionPoint> extensionLocations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -118,6 +120,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXTEND;
 	}
@@ -127,24 +130,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.EXTEND__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXTEND__RELATED_ELEMENT, RELATED_ELEMENT_ESUBSETS);
 	}
 
@@ -153,22 +158,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.EXTEND__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.EXTEND__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXTEND__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -177,22 +184,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.EXTEND__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.EXTEND__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXTEND__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -201,23 +210,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.EXTEND__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.EXTEND__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.EXTEND__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -377,9 +387,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtensionLocations() {
+	public EList<ExtensionPoint> getExtensionLocations() {
 		if (extensionLocations == null) {
-			extensionLocations = new EObjectResolvingEList(
+			extensionLocations = new EObjectResolvingEList<ExtensionPoint>(
 				ExtensionPoint.class, this,
 				UMLPackage.EXTEND__EXTENSION_LOCATION);
 		}
@@ -401,9 +411,7 @@
 	 * @generated
 	 */
 	public ExtensionPoint getExtensionLocation(String name, boolean ignoreCase) {
-		extensionLocationLoop : for (Iterator i = getExtensionLocations()
-			.iterator(); i.hasNext();) {
-			ExtensionPoint extensionLocation = (ExtensionPoint) i.next();
+		extensionLocationLoop : for (ExtensionPoint extensionLocation : getExtensionLocations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(extensionLocation.getName())
 				: name.equals(extensionLocation.getName())))
@@ -481,7 +489,7 @@
 	 * @generated
 	 */
 	public boolean validateExtensionPoints(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ExtendOperations.validateExtensionPoints(this, diagnostics,
 			context);
 	}
@@ -491,15 +499,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXTEND__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXTEND__EXTENSION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -513,18 +523,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXTEND__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXTEND__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXTEND__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXTEND__CONDITION :
@@ -540,6 +551,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -555,6 +567,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
@@ -612,15 +625,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXTEND__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXTEND__NAME :
 				setName((String) newValue);
@@ -630,7 +647,8 @@
 				return;
 			case UMLPackage.EXTEND__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXTEND__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -643,7 +661,8 @@
 				return;
 			case UMLPackage.EXTEND__EXTENSION_LOCATION :
 				getExtensionLocations().clear();
-				getExtensionLocations().addAll((Collection) newValue);
+				getExtensionLocations().addAll(
+					(Collection<? extends ExtensionPoint>) newValue);
 				return;
 			case UMLPackage.EXTEND__EXTENSION :
 				setExtension((UseCase) newValue);
@@ -657,6 +676,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
@@ -698,6 +718,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTEND__EANNOTATIONS :
@@ -747,7 +768,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.EXTEND__RELATED_ELEMENT :
@@ -774,7 +796,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
@@ -871,6 +894,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.EXTEND__CONDITION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionEndImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionEndImpl.java
index ef4fab5..8fb58fc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionEndImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionEndImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionEndImpl.java,v 1.20 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ExtensionEndImpl.java,v 1.21 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -61,6 +61,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXTENSION_END;
 	}
@@ -150,7 +151,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExtensionEndOperations.validateMultiplicity(this, diagnostics,
 			context);
 	}
@@ -160,7 +162,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAggregation(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAggregation(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExtensionEndOperations.validateAggregation(this, diagnostics,
 			context);
 	}
@@ -179,6 +182,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_END__EANNOTATIONS :
@@ -328,6 +332,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_END__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionImpl.java
index 3d2090c..dc50d3d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionImpl.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionImpl.java,v 1.25 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ExtensionImpl.java,v 1.26 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
@@ -77,6 +76,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXTENSION;
 	}
@@ -86,18 +86,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedEndsGen() {
+	public EList<Property> getOwnedEndsGen() {
 		if (ownedEnds == null) {
-			ownedEnds = new EObjectContainmentWithInverseEList.Resolving(
+			ownedEnds = new EObjectContainmentWithInverseEList.Resolving<Property>(
 				ExtensionEnd.class, this, UMLPackage.EXTENSION__OWNED_END,
 				UMLPackage.PROPERTY__OWNING_ASSOCIATION);
 		}
 		return ownedEnds;
 	}
 
-	public EList getOwnedEnds() {
+	@Override
+	public EList<Property> getOwnedEnds() {
 		if (ownedEnds == null) {
-			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedEnds = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Property>(
 				ExtensionEnd.class, this, UMLPackage.EXTENSION__OWNED_END,
 				OWNED_END_ESUPERSETS, OWNED_END_ESUBSETS,
 				UMLPackage.PROPERTY__OWNING_ASSOCIATION);
@@ -110,6 +111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property createOwnedEnd(String name, Type type) {
 		ExtensionEnd newOwnedEnd = (ExtensionEnd) create(UMLPackage.Literals.EXTENSION_END);
 		getOwnedEnds().add(newOwnedEnd);
@@ -125,6 +127,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Property getOwnedEnd(String name, Type type) {
 		return getOwnedEnd(name, type, false, false);
 	}
@@ -136,8 +139,7 @@
 	 */
 	public Property getOwnedEnd(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedEndLoop : for (Iterator i = getOwnedEnds().iterator(); i.hasNext();) {
-			ExtensionEnd ownedEnd = (ExtensionEnd) i.next();
+		ownedEndLoop : for (Property ownedEnd : getOwnedEnds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedEnd.getName())
 				: name.equals(ownedEnd.getName())))
@@ -197,7 +199,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNonOwnedEnd(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNonOwnedEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExtensionOperations.validateNonOwnedEnd(this, diagnostics,
 			context);
 	}
@@ -207,7 +210,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateIsBinary(DiagnosticChain diagnostics, Map context) {
+	public boolean validateIsBinary(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExtensionOperations.validateIsBinary(this, diagnostics, context);
 	}
 
@@ -243,6 +247,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION__EANNOTATIONS :
@@ -370,6 +375,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionPointImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionPointImpl.java
index 325b7fd..1d19f1c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionPointImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ExtensionPointImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionPointImpl.java,v 1.14 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ExtensionPointImpl.java,v 1.15 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,6 +29,8 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ExtensionPoint;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -67,6 +70,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.EXTENSION_POINT;
 	}
@@ -138,7 +142,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMustHaveName(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ExtensionPointOperations.validateMustHaveName(this, diagnostics,
 			context);
 	}
@@ -148,15 +153,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXTENSION_POINT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.EXTENSION_POINT__USE_CASE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -170,18 +177,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXTENSION_POINT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.EXTENSION_POINT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.EXTENSION_POINT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.EXTENSION_POINT__USE_CASE :
@@ -195,6 +203,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -210,6 +219,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
@@ -259,15 +269,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.EXTENSION_POINT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.EXTENSION_POINT__NAME :
 				setName((String) newValue);
@@ -277,7 +291,8 @@
 				return;
 			case UMLPackage.EXTENSION_POINT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.EXTENSION_POINT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -297,6 +312,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
@@ -332,6 +348,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.EXTENSION_POINT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FeatureImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FeatureImpl.java
index 4c05fdc..4df2fbb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FeatureImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FeatureImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FeatureImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: FeatureImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
@@ -27,6 +27,8 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Feature;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -84,6 +86,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FEATURE;
 	}
@@ -93,23 +96,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeaturingClassifiersGen() {
+	public EList<Classifier> getFeaturingClassifiersGen() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.FEATURE__FEATURING_CLASSIFIER, null));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class, this,
+							UMLPackage.FEATURE__FEATURING_CLASSIFIER, null));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.FEATURE__FEATURING_CLASSIFIER, null);
 	}
 
@@ -119,23 +127,28 @@
 	 */
 	protected static final int[] FEATURING_CLASSIFIER_ESUBSETS = new int[]{UMLPackage.FEATURE__NAMESPACE};
 
-	public EList getFeaturingClassifiers() {
+	public EList<Classifier> getFeaturingClassifiers() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.FEATURE__FEATURING_CLASSIFIER,
-						FEATURING_CLASSIFIER_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class, this,
+							UMLPackage.FEATURE__FEATURING_CLASSIFIER,
+							FEATURING_CLASSIFIER_ESUBSETS));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.FEATURE__FEATURING_CLASSIFIER,
 			FEATURING_CLASSIFIER_ESUBSETS);
 	}
@@ -156,9 +169,7 @@
 	 */
 	public Classifier getFeaturingClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		featuringClassifierLoop : for (Iterator i = getFeaturingClassifiers()
-			.iterator(); i.hasNext();) {
-			Classifier featuringClassifier = (Classifier) i.next();
+		featuringClassifierLoop : for (Classifier featuringClassifier : getFeaturingClassifiers()) {
 			if (eClass != null && !eClass.isInstance(featuringClassifier))
 				continue featuringClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -202,6 +213,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.FEATURE__EANNOTATIONS :
@@ -253,15 +265,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.FEATURE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.FEATURE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.FEATURE__NAME :
 				setName((String) newValue);
@@ -271,7 +287,8 @@
 				return;
 			case UMLPackage.FEATURE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.FEATURE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -291,6 +308,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.FEATURE__EANNOTATIONS :
@@ -326,6 +344,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.FEATURE__EANNOTATIONS :
@@ -370,6 +389,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalNodeImpl.java
index 2d841ba..2ceda98 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalNodeImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: FinalNodeImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FINAL_NODE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateNoOutgoingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FinalNodeOperations.validateNoOutgoingEdges(this, diagnostics,
 			context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalStateImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalStateImpl.java
index 750927f..8378934 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalStateImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FinalStateImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalStateImpl.java,v 1.3 2006/02/23 17:20:47 khussey Exp $
+ * $Id: FinalStateImpl.java,v 1.4 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FINAL_STATE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateNoOutgoingTransitions(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FinalStateOperations.validateNoOutgoingTransitions(this,
 			diagnostics, context);
 	}
@@ -70,7 +71,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoRegions(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoRegions(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return FinalStateOperations.validateNoRegions(this, diagnostics,
 			context);
 	}
@@ -81,7 +83,7 @@
 	 * @generated
 	 */
 	public boolean validateCannotReferenceSubmachine(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return FinalStateOperations.validateCannotReferenceSubmachine(this,
 			diagnostics, context);
 	}
@@ -92,7 +94,7 @@
 	 * @generated
 	 */
 	public boolean validateNoEntryBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FinalStateOperations.validateNoEntryBehavior(this, diagnostics,
 			context);
 	}
@@ -103,7 +105,7 @@
 	 * @generated
 	 */
 	public boolean validateNoExitBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FinalStateOperations.validateNoExitBehavior(this, diagnostics,
 			context);
 	}
@@ -114,7 +116,7 @@
 	 * @generated
 	 */
 	public boolean validateNoStateBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FinalStateOperations.validateNoStateBehavior(this, diagnostics,
 			context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FlowFinalNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FlowFinalNodeImpl.java
index cd0bc0e..fc12222 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FlowFinalNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FlowFinalNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FlowFinalNodeImpl.java,v 1.2 2005/11/23 20:01:15 khussey Exp $
+ * $Id: FlowFinalNodeImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FLOW_FINAL_NODE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ForkNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ForkNodeImpl.java
index cdfc67b..c7d1629 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ForkNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ForkNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ForkNodeImpl.java,v 1.2 2005/11/23 20:01:17 khussey Exp $
+ * $Id: ForkNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FORK_NODE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateOneIncomingEdge(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ForkNodeOperations.validateOneIncomingEdge(this, diagnostics,
 			context);
 	}
@@ -70,7 +71,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ForkNodeOperations.validateEdges(this, diagnostics, context);
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FunctionBehaviorImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FunctionBehaviorImpl.java
index 7284bf5..84da87e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FunctionBehaviorImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/FunctionBehaviorImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FunctionBehaviorImpl.java,v 1.2 2005/11/23 20:01:20 khussey Exp $
+ * $Id: FunctionBehaviorImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.FUNCTION_BEHAVIOR;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateOneOutputParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FunctionBehaviorOperations.validateOneOutputParameter(this,
 			diagnostics, context);
 	}
@@ -71,7 +72,7 @@
 	 * @generated
 	 */
 	public boolean validateTypesOfParameters(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return FunctionBehaviorOperations.validateTypesOfParameters(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GateImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GateImpl.java
index dc5a5df..98160ea 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GateImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GateImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GateImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: GateImpl.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.GATE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateMessagesActualGate(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return GateOperations.validateMessagesActualGate(this, diagnostics,
 			context);
 	}
@@ -71,7 +72,7 @@
 	 * @generated
 	 */
 	public boolean validateMessagesCombinedFragment(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return GateOperations.validateMessagesCombinedFragment(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralOrderingImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralOrderingImpl.java
index 6460267..72edb88 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralOrderingImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralOrderingImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralOrderingImpl.java,v 1.12 2006/11/14 18:02:18 khussey Exp $
+ * $Id: GeneralOrderingImpl.java,v 1.13 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,6 +16,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -23,6 +24,8 @@
 
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.OccurrenceSpecification;
 import org.eclipse.uml2.uml.StringExpression;
@@ -81,6 +84,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.GENERAL_ORDERING;
 	}
@@ -240,15 +244,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERAL_ORDERING__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERAL_ORDERING__BEFORE :
 				if (before != null)
 					msgs = ((InternalEObject) before).eInverseRemove(this,
@@ -270,18 +276,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERAL_ORDERING__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERAL_ORDERING__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.GENERAL_ORDERING__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.GENERAL_ORDERING__BEFORE :
@@ -297,6 +304,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
@@ -342,15 +350,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.GENERAL_ORDERING__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.GENERAL_ORDERING__NAME :
 				setName((String) newValue);
@@ -360,7 +372,8 @@
 				return;
 			case UMLPackage.GENERAL_ORDERING__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.GENERAL_ORDERING__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -380,6 +393,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
@@ -415,6 +429,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERAL_ORDERING__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationImpl.java
index 244464f..ec791f4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralizationImpl.java,v 1.15 2006/11/14 18:02:20 khussey Exp $
+ * $Id: GeneralizationImpl.java,v 1.16 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -38,6 +38,7 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Generalization;
 import org.eclipse.uml2.uml.GeneralizationSet;
@@ -115,7 +116,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalizationSets = null;
+	protected EList<GeneralizationSet> generalizationSets = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -131,6 +132,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.GENERALIZATION;
 	}
@@ -140,22 +142,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.GENERALIZATION__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.GENERALIZATION__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.GENERALIZATION__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -164,22 +168,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.GENERALIZATION__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.GENERALIZATION__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.GENERALIZATION__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -289,9 +295,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralizationSets() {
+	public EList<GeneralizationSet> getGeneralizationSets() {
 		if (generalizationSets == null) {
-			generalizationSets = new EObjectWithInverseResolvingEList.ManyInverse(
+			generalizationSets = new EObjectWithInverseResolvingEList.ManyInverse<GeneralizationSet>(
 				GeneralizationSet.class, this,
 				UMLPackage.GENERALIZATION__GENERALIZATION_SET,
 				UMLPackage.GENERALIZATION_SET__GENERALIZATION);
@@ -315,9 +321,7 @@
 	 */
 	public GeneralizationSet getGeneralizationSet(String name,
 			boolean ignoreCase) {
-		generalizationSetLoop : for (Iterator i = getGeneralizationSets()
-			.iterator(); i.hasNext();) {
-			GeneralizationSet generalizationSet = (GeneralizationSet) i.next();
+		generalizationSetLoop : for (GeneralizationSet generalizationSet : getGeneralizationSets()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(generalizationSet.getName())
 				: name.equals(generalizationSet.getName())))
@@ -396,7 +400,7 @@
 	 * @generated
 	 */
 	public boolean validateGeneralizationSameClassifier(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return GeneralizationOperations.validateGeneralizationSameClassifier(
 			this, diagnostics, context);
 	}
@@ -406,15 +410,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION__GENERALIZATION_SET :
-				return ((InternalEList) getGeneralizationSets()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizationSets())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION__SPECIFIC :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -428,18 +434,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERALIZATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERALIZATION__GENERALIZATION_SET :
-				return ((InternalEList) getGeneralizationSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getGeneralizationSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION__SPECIFIC :
 				return basicSetSpecific(null, msgs);
 		}
@@ -451,6 +458,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -467,6 +475,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
@@ -508,15 +517,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION__IS_SUBSTITUTABLE :
 				setIsSubstitutable(((Boolean) newValue).booleanValue());
@@ -526,7 +539,8 @@
 				return;
 			case UMLPackage.GENERALIZATION__GENERALIZATION_SET :
 				getGeneralizationSets().clear();
-				getGeneralizationSets().addAll((Collection) newValue);
+				getGeneralizationSets().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION__SPECIFIC :
 				setSpecific((Classifier) newValue);
@@ -540,6 +554,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
@@ -569,6 +584,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION__EANNOTATIONS :
@@ -603,6 +619,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -632,6 +649,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.GENERALIZATION__GENERAL);
@@ -664,6 +682,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.GENERALIZATION__SPECIFIC);
@@ -688,6 +707,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.GENERALIZATION__SPECIFIC);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationSetImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationSetImpl.java
index 6dfe5fc..e1577a7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationSetImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/GeneralizationSetImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralizationSetImpl.java,v 1.14 2006/11/14 18:02:16 khussey Exp $
+ * $Id: GeneralizationSetImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,6 +32,8 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Generalization;
 import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.StringExpression;
@@ -119,7 +121,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalizations = null;
+	protected EList<Generalization> generalizations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -135,6 +137,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.GENERALIZATION_SET;
 	}
@@ -277,9 +280,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralizations() {
+	public EList<Generalization> getGeneralizations() {
 		if (generalizations == null) {
-			generalizations = new EObjectWithInverseResolvingEList.ManyInverse(
+			generalizations = new EObjectWithInverseResolvingEList.ManyInverse<Generalization>(
 				Generalization.class, this,
 				UMLPackage.GENERALIZATION_SET__GENERALIZATION,
 				UMLPackage.GENERALIZATION__GENERALIZATION_SET);
@@ -293,9 +296,7 @@
 	 * @generated
 	 */
 	public Generalization getGeneralization(Classifier general) {
-		generalizationLoop : for (Iterator i = getGeneralizations().iterator(); i
-			.hasNext();) {
-			Generalization generalization = (Generalization) i.next();
+		generalizationLoop : for (Generalization generalization : getGeneralizations()) {
 			if (general != null && !general.equals(generalization.getGeneral()))
 				continue generalizationLoop;
 			return generalization;
@@ -309,7 +310,7 @@
 	 * @generated
 	 */
 	public boolean validateGeneralizationSameClassifier(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return GeneralizationSetOperations
 			.validateGeneralizationSameClassifier(this, diagnostics, context);
 	}
@@ -320,7 +321,7 @@
 	 * @generated
 	 */
 	public boolean validateMapsToGeneralizationSet(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return GeneralizationSetOperations.validateMapsToGeneralizationSet(
 			this, diagnostics, context);
 	}
@@ -330,15 +331,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -359,8 +362,8 @@
 						Classifier.class, msgs);
 				return basicSetPowertype((Classifier) otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -370,18 +373,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.GENERALIZATION_SET__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.GENERALIZATION_SET__OWNING_TEMPLATE_PARAMETER :
@@ -391,7 +395,7 @@
 			case UMLPackage.GENERALIZATION_SET__POWERTYPE :
 				return basicSetPowertype(null, msgs);
 			case UMLPackage.GENERALIZATION_SET__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -402,6 +406,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
@@ -461,15 +466,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION_SET__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION_SET__NAME :
 				setName((String) newValue);
@@ -479,7 +488,8 @@
 				return;
 			case UMLPackage.GENERALIZATION_SET__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.GENERALIZATION_SET__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -501,7 +511,8 @@
 				return;
 			case UMLPackage.GENERALIZATION_SET__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -512,6 +523,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
@@ -559,6 +571,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.GENERALIZATION_SET__EANNOTATIONS :
@@ -605,6 +618,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ImageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ImageImpl.java
index 4275c29..6ee9709 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ImageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ImageImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ImageImpl.java,v 1.5 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ImageImpl.java,v 1.6 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,10 +16,12 @@
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Image;
 import org.eclipse.uml2.uml.UMLPackage;
 
@@ -143,6 +145,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.IMAGE;
 	}
@@ -306,6 +309,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.IMAGE__EANNOTATIONS :
@@ -333,15 +337,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.IMAGE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.IMAGE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.IMAGE__CONTENT :
 				setContent((String) newValue);
@@ -361,6 +369,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.IMAGE__EANNOTATIONS :
@@ -387,6 +396,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.IMAGE__EANNOTATIONS :
@@ -412,6 +422,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IncludeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IncludeImpl.java
index 3be6e01..d70d01e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IncludeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IncludeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: IncludeImpl.java,v 1.15 2006/11/14 18:02:18 khussey Exp $
+ * $Id: IncludeImpl.java,v 1.16 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,6 +32,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Include;
@@ -85,6 +88,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INCLUDE;
 	}
@@ -94,24 +98,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.INCLUDE__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INCLUDE__RELATED_ELEMENT, RELATED_ELEMENT_ESUBSETS);
 	}
 
@@ -120,22 +126,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.INCLUDE__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.INCLUDE__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INCLUDE__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -144,22 +152,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.INCLUDE__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.INCLUDE__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INCLUDE__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -273,15 +283,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INCLUDE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INCLUDE__INCLUDING_CASE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -295,18 +307,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INCLUDE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INCLUDE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INCLUDE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INCLUDE__INCLUDING_CASE :
@@ -320,6 +333,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -335,6 +349,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
@@ -386,15 +401,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INCLUDE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INCLUDE__NAME :
 				setName((String) newValue);
@@ -404,7 +423,8 @@
 				return;
 			case UMLPackage.INCLUDE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INCLUDE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -424,6 +444,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
@@ -459,6 +480,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INCLUDE__EANNOTATIONS :
@@ -503,7 +525,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.INCLUDE__RELATED_ELEMENT :
@@ -530,7 +553,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationFlowImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationFlowImpl.java
index 7e9c48e..a50abbd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationFlowImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationFlowImpl.java
@@ -8,18 +8,18 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationFlowImpl.java,v 1.13 2006/11/14 18:02:15 khussey Exp $
+ * $Id: InformationFlowImpl.java,v 1.14 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.resource.Resource;
 
@@ -30,7 +30,9 @@
 
 import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DirectedRelationship;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InformationFlow;
@@ -78,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList realizations = null;
+	protected EList<Relationship> realizations = null;
 
 	/**
 	 * The cached value of the '{@link #getConveyeds() <em>Conveyed</em>}' reference list.
@@ -88,7 +90,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList conveyeds = null;
+	protected EList<Classifier> conveyeds = null;
 
 	/**
 	 * The cached value of the '{@link #getInformationSources() <em>Information Source</em>}' reference list.
@@ -98,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList informationSources = null;
+	protected EList<NamedElement> informationSources = null;
 
 	/**
 	 * The cached value of the '{@link #getInformationTargets() <em>Information Target</em>}' reference list.
@@ -108,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList informationTargets = null;
+	protected EList<NamedElement> informationTargets = null;
 
 	/**
 	 * The cached value of the '{@link #getRealizingActivityEdges() <em>Realizing Activity Edge</em>}' reference list.
@@ -118,7 +120,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList realizingActivityEdges = null;
+	protected EList<ActivityEdge> realizingActivityEdges = null;
 
 	/**
 	 * The cached value of the '{@link #getRealizingConnectors() <em>Realizing Connector</em>}' reference list.
@@ -128,7 +130,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList realizingConnectors = null;
+	protected EList<Connector> realizingConnectors = null;
 
 	/**
 	 * The cached value of the '{@link #getRealizingMessages() <em>Realizing Message</em>}' reference list.
@@ -138,7 +140,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList realizingMessages = null;
+	protected EList<Message> realizingMessages = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -154,6 +156,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INFORMATION_FLOW;
 	}
@@ -163,24 +166,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.INFORMATION_FLOW__RELATED_ELEMENT,
 						RELATED_ELEMENT_ESUBSETS));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INFORMATION_FLOW__RELATED_ELEMENT,
 			RELATED_ELEMENT_ESUBSETS);
 	}
@@ -190,22 +195,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.INFORMATION_FLOW__SOURCE, SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INFORMATION_FLOW__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -214,22 +221,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.INFORMATION_FLOW__TARGET, TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INFORMATION_FLOW__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -238,9 +247,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRealizations() {
+	public EList<Relationship> getRealizations() {
 		if (realizations == null) {
-			realizations = new EObjectResolvingEList(Relationship.class, this,
+			realizations = new EObjectResolvingEList<Relationship>(
+				Relationship.class, this,
 				UMLPackage.INFORMATION_FLOW__REALIZATION);
 		}
 		return realizations;
@@ -251,10 +261,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConveyeds() {
+	public EList<Classifier> getConveyeds() {
 		if (conveyeds == null) {
-			conveyeds = new EObjectResolvingEList(Classifier.class, this,
-				UMLPackage.INFORMATION_FLOW__CONVEYED);
+			conveyeds = new EObjectResolvingEList<Classifier>(Classifier.class,
+				this, UMLPackage.INFORMATION_FLOW__CONVEYED);
 		}
 		return conveyeds;
 	}
@@ -274,8 +284,7 @@
 	 * @generated
 	 */
 	public Classifier getConveyed(String name, boolean ignoreCase, EClass eClass) {
-		conveyedLoop : for (Iterator i = getConveyeds().iterator(); i.hasNext();) {
-			Classifier conveyed = (Classifier) i.next();
+		conveyedLoop : for (Classifier conveyed : getConveyeds()) {
 			if (eClass != null && !eClass.isInstance(conveyed))
 				continue conveyedLoop;
 			if (name != null && !(ignoreCase
@@ -292,10 +301,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInformationSources() {
+	public EList<NamedElement> getInformationSources() {
 		if (informationSources == null) {
-			informationSources = new EObjectResolvingEList(NamedElement.class,
-				this, UMLPackage.INFORMATION_FLOW__INFORMATION_SOURCE);
+			informationSources = new EObjectResolvingEList<NamedElement>(
+				NamedElement.class, this,
+				UMLPackage.INFORMATION_FLOW__INFORMATION_SOURCE);
 		}
 		return informationSources;
 	}
@@ -316,9 +326,7 @@
 	 */
 	public NamedElement getInformationSource(String name, boolean ignoreCase,
 			EClass eClass) {
-		informationSourceLoop : for (Iterator i = getInformationSources()
-			.iterator(); i.hasNext();) {
-			NamedElement informationSource = (NamedElement) i.next();
+		informationSourceLoop : for (NamedElement informationSource : getInformationSources()) {
 			if (eClass != null && !eClass.isInstance(informationSource))
 				continue informationSourceLoop;
 			if (name != null && !(ignoreCase
@@ -335,10 +343,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInformationTargets() {
+	public EList<NamedElement> getInformationTargets() {
 		if (informationTargets == null) {
-			informationTargets = new EObjectResolvingEList(NamedElement.class,
-				this, UMLPackage.INFORMATION_FLOW__INFORMATION_TARGET);
+			informationTargets = new EObjectResolvingEList<NamedElement>(
+				NamedElement.class, this,
+				UMLPackage.INFORMATION_FLOW__INFORMATION_TARGET);
 		}
 		return informationTargets;
 	}
@@ -359,9 +368,7 @@
 	 */
 	public NamedElement getInformationTarget(String name, boolean ignoreCase,
 			EClass eClass) {
-		informationTargetLoop : for (Iterator i = getInformationTargets()
-			.iterator(); i.hasNext();) {
-			NamedElement informationTarget = (NamedElement) i.next();
+		informationTargetLoop : for (NamedElement informationTarget : getInformationTargets()) {
 			if (eClass != null && !eClass.isInstance(informationTarget))
 				continue informationTargetLoop;
 			if (name != null && !(ignoreCase
@@ -378,9 +385,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRealizingActivityEdges() {
+	public EList<ActivityEdge> getRealizingActivityEdges() {
 		if (realizingActivityEdges == null) {
-			realizingActivityEdges = new EObjectResolvingEList(
+			realizingActivityEdges = new EObjectResolvingEList<ActivityEdge>(
 				ActivityEdge.class, this,
 				UMLPackage.INFORMATION_FLOW__REALIZING_ACTIVITY_EDGE);
 		}
@@ -403,9 +410,7 @@
 	 */
 	public ActivityEdge getRealizingActivityEdge(String name,
 			boolean ignoreCase, EClass eClass) {
-		realizingActivityEdgeLoop : for (Iterator i = getRealizingActivityEdges()
-			.iterator(); i.hasNext();) {
-			ActivityEdge realizingActivityEdge = (ActivityEdge) i.next();
+		realizingActivityEdgeLoop : for (ActivityEdge realizingActivityEdge : getRealizingActivityEdges()) {
 			if (eClass != null && !eClass.isInstance(realizingActivityEdge))
 				continue realizingActivityEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -422,10 +427,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRealizingConnectors() {
+	public EList<Connector> getRealizingConnectors() {
 		if (realizingConnectors == null) {
-			realizingConnectors = new EObjectResolvingEList(Connector.class,
-				this, UMLPackage.INFORMATION_FLOW__REALIZING_CONNECTOR);
+			realizingConnectors = new EObjectResolvingEList<Connector>(
+				Connector.class, this,
+				UMLPackage.INFORMATION_FLOW__REALIZING_CONNECTOR);
 		}
 		return realizingConnectors;
 	}
@@ -445,9 +451,7 @@
 	 * @generated
 	 */
 	public Connector getRealizingConnector(String name, boolean ignoreCase) {
-		realizingConnectorLoop : for (Iterator i = getRealizingConnectors()
-			.iterator(); i.hasNext();) {
-			Connector realizingConnector = (Connector) i.next();
+		realizingConnectorLoop : for (Connector realizingConnector : getRealizingConnectors()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(realizingConnector.getName())
 				: name.equals(realizingConnector.getName())))
@@ -462,9 +466,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRealizingMessages() {
+	public EList<Message> getRealizingMessages() {
 		if (realizingMessages == null) {
-			realizingMessages = new EObjectResolvingEList(Message.class, this,
+			realizingMessages = new EObjectResolvingEList<Message>(
+				Message.class, this,
 				UMLPackage.INFORMATION_FLOW__REALIZING_MESSAGE);
 		}
 		return realizingMessages;
@@ -485,9 +490,7 @@
 	 * @generated
 	 */
 	public Message getRealizingMessage(String name, boolean ignoreCase) {
-		realizingMessageLoop : for (Iterator i = getRealizingMessages()
-			.iterator(); i.hasNext();) {
-			Message realizingMessage = (Message) i.next();
+		realizingMessageLoop : for (Message realizingMessage : getRealizingMessages()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(realizingMessage.getName())
 				: name.equals(realizingMessage.getName())))
@@ -503,7 +506,7 @@
 	 * @generated
 	 */
 	public boolean validateSourcesAndTargetsKind(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InformationFlowOperations.validateSourcesAndTargetsKind(this,
 			diagnostics, context);
 	}
@@ -513,7 +516,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMustConform(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMustConform(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InformationFlowOperations.validateMustConform(this, diagnostics,
 			context);
 	}
@@ -524,7 +528,7 @@
 	 * @generated
 	 */
 	public boolean validateConveyClassifiers(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InformationFlowOperations.validateConveyClassifiers(this,
 			diagnostics, context);
 	}
@@ -534,6 +538,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_FLOW__EANNOTATIONS :
@@ -599,15 +604,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_FLOW__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__NAME :
 				setName((String) newValue);
@@ -617,7 +626,8 @@
 				return;
 			case UMLPackage.INFORMATION_FLOW__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -630,31 +640,38 @@
 				return;
 			case UMLPackage.INFORMATION_FLOW__REALIZATION :
 				getRealizations().clear();
-				getRealizations().addAll((Collection) newValue);
+				getRealizations().addAll(
+					(Collection<? extends Relationship>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__CONVEYED :
 				getConveyeds().clear();
-				getConveyeds().addAll((Collection) newValue);
+				getConveyeds().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__INFORMATION_SOURCE :
 				getInformationSources().clear();
-				getInformationSources().addAll((Collection) newValue);
+				getInformationSources().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__INFORMATION_TARGET :
 				getInformationTargets().clear();
-				getInformationTargets().addAll((Collection) newValue);
+				getInformationTargets().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__REALIZING_ACTIVITY_EDGE :
 				getRealizingActivityEdges().clear();
-				getRealizingActivityEdges().addAll((Collection) newValue);
+				getRealizingActivityEdges().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__REALIZING_CONNECTOR :
 				getRealizingConnectors().clear();
-				getRealizingConnectors().addAll((Collection) newValue);
+				getRealizingConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.INFORMATION_FLOW__REALIZING_MESSAGE :
 				getRealizingMessages().clear();
-				getRealizingMessages().addAll((Collection) newValue);
+				getRealizingMessages().addAll(
+					(Collection<? extends Message>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -665,6 +682,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_FLOW__EANNOTATIONS :
@@ -721,6 +739,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_FLOW__EANNOTATIONS :
@@ -784,7 +803,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.INFORMATION_FLOW__RELATED_ELEMENT :
@@ -811,7 +831,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Relationship.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.RELATIONSHIP__RELATED_ELEMENT :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationItemImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationItemImpl.java
index cb8d2e7..271bd65 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationItemImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InformationItemImpl.java
@@ -8,28 +8,38 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationItemImpl.java,v 1.16 2006/04/10 19:16:19 khussey Exp $
+ * $Id: InformationItemImpl.java,v 1.17 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.InformationItem;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.InformationItemOperations;
@@ -59,7 +69,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList representeds = null;
+	protected EList<Classifier> representeds = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -75,6 +85,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INFORMATION_ITEM;
 	}
@@ -84,9 +95,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRepresenteds() {
+	public EList<Classifier> getRepresenteds() {
 		if (representeds == null) {
-			representeds = new EObjectResolvingEList(Classifier.class, this,
+			representeds = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
 				UMLPackage.INFORMATION_ITEM__REPRESENTED);
 		}
 		return representeds;
@@ -108,9 +120,7 @@
 	 */
 	public Classifier getRepresented(String name, boolean ignoreCase,
 			EClass eClass) {
-		representedLoop : for (Iterator i = getRepresenteds().iterator(); i
-			.hasNext();) {
-			Classifier represented = (Classifier) i.next();
+		representedLoop : for (Classifier represented : getRepresenteds()) {
 			if (eClass != null && !eClass.isInstance(represented))
 				continue representedLoop;
 			if (name != null && !(ignoreCase
@@ -128,7 +138,7 @@
 	 * @generated
 	 */
 	public boolean validateSourcesAndTargets(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InformationItemOperations.validateSourcesAndTargets(this,
 			diagnostics, context);
 	}
@@ -138,7 +148,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateHasNo(DiagnosticChain diagnostics, Map context) {
+	public boolean validateHasNo(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InformationItemOperations.validateHasNo(this, diagnostics,
 			context);
 	}
@@ -149,7 +160,7 @@
 	 * @generated
 	 */
 	public boolean validateNotInstantiable(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InformationItemOperations.validateNotInstantiable(this,
 			diagnostics, context);
 	}
@@ -159,6 +170,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_ITEM__EANNOTATIONS :
@@ -266,15 +278,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_ITEM__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__NAME :
 				setName((String) newValue);
@@ -284,22 +300,26 @@
 				return;
 			case UMLPackage.INFORMATION_ITEM__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -315,7 +335,8 @@
 				return;
 			case UMLPackage.INFORMATION_ITEM__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -325,42 +346,50 @@
 				return;
 			case UMLPackage.INFORMATION_ITEM__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INFORMATION_ITEM__REPRESENTED :
 				getRepresenteds().clear();
-				getRepresenteds().addAll((Collection) newValue);
+				getRepresenteds().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -371,6 +400,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_ITEM__EANNOTATIONS :
@@ -460,6 +490,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INFORMATION_ITEM__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InitialNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InitialNodeImpl.java
index aabed72..cde0710 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InitialNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InitialNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InitialNodeImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: InitialNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INITIAL_NODE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InitialNodeOperations.validateNoIncomingEdges(this, diagnostics,
 			context);
 	}
@@ -70,7 +71,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateControlEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateControlEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InitialNodeOperations.validateControlEdges(this, diagnostics,
 			context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InputPinImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InputPinImpl.java
index 7c20e5a..acf3327 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InputPinImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InputPinImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InputPinImpl.java,v 1.3 2006/05/16 15:07:26 khussey Exp $
+ * $Id: InputPinImpl.java,v 1.4 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INPUT_PIN;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateOutgoingEdgesStructuredOnly(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return InputPinOperations.validateOutgoingEdgesStructuredOnly(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceSpecificationImpl.java
index b4a1d0c..c523a03 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceSpecificationImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InstanceSpecificationImpl.java,v 1.18 2006/11/14 18:02:19 khussey Exp $
+ * $Id: InstanceSpecificationImpl.java,v 1.19 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -39,7 +39,10 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.DeployedArtifact;
+import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InstanceSpecification;
 import org.eclipse.uml2.uml.PackageableElement;
@@ -97,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList classifiers = null;
+	protected EList<Classifier> classifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getSlots() <em>Slot</em>}' containment reference list.
@@ -107,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList slots = null;
+	protected EList<Slot> slots = null;
 
 	/**
 	 * The cached value of the '{@link #getSpecification() <em>Specification</em>}' containment reference.
@@ -133,6 +136,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INSTANCE_SPECIFICATION;
 	}
@@ -352,23 +356,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INSTANCE_SPECIFICATION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INSTANCE_SPECIFICATION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INSTANCE_SPECIFICATION__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -378,9 +384,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClassifiers() {
+	public EList<Classifier> getClassifiers() {
 		if (classifiers == null) {
-			classifiers = new EObjectResolvingEList(Classifier.class, this,
+			classifiers = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
 				UMLPackage.INSTANCE_SPECIFICATION__CLASSIFIER);
 		}
 		return classifiers;
@@ -402,9 +409,7 @@
 	 */
 	public Classifier getClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		classifierLoop : for (Iterator i = getClassifiers().iterator(); i
-			.hasNext();) {
-			Classifier classifier = (Classifier) i.next();
+		classifierLoop : for (Classifier classifier : getClassifiers()) {
 			if (eClass != null && !eClass.isInstance(classifier))
 				continue classifierLoop;
 			if (name != null && !(ignoreCase
@@ -530,9 +535,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSlots() {
+	public EList<Slot> getSlots() {
 		if (slots == null) {
-			slots = new EObjectContainmentWithInverseEList.Resolving(
+			slots = new EObjectContainmentWithInverseEList.Resolving<Slot>(
 				Slot.class, this, UMLPackage.INSTANCE_SPECIFICATION__SLOT,
 				UMLPackage.SLOT__OWNING_INSTANCE);
 		}
@@ -574,7 +579,7 @@
 	 * @generated
 	 */
 	public boolean validateDefiningFeature(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InstanceSpecificationOperations.validateDefiningFeature(this,
 			diagnostics, context);
 	}
@@ -585,7 +590,7 @@
 	 * @generated
 	 */
 	public boolean validateStructuralFeature(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InstanceSpecificationOperations.validateStructuralFeature(this,
 			diagnostics, context);
 	}
@@ -596,7 +601,7 @@
 	 * @generated
 	 */
 	public boolean validateDeploymentTarget(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InstanceSpecificationOperations.validateDeploymentTarget(this,
 			diagnostics, context);
 	}
@@ -607,7 +612,7 @@
 	 * @generated
 	 */
 	public boolean validateDeploymentArtifact(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InstanceSpecificationOperations.validateDeploymentArtifact(this,
 			diagnostics, context);
 	}
@@ -617,18 +622,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getDeployments())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -643,7 +650,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__SLOT :
-				return ((InternalEList) getSlots()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSlots())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -653,29 +661,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getDeployments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__SLOT :
-				return ((InternalEList) getSlots()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getSlots()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.INSTANCE_SPECIFICATION__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 		}
@@ -687,6 +697,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -703,6 +714,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
@@ -760,15 +772,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -778,14 +794,16 @@
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -795,11 +813,12 @@
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__CLASSIFIER :
 				getClassifiers().clear();
-				getClassifiers().addAll((Collection) newValue);
+				getClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__SLOT :
 				getSlots().clear();
-				getSlots().addAll((Collection) newValue);
+				getSlots().addAll((Collection<? extends Slot>) newValue);
 				return;
 			case UMLPackage.INSTANCE_SPECIFICATION__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -813,6 +832,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
@@ -860,6 +880,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_SPECIFICATION__EANNOTATIONS :
@@ -908,7 +929,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.INSTANCE_SPECIFICATION__OWNING_TEMPLATE_PARAMETER :
@@ -939,7 +961,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -970,6 +993,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1000,6 +1024,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.INSTANCE_SPECIFICATION__OWNING_TEMPLATE_PARAMETER);
@@ -1025,6 +1050,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INSTANCE_SPECIFICATION__SLOT)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceValueImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceValueImpl.java
index edb3df8..8680a9d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceValueImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InstanceValueImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InstanceValueImpl.java,v 1.12 2006/11/14 18:02:18 khussey Exp $
+ * $Id: InstanceValueImpl.java,v 1.13 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.InstanceSpecification;
 import org.eclipse.uml2.uml.InstanceValue;
 import org.eclipse.uml2.uml.StringExpression;
@@ -71,6 +74,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INSTANCE_VALUE;
 	}
@@ -132,6 +136,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_VALUE__EANNOTATIONS :
@@ -185,15 +190,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_VALUE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INSTANCE_VALUE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INSTANCE_VALUE__NAME :
 				setName((String) newValue);
@@ -203,7 +212,8 @@
 				return;
 			case UMLPackage.INSTANCE_VALUE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INSTANCE_VALUE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -229,6 +239,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_VALUE__EANNOTATIONS :
@@ -270,6 +281,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INSTANCE_VALUE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionConstraintImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionConstraintImpl.java
index 95aae23..82948d2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionConstraintImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionConstraintImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionConstraintImpl.java,v 1.20 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InteractionConstraintImpl.java,v 1.21 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,6 +35,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InteractionConstraint;
 import org.eclipse.uml2.uml.Namespace;
@@ -99,6 +102,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERACTION_CONSTRAINT;
 	}
@@ -108,23 +112,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INTERACTION_CONSTRAINT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INTERACTION_CONSTRAINT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INTERACTION_CONSTRAINT__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -341,7 +347,7 @@
 	 * @generated
 	 */
 	public boolean validateDynamicVariables(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionConstraintOperations.validateDynamicVariables(this,
 			diagnostics, context);
 	}
@@ -351,7 +357,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGlobalData(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGlobalData(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InteractionConstraintOperations.validateGlobalData(this,
 			diagnostics, context);
 	}
@@ -361,7 +368,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMinintMaxint(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMinintMaxint(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InteractionConstraintOperations.validateMinintMaxint(this,
 			diagnostics, context);
 	}
@@ -372,7 +380,7 @@
 	 * @generated
 	 */
 	public boolean validateMinintNonNegative(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionConstraintOperations.validateMinintNonNegative(this,
 			diagnostics, context);
 	}
@@ -383,7 +391,7 @@
 	 * @generated
 	 */
 	public boolean validateMaxintPositive(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionConstraintOperations.validateMaxintPositive(this,
 			diagnostics, context);
 	}
@@ -394,7 +402,7 @@
 	 * @generated
 	 */
 	public boolean validateMaxintGreaterEqualMinint(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return InteractionConstraintOperations
 			.validateMaxintGreaterEqualMinint(this, diagnostics, context);
 	}
@@ -404,18 +412,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_CONSTRAINT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_CONSTRAINT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_CONSTRAINT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION_CONSTRAINT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERACTION_CONSTRAINT__OWNING_TEMPLATE_PARAMETER :
@@ -439,6 +448,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_CONSTRAINT__EANNOTATIONS :
@@ -502,15 +512,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_CONSTRAINT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__NAME :
 				setName((String) newValue);
@@ -520,7 +534,8 @@
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -533,7 +548,8 @@
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__CONSTRAINED_ELEMENT :
 				getConstrainedElements().clear();
-				getConstrainedElements().addAll((Collection) newValue);
+				getConstrainedElements().addAll(
+					(Collection<? extends Element>) newValue);
 				return;
 			case UMLPackage.INTERACTION_CONSTRAINT__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -556,6 +572,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_CONSTRAINT__EANNOTATIONS :
@@ -606,6 +623,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_CONSTRAINT__EANNOTATIONS :
@@ -670,6 +688,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INTERACTION_CONSTRAINT__MININT)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionFragmentImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionFragmentImpl.java
index ac7bd68..e2574bc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionFragmentImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionFragmentImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionFragmentImpl.java,v 1.19 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InteractionFragmentImpl.java,v 1.20 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,6 +34,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
@@ -75,7 +77,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList covereds = null;
+	protected EList<Lifeline> covereds = null;
 
 	/**
 	 * The cached value of the '{@link #getGeneralOrderings() <em>General Ordering</em>}' containment reference list.
@@ -85,7 +87,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalOrderings = null;
+	protected EList<GeneralOrdering> generalOrderings = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -101,6 +103,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERACTION_FRAGMENT;
 	}
@@ -110,23 +113,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INTERACTION_FRAGMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INTERACTION_FRAGMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INTERACTION_FRAGMENT__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -136,9 +141,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCovereds() {
+	public EList<Lifeline> getCovereds() {
 		if (covereds == null) {
-			covereds = new EObjectWithInverseResolvingEList.ManyInverse(
+			covereds = new EObjectWithInverseResolvingEList.ManyInverse<Lifeline>(
 				Lifeline.class, this, UMLPackage.INTERACTION_FRAGMENT__COVERED,
 				UMLPackage.LIFELINE__COVERED_BY);
 		}
@@ -160,8 +165,7 @@
 	 * @generated
 	 */
 	public Lifeline getCovered(String name, boolean ignoreCase) {
-		coveredLoop : for (Iterator i = getCovereds().iterator(); i.hasNext();) {
-			Lifeline covered = (Lifeline) i.next();
+		coveredLoop : for (Lifeline covered : getCovereds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(covered.getName())
 				: name.equals(covered.getName())))
@@ -176,9 +180,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralOrderings() {
+	public EList<GeneralOrdering> getGeneralOrderings() {
 		if (generalOrderings == null) {
-			generalOrderings = new EObjectContainmentEList.Resolving(
+			generalOrderings = new EObjectContainmentEList.Resolving<GeneralOrdering>(
 				GeneralOrdering.class, this,
 				UMLPackage.INTERACTION_FRAGMENT__GENERAL_ORDERING);
 		}
@@ -214,9 +218,7 @@
 	 */
 	public GeneralOrdering getGeneralOrdering(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		generalOrderingLoop : for (Iterator i = getGeneralOrderings()
-			.iterator(); i.hasNext();) {
-			GeneralOrdering generalOrdering = (GeneralOrdering) i.next();
+		generalOrderingLoop : for (GeneralOrdering generalOrdering : getGeneralOrderings()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(generalOrdering.getName())
 				: name.equals(generalOrdering.getName())))
@@ -361,17 +363,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__COVERED :
-				return ((InternalEList) getCovereds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getCovereds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -391,25 +396,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
@@ -424,6 +430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -443,6 +450,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
@@ -492,15 +500,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__NAME :
 				setName((String) newValue);
@@ -510,18 +522,20 @@
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -538,6 +552,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
@@ -579,6 +594,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_FRAGMENT__EANNOTATIONS :
@@ -646,6 +662,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INTERACTION_FRAGMENT__GENERAL_ORDERING);
@@ -670,6 +687,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_OPERAND);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionImpl.java
index 39294b2..05bf8e2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionImpl.java,v 1.27 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InteractionImpl.java,v 1.28 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -38,21 +38,41 @@
 import org.eclipse.uml2.uml.Action;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Gate;
 import org.eclipse.uml2.uml.GeneralOrdering;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionFragment;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.Message;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 /**
@@ -91,7 +111,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList covereds = null;
+	protected EList<Lifeline> covereds = null;
 
 	/**
 	 * The cached value of the '{@link #getGeneralOrderings() <em>General Ordering</em>}' containment reference list.
@@ -101,7 +121,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalOrderings = null;
+	protected EList<GeneralOrdering> generalOrderings = null;
 
 	/**
 	 * The cached value of the '{@link #getLifelines() <em>Lifeline</em>}' containment reference list.
@@ -111,7 +131,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList lifelines = null;
+	protected EList<Lifeline> lifelines = null;
 
 	/**
 	 * The cached value of the '{@link #getFragments() <em>Fragment</em>}' containment reference list.
@@ -121,7 +141,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList fragments = null;
+	protected EList<InteractionFragment> fragments = null;
 
 	/**
 	 * The cached value of the '{@link #getActions() <em>Action</em>}' containment reference list.
@@ -131,7 +151,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList actions = null;
+	protected EList<Action> actions = null;
 
 	/**
 	 * The cached value of the '{@link #getFormalGates() <em>Formal Gate</em>}' containment reference list.
@@ -141,7 +161,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList formalGates = null;
+	protected EList<Gate> formalGates = null;
 
 	/**
 	 * The cached value of the '{@link #getMessages() <em>Message</em>}' containment reference list.
@@ -151,7 +171,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList messages = null;
+	protected EList<Message> messages = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -167,6 +187,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERACTION;
 	}
@@ -176,23 +197,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INTERACTION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INTERACTION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INTERACTION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -201,9 +224,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCovereds() {
+	public EList<Lifeline> getCovereds() {
 		if (covereds == null) {
-			covereds = new EObjectWithInverseResolvingEList.ManyInverse(
+			covereds = new EObjectWithInverseResolvingEList.ManyInverse<Lifeline>(
 				Lifeline.class, this, UMLPackage.INTERACTION__COVERED,
 				UMLPackage.LIFELINE__COVERED_BY);
 		}
@@ -225,8 +248,7 @@
 	 * @generated
 	 */
 	public Lifeline getCovered(String name, boolean ignoreCase) {
-		coveredLoop : for (Iterator i = getCovereds().iterator(); i.hasNext();) {
-			Lifeline covered = (Lifeline) i.next();
+		coveredLoop : for (Lifeline covered : getCovereds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(covered.getName())
 				: name.equals(covered.getName())))
@@ -241,9 +263,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralOrderings() {
+	public EList<GeneralOrdering> getGeneralOrderings() {
 		if (generalOrderings == null) {
-			generalOrderings = new EObjectContainmentEList.Resolving(
+			generalOrderings = new EObjectContainmentEList.Resolving<GeneralOrdering>(
 				GeneralOrdering.class, this,
 				UMLPackage.INTERACTION__GENERAL_ORDERING);
 		}
@@ -279,9 +301,7 @@
 	 */
 	public GeneralOrdering getGeneralOrdering(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		generalOrderingLoop : for (Iterator i = getGeneralOrderings()
-			.iterator(); i.hasNext();) {
-			GeneralOrdering generalOrdering = (GeneralOrdering) i.next();
+		generalOrderingLoop : for (GeneralOrdering generalOrdering : getGeneralOrderings()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(generalOrdering.getName())
 				: name.equals(generalOrdering.getName())))
@@ -426,25 +446,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.INTERACTION__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.INTERACTION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.INTERACTION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -452,9 +473,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLifelines() {
+	public EList<Lifeline> getLifelines() {
 		if (lifelines == null) {
-			lifelines = new EObjectContainmentWithInverseEList.Resolving(
+			lifelines = new EObjectContainmentWithInverseEList.Resolving<Lifeline>(
 				Lifeline.class, this, UMLPackage.INTERACTION__LIFELINE,
 				UMLPackage.LIFELINE__INTERACTION);
 		}
@@ -490,8 +511,7 @@
 	 */
 	public Lifeline getLifeline(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		lifelineLoop : for (Iterator i = getLifelines().iterator(); i.hasNext();) {
-			Lifeline lifeline = (Lifeline) i.next();
+		lifelineLoop : for (Lifeline lifeline : getLifelines()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(lifeline.getName())
 				: name.equals(lifeline.getName())))
@@ -508,9 +528,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFragments() {
+	public EList<InteractionFragment> getFragments() {
 		if (fragments == null) {
-			fragments = new EObjectContainmentWithInverseEList.Resolving(
+			fragments = new EObjectContainmentWithInverseEList.Resolving<InteractionFragment>(
 				InteractionFragment.class, this,
 				UMLPackage.INTERACTION__FRAGMENT,
 				UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_INTERACTION);
@@ -547,8 +567,7 @@
 	 */
 	public InteractionFragment getFragment(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		fragmentLoop : for (Iterator i = getFragments().iterator(); i.hasNext();) {
-			InteractionFragment fragment = (InteractionFragment) i.next();
+		fragmentLoop : for (InteractionFragment fragment : getFragments()) {
 			if (eClass != null && !eClass.isInstance(fragment))
 				continue fragmentLoop;
 			if (name != null && !(ignoreCase
@@ -567,10 +586,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getActions() {
+	public EList<Action> getActions() {
 		if (actions == null) {
-			actions = new EObjectContainmentEList.Resolving(Action.class, this,
-				UMLPackage.INTERACTION__ACTION);
+			actions = new EObjectContainmentEList.Resolving<Action>(
+				Action.class, this, UMLPackage.INTERACTION__ACTION);
 		}
 		return actions;
 	}
@@ -604,8 +623,7 @@
 	 */
 	public Action getAction(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		actionLoop : for (Iterator i = getActions().iterator(); i.hasNext();) {
-			Action action = (Action) i.next();
+		actionLoop : for (Action action : getActions()) {
 			if (eClass != null && !eClass.isInstance(action))
 				continue actionLoop;
 			if (name != null && !(ignoreCase
@@ -624,10 +642,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFormalGates() {
+	public EList<Gate> getFormalGates() {
 		if (formalGates == null) {
-			formalGates = new EObjectContainmentEList.Resolving(Gate.class,
-				this, UMLPackage.INTERACTION__FORMAL_GATE);
+			formalGates = new EObjectContainmentEList.Resolving<Gate>(
+				Gate.class, this, UMLPackage.INTERACTION__FORMAL_GATE);
 		}
 		return formalGates;
 	}
@@ -661,9 +679,7 @@
 	 */
 	public Gate getFormalGate(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		formalGateLoop : for (Iterator i = getFormalGates().iterator(); i
-			.hasNext();) {
-			Gate formalGate = (Gate) i.next();
+		formalGateLoop : for (Gate formalGate : getFormalGates()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(formalGate.getName())
 				: name.equals(formalGate.getName())))
@@ -680,9 +696,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMessages() {
+	public EList<Message> getMessages() {
 		if (messages == null) {
-			messages = new EObjectContainmentWithInverseEList.Resolving(
+			messages = new EObjectContainmentWithInverseEList.Resolving<Message>(
 				Message.class, this, UMLPackage.INTERACTION__MESSAGE,
 				UMLPackage.MESSAGE__INTERACTION);
 		}
@@ -718,8 +734,7 @@
 	 */
 	public Message getMessage(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		messageLoop : for (Iterator i = getMessages().iterator(); i.hasNext();) {
-			Message message = (Message) i.next();
+		messageLoop : for (Message message : getMessages()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(message.getName())
 				: name.equals(message.getName())))
@@ -736,24 +751,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -768,8 +785,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -779,22 +796,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.INTERACTION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__SPECIFICATION :
 				if (specification != null)
 					msgs = ((InternalEObject) specification).eInverseRemove(
@@ -802,7 +820,8 @@
 						BehavioralFeature.class, msgs);
 				return basicSetSpecification((BehavioralFeature) otherEnd, msgs);
 			case UMLPackage.INTERACTION__COVERED :
-				return ((InternalEList) getCovereds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getCovereds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__ENCLOSING_INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -814,13 +833,14 @@
 				return basicSetEnclosingOperand((InteractionOperand) otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION__LIFELINE :
-				return ((InternalEList) getLifelines())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getLifelines())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__FRAGMENT :
-				return ((InternalEList) getFragments())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getFragments())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION__MESSAGE :
-				return ((InternalEList) getMessages()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getMessages())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -830,118 +850,119 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERACTION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.INTERACTION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.INTERACTION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.INTERACTION__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__PRECONDITION :
-				return ((InternalEList) getPreconditions()).basicRemove(
+				return ((InternalEList<?>) getPreconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__POSTCONDITION :
-				return ((InternalEList) getPostconditions()).basicRemove(
+				return ((InternalEList<?>) getPostconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 			case UMLPackage.INTERACTION__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
 			case UMLPackage.INTERACTION__ENCLOSING_OPERAND :
 				return basicSetEnclosingOperand(null, msgs);
 			case UMLPackage.INTERACTION__LIFELINE :
-				return ((InternalEList) getLifelines()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getLifelines()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION__FRAGMENT :
-				return ((InternalEList) getFragments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getFragments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION__ACTION :
-				return ((InternalEList) getActions()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getActions()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION__FORMAL_GATE :
-				return ((InternalEList) getFormalGates()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getFormalGates()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION__MESSAGE :
-				return ((InternalEList) getMessages()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getMessages()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -952,6 +973,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -975,6 +997,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
@@ -1158,15 +1181,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERACTION__NAME :
 				setName((String) newValue);
@@ -1176,22 +1203,26 @@
 				return;
 			case UMLPackage.INTERACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INTERACTION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.INTERACTION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INTERACTION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1207,7 +1238,8 @@
 				return;
 			case UMLPackage.INTERACTION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1217,118 +1249,141 @@
 				return;
 			case UMLPackage.INTERACTION__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.INTERACTION__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.INTERACTION__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERACTION__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERACTION__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.INTERACTION__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.INTERACTION__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INTERACTION__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.INTERACTION__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.INTERACTION__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.INTERACTION__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.INTERACTION__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.INTERACTION__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.INTERACTION__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.INTERACTION__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.INTERACTION__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.INTERACTION__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INTERACTION__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INTERACTION__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.INTERACTION__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
 				return;
 			case UMLPackage.INTERACTION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.INTERACTION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.INTERACTION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -1338,23 +1393,25 @@
 				return;
 			case UMLPackage.INTERACTION__LIFELINE :
 				getLifelines().clear();
-				getLifelines().addAll((Collection) newValue);
+				getLifelines()
+					.addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.INTERACTION__FRAGMENT :
 				getFragments().clear();
-				getFragments().addAll((Collection) newValue);
+				getFragments().addAll(
+					(Collection<? extends InteractionFragment>) newValue);
 				return;
 			case UMLPackage.INTERACTION__ACTION :
 				getActions().clear();
-				getActions().addAll((Collection) newValue);
+				getActions().addAll((Collection<? extends Action>) newValue);
 				return;
 			case UMLPackage.INTERACTION__FORMAL_GATE :
 				getFormalGates().clear();
-				getFormalGates().addAll((Collection) newValue);
+				getFormalGates().addAll((Collection<? extends Gate>) newValue);
 				return;
 			case UMLPackage.INTERACTION__MESSAGE :
 				getMessages().clear();
-				getMessages().addAll((Collection) newValue);
+				getMessages().addAll((Collection<? extends Message>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1365,6 +1422,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
@@ -1535,6 +1593,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION__EANNOTATIONS :
@@ -1693,7 +1752,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == InteractionFragment.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.INTERACTION__COVERED :
@@ -1716,7 +1776,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == InteractionFragment.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.INTERACTION_FRAGMENT__COVERED :
@@ -1774,6 +1835,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INTERACTION__GENERAL_ORDERING)
@@ -1799,6 +1861,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.INTERACTION__ENCLOSING_OPERAND);
@@ -1832,6 +1895,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.INTERACTION__LIFELINE)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionOperandImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionOperandImpl.java
index 48d797b..9b5f4bb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionOperandImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionOperandImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionOperandImpl.java,v 1.20 2006/11/14 18:02:16 khussey Exp $
+ * $Id: InteractionOperandImpl.java,v 1.21 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -39,7 +39,11 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionConstraint;
@@ -48,6 +52,7 @@
 import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -87,7 +92,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList covereds = null;
+	protected EList<Lifeline> covereds = null;
 
 	/**
 	 * The cached value of the '{@link #getGeneralOrderings() <em>General Ordering</em>}' containment reference list.
@@ -97,7 +102,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList generalOrderings = null;
+	protected EList<GeneralOrdering> generalOrderings = null;
 
 	/**
 	 * The cached value of the '{@link #getGuard() <em>Guard</em>}' containment reference.
@@ -117,7 +122,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList fragments = null;
+	protected EList<InteractionFragment> fragments = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -133,6 +138,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERACTION_OPERAND;
 	}
@@ -142,23 +148,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INTERACTION_OPERAND__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INTERACTION_OPERAND__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INTERACTION_OPERAND__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -168,9 +176,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCovereds() {
+	public EList<Lifeline> getCovereds() {
 		if (covereds == null) {
-			covereds = new EObjectWithInverseResolvingEList.ManyInverse(
+			covereds = new EObjectWithInverseResolvingEList.ManyInverse<Lifeline>(
 				Lifeline.class, this, UMLPackage.INTERACTION_OPERAND__COVERED,
 				UMLPackage.LIFELINE__COVERED_BY);
 		}
@@ -192,8 +200,7 @@
 	 * @generated
 	 */
 	public Lifeline getCovered(String name, boolean ignoreCase) {
-		coveredLoop : for (Iterator i = getCovereds().iterator(); i.hasNext();) {
-			Lifeline covered = (Lifeline) i.next();
+		coveredLoop : for (Lifeline covered : getCovereds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(covered.getName())
 				: name.equals(covered.getName())))
@@ -208,9 +215,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getGeneralOrderings() {
+	public EList<GeneralOrdering> getGeneralOrderings() {
 		if (generalOrderings == null) {
-			generalOrderings = new EObjectContainmentEList.Resolving(
+			generalOrderings = new EObjectContainmentEList.Resolving<GeneralOrdering>(
 				GeneralOrdering.class, this,
 				UMLPackage.INTERACTION_OPERAND__GENERAL_ORDERING);
 		}
@@ -246,9 +253,7 @@
 	 */
 	public GeneralOrdering getGeneralOrdering(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		generalOrderingLoop : for (Iterator i = getGeneralOrderings()
-			.iterator(); i.hasNext();) {
-			GeneralOrdering generalOrdering = (GeneralOrdering) i.next();
+		generalOrderingLoop : for (GeneralOrdering generalOrdering : getGeneralOrderings()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(generalOrdering.getName())
 				: name.equals(generalOrdering.getName())))
@@ -393,25 +398,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.INTERACTION_OPERAND__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.INTERACTION_OPERAND__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.INTERACTION_OPERAND__OWNED_MEMBER,
+			OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -517,9 +524,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFragments() {
+	public EList<InteractionFragment> getFragments() {
 		if (fragments == null) {
-			fragments = new EObjectContainmentWithInverseEList.Resolving(
+			fragments = new EObjectContainmentWithInverseEList.Resolving<InteractionFragment>(
 				InteractionFragment.class, this,
 				UMLPackage.INTERACTION_OPERAND__FRAGMENT,
 				UMLPackage.INTERACTION_FRAGMENT__ENCLOSING_OPERAND);
@@ -556,8 +563,7 @@
 	 */
 	public InteractionFragment getFragment(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		fragmentLoop : for (Iterator i = getFragments().iterator(); i.hasNext();) {
-			InteractionFragment fragment = (InteractionFragment) i.next();
+		fragmentLoop : for (InteractionFragment fragment : getFragments()) {
 			if (eClass != null && !eClass.isInstance(fragment))
 				continue fragmentLoop;
 			if (name != null && !(ignoreCase
@@ -577,7 +583,7 @@
 	 * @generated
 	 */
 	public boolean validateGuardDirectlyPrior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionOperandOperations.validateGuardDirectlyPrior(this,
 			diagnostics, context);
 	}
@@ -588,7 +594,7 @@
 	 * @generated
 	 */
 	public boolean validateGuardContainReferences(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionOperandOperations.validateGuardContainReferences(
 			this, diagnostics, context);
 	}
@@ -598,26 +604,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__COVERED :
-				return ((InternalEList) getCovereds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getCovereds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__ENCLOSING_INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -629,7 +638,7 @@
 				return basicSetEnclosingOperand((InteractionOperand) otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION_OPERAND__FRAGMENT :
-				return ((InternalEList) getFragments())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getFragments())
 					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
@@ -640,34 +649,35 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERACTION_OPERAND__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION_OPERAND__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_OPERAND__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
@@ -676,8 +686,8 @@
 			case UMLPackage.INTERACTION_OPERAND__GUARD :
 				return basicSetGuard(null, msgs);
 			case UMLPackage.INTERACTION_OPERAND__FRAGMENT :
-				return ((InternalEList) getFragments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getFragments()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -687,6 +697,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -706,6 +717,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
@@ -773,15 +785,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__NAME :
 				setName((String) newValue);
@@ -791,30 +807,35 @@
 				return;
 			case UMLPackage.INTERACTION_OPERAND__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.INTERACTION_OPERAND__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -827,7 +848,8 @@
 				return;
 			case UMLPackage.INTERACTION_OPERAND__FRAGMENT :
 				getFragments().clear();
-				getFragments().addAll((Collection) newValue);
+				getFragments().addAll(
+					(Collection<? extends InteractionFragment>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -838,6 +860,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
@@ -894,6 +917,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_OPERAND__EANNOTATIONS :
@@ -952,7 +976,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == InteractionFragment.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.INTERACTION_OPERAND__COVERED :
@@ -975,7 +1000,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == InteractionFragment.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.INTERACTION_FRAGMENT__COVERED :
@@ -1027,6 +1053,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INTERACTION_OPERAND__GENERAL_ORDERING)
@@ -1052,6 +1079,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.INTERACTION_OPERAND__ENCLOSING_OPERAND);
@@ -1074,6 +1102,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.INTERACTION_OPERAND__FRAGMENT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionUseImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionUseImpl.java
index b31871a..3494b4e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionUseImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InteractionUseImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionUseImpl.java,v 1.21 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InteractionUseImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,11 +37,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Gate;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
 import org.eclipse.uml2.uml.InteractionUse;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -86,7 +90,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList actualGates = null;
+	protected EList<Gate> actualGates = null;
 
 	/**
 	 * The cached value of the '{@link #getArguments() <em>Argument</em>}' containment reference list.
@@ -96,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList arguments = null;
+	protected EList<Action> arguments = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,6 +116,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERACTION_USE;
 	}
@@ -121,23 +126,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.INTERACTION_USE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.INTERACTION_USE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.INTERACTION_USE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -189,10 +196,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getActualGates() {
+	public EList<Gate> getActualGates() {
 		if (actualGates == null) {
-			actualGates = new EObjectContainmentEList.Resolving(Gate.class,
-				this, UMLPackage.INTERACTION_USE__ACTUAL_GATE);
+			actualGates = new EObjectContainmentEList.Resolving<Gate>(
+				Gate.class, this, UMLPackage.INTERACTION_USE__ACTUAL_GATE);
 		}
 		return actualGates;
 	}
@@ -226,9 +233,7 @@
 	 */
 	public Gate getActualGate(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		actualGateLoop : for (Iterator i = getActualGates().iterator(); i
-			.hasNext();) {
-			Gate actualGate = (Gate) i.next();
+		actualGateLoop : for (Gate actualGate : getActualGates()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(actualGate.getName())
 				: name.equals(actualGate.getName())))
@@ -245,10 +250,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getArguments() {
+	public EList<Action> getArguments() {
 		if (arguments == null) {
-			arguments = new EObjectContainmentEList.Resolving(Action.class,
-				this, UMLPackage.INTERACTION_USE__ARGUMENT);
+			arguments = new EObjectContainmentEList.Resolving<Action>(
+				Action.class, this, UMLPackage.INTERACTION_USE__ARGUMENT);
 		}
 		return arguments;
 	}
@@ -282,8 +287,7 @@
 	 */
 	public Action getArgument(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		argumentLoop : for (Iterator i = getArguments().iterator(); i.hasNext();) {
-			Action argument = (Action) i.next();
+		argumentLoop : for (Action argument : getArguments()) {
 			if (eClass != null && !eClass.isInstance(argument))
 				continue argumentLoop;
 			if (name != null && !(ignoreCase
@@ -302,7 +306,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGatesMatch(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGatesMatch(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InteractionUseOperations.validateGatesMatch(this, diagnostics,
 			context);
 	}
@@ -312,7 +317,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAllLifelines(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAllLifelines(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InteractionUseOperations.validateAllLifelines(this, diagnostics,
 			context);
 	}
@@ -323,7 +329,7 @@
 	 * @generated
 	 */
 	public boolean validateArgumentsCorrespondToParameters(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return InteractionUseOperations
 			.validateArgumentsCorrespondToParameters(this, diagnostics, context);
 	}
@@ -334,7 +340,7 @@
 	 * @generated
 	 */
 	public boolean validateArgumentsAreConstants(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InteractionUseOperations.validateArgumentsAreConstants(this,
 			diagnostics, context);
 	}
@@ -344,36 +350,37 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_USE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_USE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_USE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERACTION_USE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERACTION_USE__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERACTION_USE__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERACTION_USE__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
 			case UMLPackage.INTERACTION_USE__ENCLOSING_OPERAND :
 				return basicSetEnclosingOperand(null, msgs);
 			case UMLPackage.INTERACTION_USE__ACTUAL_GATE :
-				return ((InternalEList) getActualGates()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getActualGates()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERACTION_USE__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -383,6 +390,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_USE__EANNOTATIONS :
@@ -440,15 +448,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_USE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__NAME :
 				setName((String) newValue);
@@ -458,18 +470,20 @@
 				return;
 			case UMLPackage.INTERACTION_USE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -482,11 +496,11 @@
 				return;
 			case UMLPackage.INTERACTION_USE__ACTUAL_GATE :
 				getActualGates().clear();
-				getActualGates().addAll((Collection) newValue);
+				getActualGates().addAll((Collection<? extends Gate>) newValue);
 				return;
 			case UMLPackage.INTERACTION_USE__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments().addAll((Collection<? extends Action>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -497,6 +511,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_USE__EANNOTATIONS :
@@ -547,6 +562,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERACTION_USE__EANNOTATIONS :
@@ -609,6 +625,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.INTERACTION_USE__ACTUAL_GATE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceImpl.java
index 856f5ea..c9b76ca 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterfaceImpl.java,v 1.25 2006/11/14 18:02:16 khussey Exp $
+ * $Id: InterfaceImpl.java,v 1.26 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -40,20 +40,30 @@
 
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.ProtocolStateMachine;
 import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.InterfaceOperations;
@@ -92,7 +102,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedOperations() <em>Owned Operation</em>}' containment reference list.
@@ -102,7 +112,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedOperations = null;
+	protected EList<Operation> ownedOperations = null;
 
 	/**
 	 * The cached value of the '{@link #getNestedClassifiers() <em>Nested Classifier</em>}' containment reference list.
@@ -112,7 +122,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nestedClassifiers = null;
+	protected EList<Classifier> nestedClassifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getRedefinedInterfaces() <em>Redefined Interface</em>}' reference list.
@@ -122,7 +132,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedInterfaces = null;
+	protected EList<Interface> redefinedInterfaces = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedReceptions() <em>Owned Reception</em>}' containment reference list.
@@ -132,7 +142,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedReceptions = null;
+	protected EList<Reception> ownedReceptions = null;
 
 	/**
 	 * The cached value of the '{@link #getProtocol() <em>Protocol</em>}' containment reference.
@@ -158,6 +168,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERFACE;
 	}
@@ -167,23 +178,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.INTERFACE__ATTRIBUTE,
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.INTERFACE__ATTRIBUTE,
 						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.INTERFACE__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -192,25 +204,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.INTERFACE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.INTERFACE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.INTERFACE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -218,24 +231,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.INTERFACE__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.INTERFACE__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.INTERFACE__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -244,22 +263,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.INTERFACE__FEATURE, FEATURE_ESUBSETS));
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this, UMLPackage.INTERFACE__FEATURE,
+						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.INTERFACE__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -268,9 +289,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this, UMLPackage.INTERFACE__OWNED_ATTRIBUTE);
 		}
 		return ownedAttributes;
@@ -316,9 +337,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -339,9 +358,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNestedClassifiers() {
+	public EList<Classifier> getNestedClassifiers() {
 		if (nestedClassifiers == null) {
-			nestedClassifiers = new EObjectContainmentEList.Resolving(
+			nestedClassifiers = new EObjectContainmentEList.Resolving<Classifier>(
 				Classifier.class, this, UMLPackage.INTERFACE__NESTED_CLASSIFIER);
 		}
 		return nestedClassifiers;
@@ -376,9 +395,7 @@
 	 */
 	public Classifier getNestedClassifier(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		nestedClassifierLoop : for (Iterator i = getNestedClassifiers()
-			.iterator(); i.hasNext();) {
-			Classifier nestedClassifier = (Classifier) i.next();
+		nestedClassifierLoop : for (Classifier nestedClassifier : getNestedClassifiers()) {
 			if (eClass != null && !eClass.isInstance(nestedClassifier))
 				continue nestedClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -397,10 +414,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedInterfaces() {
+	public EList<Interface> getRedefinedInterfaces() {
 		if (redefinedInterfaces == null) {
-			redefinedInterfaces = new EObjectResolvingEList(Interface.class,
-				this, UMLPackage.INTERFACE__REDEFINED_INTERFACE);
+			redefinedInterfaces = new EObjectResolvingEList<Interface>(
+				Interface.class, this,
+				UMLPackage.INTERFACE__REDEFINED_INTERFACE);
 		}
 		return redefinedInterfaces;
 	}
@@ -420,9 +438,7 @@
 	 * @generated
 	 */
 	public Interface getRedefinedInterface(String name, boolean ignoreCase) {
-		redefinedInterfaceLoop : for (Iterator i = getRedefinedInterfaces()
-			.iterator(); i.hasNext();) {
-			Interface redefinedInterface = (Interface) i.next();
+		redefinedInterfaceLoop : for (Interface redefinedInterface : getRedefinedInterfaces()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(redefinedInterface.getName())
 				: name.equals(redefinedInterface.getName())))
@@ -437,9 +453,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedReceptions() {
+	public EList<Reception> getOwnedReceptions() {
 		if (ownedReceptions == null) {
-			ownedReceptions = new EObjectContainmentEList.Resolving(
+			ownedReceptions = new EObjectContainmentEList.Resolving<Reception>(
 				Reception.class, this, UMLPackage.INTERFACE__OWNED_RECEPTION);
 		}
 		return ownedReceptions;
@@ -451,7 +467,7 @@
 	 * @generated
 	 */
 	public Reception createOwnedReception(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Reception newOwnedReception = (Reception) create(UMLPackage.Literals.RECEPTION);
 		getOwnedReceptions().add(newOwnedReception);
 		if (name != null)
@@ -482,8 +498,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Reception getOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedReception(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -493,28 +509,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Reception getOwnedReception(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedReceptionLoop : for (Iterator i = getOwnedReceptions().iterator(); i
-			.hasNext();) {
-			Reception ownedReception = (Reception) i.next();
+	public Reception getOwnedReception(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedReceptionLoop : for (Reception ownedReception : getOwnedReceptions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedReception.getName())
 				: name.equals(ownedReception.getName())))
 				continue ownedReceptionLoop;
-			EList ownedParameterList = ownedReception.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedReception
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedReceptionLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -635,9 +649,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedOperations() {
+	public EList<Operation> getOwnedOperations() {
 		if (ownedOperations == null) {
-			ownedOperations = new EObjectContainmentWithInverseEList.Resolving(
+			ownedOperations = new EObjectContainmentWithInverseEList.Resolving<Operation>(
 				Operation.class, this, UMLPackage.INTERFACE__OWNED_OPERATION,
 				UMLPackage.OPERATION__INTERFACE);
 		}
@@ -650,7 +664,7 @@
 	 * @generated
 	 */
 	public Operation createOwnedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		Operation newOwnedOperation = (Operation) create(UMLPackage.Literals.OPERATION);
 		getOwnedOperations().add(newOwnedOperation);
 		if (name != null)
@@ -681,8 +695,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getOwnedOperation(name, ownedParameterNames,
 			ownedParameterTypes, false, false);
 	}
@@ -692,28 +706,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getOwnedOperation(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase,
-			boolean createOnDemand) {
-		ownedOperationLoop : for (Iterator i = getOwnedOperations().iterator(); i
-			.hasNext();) {
-			Operation ownedOperation = (Operation) i.next();
+	public Operation getOwnedOperation(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase, boolean createOnDemand) {
+		ownedOperationLoop : for (Operation ownedOperation : getOwnedOperations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedOperation.getName())
 				: name.equals(ownedOperation.getName())))
 				continue ownedOperationLoop;
-			EList ownedParameterList = ownedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = ownedOperation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue ownedOperationLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -736,7 +748,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateVisibility(DiagnosticChain diagnostics, Map context) {
+	public boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return InterfaceOperations.validateVisibility(this, diagnostics,
 			context);
 	}
@@ -746,8 +759,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation createOwnedOperation(String name, EList parameterNames,
-			EList parameterTypes, Type returnType) {
+	public Operation createOwnedOperation(String name,
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			Type returnType) {
 		return InterfaceOperations.createOwnedOperation(this, name,
 			parameterNames, parameterTypes, returnType);
 	}
@@ -768,24 +782,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -800,8 +816,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.INTERFACE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -811,19 +827,20 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.INTERFACE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -833,67 +850,68 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERFACE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERFACE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.INTERFACE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.INTERFACE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.INTERFACE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERFACE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE__PROTOCOL :
 				return basicSetProtocol(null, msgs);
@@ -906,6 +924,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
@@ -1025,15 +1044,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERFACE__NAME :
 				setName((String) newValue);
@@ -1043,22 +1066,26 @@
 				return;
 			case UMLPackage.INTERFACE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERFACE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.INTERFACE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.INTERFACE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INTERFACE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1074,7 +1101,8 @@
 				return;
 			case UMLPackage.INTERFACE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1084,58 +1112,70 @@
 				return;
 			case UMLPackage.INTERFACE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.INTERFACE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.INTERFACE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERFACE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERFACE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.INTERFACE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.INTERFACE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INTERFACE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.INTERFACE__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.INTERFACE__REDEFINED_INTERFACE :
 				getRedefinedInterfaces().clear();
-				getRedefinedInterfaces().addAll((Collection) newValue);
+				getRedefinedInterfaces().addAll(
+					(Collection<? extends Interface>) newValue);
 				return;
 			case UMLPackage.INTERFACE__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.INTERFACE__PROTOCOL :
 				setProtocol((ProtocolStateMachine) newValue);
@@ -1149,6 +1189,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
@@ -1253,6 +1294,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE__EANNOTATIONS :
@@ -1367,6 +1409,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.INTERFACE__OWNED_ATTRIBUTE);
@@ -1392,6 +1435,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.INTERFACE__OWNED_ATTRIBUTE)
@@ -1418,6 +1462,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.INTERFACE__REDEFINED_INTERFACE);
@@ -1428,6 +1473,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.INTERFACE__OWNED_OPERATION)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceRealizationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceRealizationImpl.java
index 77e5f14..daf580d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceRealizationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterfaceRealizationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterfaceRealizationImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InterfaceRealizationImpl.java,v 1.15 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,6 +33,8 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.BehavioredClassifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
@@ -85,6 +88,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERFACE_REALIZATION;
 	}
@@ -94,9 +98,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new SubsetSupersetEObjectResolvingEList(
+			suppliers = new SubsetSupersetEObjectResolvingEList<NamedElement>(
 				NamedElement.class, this,
 				UMLPackage.INTERFACE_REALIZATION__SUPPLIER, null,
 				SUPPLIER_ESUBSETS);
@@ -119,9 +123,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClients() {
+	public EList<NamedElement> getClients() {
 		if (clients == null) {
-			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<NamedElement>(
 				NamedElement.class, this,
 				UMLPackage.INTERFACE_REALIZATION__CLIENT, null,
 				CLIENT_ESUBSETS, UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY);
@@ -184,7 +188,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newContract != null) {
-				EList suppliers = getSuppliers();
+				EList<NamedElement> suppliers = getSuppliers();
 				if (!suppliers.contains(newContract)) {
 					suppliers.add(newContract);
 				}
@@ -228,7 +232,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newImplementingClassifier != null) {
-				EList clients = getClients();
+				EList<NamedElement> clients = getClients();
 				if (!clients.contains(newImplementingClassifier)) {
 					clients.add(newImplementingClassifier);
 				}
@@ -275,15 +279,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -298,7 +304,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT :
-				return ((InternalEList) getClients()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClients())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__IMPLEMENTING_CLASSIFIER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -313,18 +320,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__OWNING_TEMPLATE_PARAMETER :
@@ -332,7 +340,7 @@
 			case UMLPackage.INTERFACE_REALIZATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INTERFACE_REALIZATION__MAPPING :
 				return basicSetMapping(null, msgs);
@@ -347,6 +355,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -367,6 +376,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
@@ -434,15 +444,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__NAME :
 				setName((String) newValue);
@@ -452,7 +466,8 @@
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -465,11 +480,13 @@
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.INTERFACE_REALIZATION__MAPPING :
 				setMapping((OpaqueExpression) newValue);
@@ -489,6 +506,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
@@ -539,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERFACE_REALIZATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterruptibleActivityRegionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterruptibleActivityRegionImpl.java
index 491a923..cd3f32c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterruptibleActivityRegionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InterruptibleActivityRegionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterruptibleActivityRegionImpl.java,v 1.16 2006/11/14 18:02:17 khussey Exp $
+ * $Id: InterruptibleActivityRegionImpl.java,v 1.17 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,6 +36,7 @@
 import org.eclipse.uml2.uml.Activity;
 import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.UMLPackage;
 
@@ -68,7 +69,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nodes = null;
+	protected EList<ActivityNode> nodes = null;
 
 	/**
 	 * The cached value of the '{@link #getInterruptingEdges() <em>Interrupting Edge</em>}' reference list.
@@ -78,7 +79,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList interruptingEdges = null;
+	protected EList<ActivityEdge> interruptingEdges = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -94,6 +95,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERRUPTIBLE_ACTIVITY_REGION;
 	}
@@ -103,20 +105,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedNodes() {
+	public EList<ActivityNode> getContainedNodes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedNodes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityNode> containedNodes = (EList<ActivityNode>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
 			if (containedNodes == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
-						containedNodes = new DerivedUnionEObjectEList(
+						containedNodes = new DerivedUnionEObjectEList<ActivityNode>(
 							ActivityNode.class,
 							this,
 							UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE,
@@ -124,8 +128,8 @@
 			}
 			return containedNodes;
 		}
-		return new DerivedUnionEObjectEList(ActivityNode.class, this,
-			UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE,
+		return new DerivedUnionEObjectEList<ActivityNode>(ActivityNode.class,
+			this, UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE,
 			CONTAINED_NODE_ESUBSETS);
 	}
 
@@ -134,9 +138,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNodes() {
+	public EList<ActivityNode> getNodes() {
 		if (nodes == null) {
-			nodes = new EObjectWithInverseResolvingEList.ManyInverse(
+			nodes = new EObjectWithInverseResolvingEList.ManyInverse<ActivityNode>(
 				ActivityNode.class, this,
 				UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE,
 				UMLPackage.ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION);
@@ -159,8 +163,7 @@
 	 * @generated
 	 */
 	public ActivityNode getNode(String name, boolean ignoreCase, EClass eClass) {
-		nodeLoop : for (Iterator i = getNodes().iterator(); i.hasNext();) {
-			ActivityNode node = (ActivityNode) i.next();
+		nodeLoop : for (ActivityNode node : getNodes()) {
 			if (eClass != null && !eClass.isInstance(node))
 				continue nodeLoop;
 			if (name != null && !(ignoreCase
@@ -177,9 +180,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInterruptingEdges() {
+	public EList<ActivityEdge> getInterruptingEdges() {
 		if (interruptingEdges == null) {
-			interruptingEdges = new EObjectWithInverseResolvingEList(
+			interruptingEdges = new EObjectWithInverseResolvingEList<ActivityEdge>(
 				ActivityEdge.class, this,
 				UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE,
 				UMLPackage.ACTIVITY_EDGE__INTERRUPTS);
@@ -203,9 +206,7 @@
 	 */
 	public ActivityEdge getInterruptingEdge(String name, boolean ignoreCase,
 			EClass eClass) {
-		interruptingEdgeLoop : for (Iterator i = getInterruptingEdges()
-			.iterator(); i.hasNext();) {
-			ActivityEdge interruptingEdge = (ActivityEdge) i.next();
+		interruptingEdgeLoop : for (ActivityEdge interruptingEdge : getInterruptingEdges()) {
 			if (eClass != null && !eClass.isInstance(interruptingEdge))
 				continue interruptingEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -223,7 +224,7 @@
 	 * @generated
 	 */
 	public boolean validateInterruptingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InterruptibleActivityRegionOperations.validateInterruptingEdges(
 			this, diagnostics, context);
 	}
@@ -233,21 +234,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__IN_ACTIVITY :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetInActivity((Activity) otherEnd, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE :
-				return ((InternalEList) getNodes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getNodes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE :
-				return ((InternalEList) getInterruptingEdges()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterruptingEdges())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -257,21 +261,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE :
-				return ((InternalEList) getInterruptingEdges()).basicRemove(
+				return ((InternalEList<?>) getInterruptingEdges()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -282,6 +288,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
@@ -321,26 +328,32 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE :
 				getInterruptingEdges().clear();
-				getInterruptingEdges().addAll((Collection) newValue);
+				getInterruptingEdges().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -351,6 +364,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
@@ -377,6 +391,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS :
@@ -421,6 +436,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetContainedNodes() {
 		return super.isSetContainedNodes()
 			|| eIsSet(UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION__NODE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalConstraintImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalConstraintImpl.java
index 35caaf4..1b1e48d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalConstraintImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalConstraintImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: IntervalConstraintImpl.java,v 1.17 2006/11/14 18:02:18 khussey Exp $
+ * $Id: IntervalConstraintImpl.java,v 1.18 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -57,6 +57,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERVAL_CONSTRAINT;
 	}
@@ -125,6 +126,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetSpecification(
 			ValueSpecification newSpecification, NotificationChain msgs) {
 
@@ -169,6 +171,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ValueSpecification createSpecification(String name, Type type,
 			EClass eClass) {
 		ValueSpecification newSpecification = (ValueSpecification) create(eClass);
@@ -194,6 +197,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL_CONSTRAINT__EANNOTATIONS :
@@ -249,6 +253,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL_CONSTRAINT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalImpl.java
index 747b4f8..3c9fc34 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/IntervalImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: IntervalImpl.java,v 1.11 2006/11/14 18:02:16 khussey Exp $
+ * $Id: IntervalImpl.java,v 1.12 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Interval;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -80,6 +83,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INTERVAL;
 	}
@@ -173,6 +177,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL__EANNOTATIONS :
@@ -230,15 +235,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INTERVAL__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INTERVAL__NAME :
 				setName((String) newValue);
@@ -248,7 +257,8 @@
 				return;
 			case UMLPackage.INTERVAL__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INTERVAL__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -277,6 +287,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL__EANNOTATIONS :
@@ -321,6 +332,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INTERVAL__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InvocationActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InvocationActionImpl.java
index 4dcb8d9..ed73472 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InvocationActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/InvocationActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InvocationActionImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: InvocationActionImpl.java,v 1.24 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.InvocationAction;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.StringExpression;
@@ -75,7 +83,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList arguments = null;
+	protected EList<InputPin> arguments = null;
 
 	/**
 	 * The cached value of the '{@link #getOnPort() <em>On Port</em>}' reference.
@@ -101,6 +109,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.INVOCATION_ACTION;
 	}
@@ -110,21 +119,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.INVOCATION_ACTION__INPUT, INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.INVOCATION_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -133,10 +144,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getArguments() {
+	public EList<InputPin> getArguments() {
 		if (arguments == null) {
-			arguments = new EObjectContainmentEList.Resolving(InputPin.class,
-				this, UMLPackage.INVOCATION_ACTION__ARGUMENT);
+			arguments = new EObjectContainmentEList.Resolving<InputPin>(
+				InputPin.class, this, UMLPackage.INVOCATION_ACTION__ARGUMENT);
 		}
 		return arguments;
 	}
@@ -181,8 +192,7 @@
 	 */
 	public InputPin getArgument(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		argumentLoop : for (Iterator i = getArguments().iterator(); i.hasNext();) {
-			InputPin argument = (InputPin) i.next();
+		argumentLoop : for (InputPin argument : getArguments()) {
 			if (eClass != null && !eClass.isInstance(argument))
 				continue argumentLoop;
 			if (name != null && !(ignoreCase
@@ -247,7 +257,7 @@
 	 * @generated
 	 */
 	public boolean validateOnPortReceiver(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return InvocationActionOperations.validateOnPortReceiver(this,
 			diagnostics, context);
 	}
@@ -257,18 +267,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.INVOCATION_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.INVOCATION_ACTION__IN_STRUCTURED_NODE :
@@ -276,29 +287,29 @@
 			case UMLPackage.INVOCATION_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.INVOCATION_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.INVOCATION_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.INVOCATION_ACTION__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -308,6 +319,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.INVOCATION_ACTION__EANNOTATIONS :
@@ -393,15 +405,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.INVOCATION_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__NAME :
 				setName((String) newValue);
@@ -411,7 +427,8 @@
 				return;
 			case UMLPackage.INVOCATION_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -427,39 +444,49 @@
 				return;
 			case UMLPackage.INVOCATION_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.INVOCATION_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -473,6 +500,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INVOCATION_ACTION__EANNOTATIONS :
@@ -541,6 +569,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.INVOCATION_ACTION__EANNOTATIONS :
@@ -626,6 +655,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.INVOCATION_ACTION__ARGUMENT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/JoinNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/JoinNodeImpl.java
index 54938a8..f3ed244 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/JoinNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/JoinNodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: JoinNodeImpl.java,v 1.22 2006/11/14 18:02:19 khussey Exp $
+ * $Id: JoinNodeImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,13 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.JoinNode;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -110,6 +117,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.JOIN_NODE;
 	}
@@ -119,23 +127,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.JOIN_NODE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.JOIN_NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.JOIN_NODE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -274,7 +284,7 @@
 	 * @generated
 	 */
 	public boolean validateOneOutgoingEdge(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return JoinNodeOperations.validateOneOutgoingEdge(this, diagnostics,
 			context);
 	}
@@ -285,7 +295,7 @@
 	 * @generated
 	 */
 	public boolean validateIncomingObjectFlow(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return JoinNodeOperations.validateIncomingObjectFlow(this, diagnostics,
 			context);
 	}
@@ -295,18 +305,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.JOIN_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.JOIN_NODE__IN_STRUCTURED_NODE :
@@ -314,16 +325,16 @@
 			case UMLPackage.JOIN_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.JOIN_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.JOIN_NODE__JOIN_SPEC :
 				return basicSetJoinSpec(null, msgs);
@@ -336,6 +347,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.JOIN_NODE__EANNOTATIONS :
@@ -409,15 +421,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.JOIN_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__NAME :
 				setName((String) newValue);
@@ -427,7 +443,8 @@
 				return;
 			case UMLPackage.JOIN_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -443,23 +460,29 @@
 				return;
 			case UMLPackage.JOIN_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.JOIN_NODE__IS_COMBINE_DUPLICATE :
 				setIsCombineDuplicate(((Boolean) newValue).booleanValue());
@@ -476,6 +499,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.JOIN_NODE__EANNOTATIONS :
@@ -535,6 +559,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.JOIN_NODE__EANNOTATIONS :
@@ -596,6 +621,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -624,6 +650,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.JOIN_NODE__JOIN_SPEC);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LifelineImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LifelineImpl.java
index fba605f..ce8893c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LifelineImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LifelineImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LifelineImpl.java,v 1.19 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LifelineImpl.java,v 1.20 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionFragment;
@@ -113,7 +115,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList coveredBys = null;
+	protected EList<InteractionFragment> coveredBys = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -129,6 +131,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LIFELINE;
 	}
@@ -150,23 +153,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.LIFELINE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.LIFELINE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.LIFELINE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -426,9 +431,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCoveredBys() {
+	public EList<InteractionFragment> getCoveredBys() {
 		if (coveredBys == null) {
-			coveredBys = new EObjectWithInverseResolvingEList.ManyInverse(
+			coveredBys = new EObjectWithInverseResolvingEList.ManyInverse<InteractionFragment>(
 				InteractionFragment.class, this,
 				UMLPackage.LIFELINE__COVERED_BY,
 				UMLPackage.INTERACTION_FRAGMENT__COVERED);
@@ -452,9 +457,7 @@
 	 */
 	public InteractionFragment getCoveredBy(String name, boolean ignoreCase,
 			EClass eClass) {
-		coveredByLoop : for (Iterator i = getCoveredBys().iterator(); i
-			.hasNext();) {
-			InteractionFragment coveredBy = (InteractionFragment) i.next();
+		coveredByLoop : for (InteractionFragment coveredBy : getCoveredBys()) {
 			if (eClass != null && !eClass.isInstance(coveredBy))
 				continue coveredByLoop;
 			if (name != null && !(ignoreCase
@@ -472,7 +475,7 @@
 	 * @generated
 	 */
 	public boolean validateInteractionUsesShareLifeline(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return LifelineOperations.validateInteractionUsesShareLifeline(this,
 			diagnostics, context);
 	}
@@ -483,7 +486,7 @@
 	 * @generated
 	 */
 	public boolean validateSelectorSpecified(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LifelineOperations.validateSelectorSpecified(this, diagnostics,
 			context);
 	}
@@ -494,7 +497,7 @@
 	 * @generated
 	 */
 	public boolean validateSameClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LifelineOperations.validateSameClassifier(this, diagnostics,
 			context);
 	}
@@ -504,22 +507,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.LIFELINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.LIFELINE__INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetInteraction((Interaction) otherEnd, msgs);
 			case UMLPackage.LIFELINE__COVERED_BY :
-				return ((InternalEList) getCoveredBys()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getCoveredBys())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -529,18 +534,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LIFELINE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LIFELINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LIFELINE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.LIFELINE__INTERACTION :
@@ -548,8 +554,8 @@
 			case UMLPackage.LIFELINE__SELECTOR :
 				return basicSetSelector(null, msgs);
 			case UMLPackage.LIFELINE__COVERED_BY :
-				return ((InternalEList) getCoveredBys()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getCoveredBys()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -559,6 +565,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -574,6 +581,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
@@ -629,15 +637,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LIFELINE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LIFELINE__NAME :
 				setName((String) newValue);
@@ -647,7 +659,8 @@
 				return;
 			case UMLPackage.LIFELINE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LIFELINE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -666,7 +679,8 @@
 				return;
 			case UMLPackage.LIFELINE__COVERED_BY :
 				getCoveredBys().clear();
-				getCoveredBys().addAll((Collection) newValue);
+				getCoveredBys().addAll(
+					(Collection<? extends InteractionFragment>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -677,6 +691,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
@@ -721,6 +736,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LIFELINE__EANNOTATIONS :
@@ -779,6 +795,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.LIFELINE__INTERACTION);
@@ -801,6 +818,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.LIFELINE__SELECTOR);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkActionImpl.java
index 050c86f..17a4c3f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkActionImpl.java,v 1.22 2006/11/14 18:02:16 khussey Exp $
+ * $Id: LinkActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,8 +34,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.LinkAction;
 import org.eclipse.uml2.uml.LinkEndData;
 import org.eclipse.uml2.uml.StringExpression;
@@ -73,7 +81,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList endData = null;
+	protected EList<LinkEndData> endData = null;
 
 	/**
 	 * The cached value of the '{@link #getInputValues() <em>Input Value</em>}' containment reference list.
@@ -83,7 +91,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inputValues = null;
+	protected EList<InputPin> inputValues = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -99,6 +107,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LINK_ACTION;
 	}
@@ -108,21 +117,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.LINK_ACTION__INPUT, INPUT_ESUBSETS));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.LINK_ACTION__INPUT,
+						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.LINK_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -131,10 +142,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEndData() {
+	public EList<LinkEndData> getEndData() {
 		if (endData == null) {
-			endData = new EObjectContainmentEList.Resolving(LinkEndData.class,
-				this, UMLPackage.LINK_ACTION__END_DATA);
+			endData = new EObjectContainmentEList.Resolving<LinkEndData>(
+				LinkEndData.class, this, UMLPackage.LINK_ACTION__END_DATA);
 		}
 		return endData;
 	}
@@ -164,10 +175,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputValues() {
+	public EList<InputPin> getInputValues() {
 		if (inputValues == null) {
-			inputValues = new EObjectContainmentEList.Resolving(InputPin.class,
-				this, UMLPackage.LINK_ACTION__INPUT_VALUE);
+			inputValues = new EObjectContainmentEList.Resolving<InputPin>(
+				InputPin.class, this, UMLPackage.LINK_ACTION__INPUT_VALUE);
 		}
 		return inputValues;
 	}
@@ -212,9 +223,7 @@
 	 */
 	public InputPin getInputValue(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		inputValueLoop : for (Iterator i = getInputValues().iterator(); i
-			.hasNext();) {
-			InputPin inputValue = (InputPin) i.next();
+		inputValueLoop : for (InputPin inputValue : getInputValues()) {
 			if (eClass != null && !eClass.isInstance(inputValue))
 				continue inputValueLoop;
 			if (name != null && !(ignoreCase
@@ -236,7 +245,7 @@
 	 * @generated
 	 */
 	public boolean validateSameAssociation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LinkActionOperations.validateSameAssociation(this, diagnostics,
 			context);
 	}
@@ -246,7 +255,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotStatic(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LinkActionOperations.validateNotStatic(this, diagnostics,
 			context);
 	}
@@ -256,7 +266,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSamePins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSamePins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LinkActionOperations
 			.validateSamePins(this, diagnostics, context);
 	}
@@ -275,18 +286,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.LINK_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.LINK_ACTION__IN_STRUCTURED_NODE :
@@ -294,32 +306,32 @@
 			case UMLPackage.LINK_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.LINK_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.LINK_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LINK_ACTION__END_DATA :
-				return ((InternalEList) getEndData()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getEndData()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.LINK_ACTION__INPUT_VALUE :
-				return ((InternalEList) getInputValues()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getInputValues()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -329,6 +341,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LINK_ACTION__EANNOTATIONS :
@@ -412,15 +425,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LINK_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__NAME :
 				setName((String) newValue);
@@ -430,7 +447,8 @@
 				return;
 			case UMLPackage.LINK_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -446,43 +464,54 @@
 				return;
 			case UMLPackage.LINK_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__END_DATA :
 				getEndData().clear();
-				getEndData().addAll((Collection) newValue);
+				getEndData().addAll(
+					(Collection<? extends LinkEndData>) newValue);
 				return;
 			case UMLPackage.LINK_ACTION__INPUT_VALUE :
 				getInputValues().clear();
-				getInputValues().addAll((Collection) newValue);
+				getInputValues().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -493,6 +522,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_ACTION__EANNOTATIONS :
@@ -561,6 +591,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_ACTION__EANNOTATIONS :
@@ -646,6 +677,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.LINK_ACTION__INPUT_VALUE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndCreationDataImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndCreationDataImpl.java
index 691f26c..10f9595 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndCreationDataImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndCreationDataImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndCreationDataImpl.java,v 1.9 2006/11/14 18:02:16 khussey Exp $
+ * $Id: LinkEndCreationDataImpl.java,v 1.10 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,17 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.InputPin;
 import org.eclipse.uml2.uml.LinkEndCreationData;
 import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.QualifierValue;
 import org.eclipse.uml2.uml.UMLPackage;
 
 import org.eclipse.uml2.uml.internal.operations.LinkEndCreationDataOperations;
@@ -93,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LINK_END_CREATION_DATA;
 	}
@@ -175,7 +179,7 @@
 	 * @generated
 	 */
 	public boolean validateCreateLinkAction(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LinkEndCreationDataOperations.validateCreateLinkAction(this,
 			diagnostics, context);
 	}
@@ -186,7 +190,7 @@
 	 * @generated
 	 */
 	public boolean validateSingleInputPin(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LinkEndCreationDataOperations.validateSingleInputPin(this,
 			diagnostics, context);
 	}
@@ -196,6 +200,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_CREATION_DATA__EANNOTATIONS :
@@ -235,15 +240,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_CREATION_DATA__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LINK_END_CREATION_DATA__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LINK_END_CREATION_DATA__VALUE :
 				setValue((InputPin) newValue);
@@ -253,7 +262,8 @@
 				return;
 			case UMLPackage.LINK_END_CREATION_DATA__QUALIFIER :
 				getQualifiers().clear();
-				getQualifiers().addAll((Collection) newValue);
+				getQualifiers().addAll(
+					(Collection<? extends QualifierValue>) newValue);
 				return;
 			case UMLPackage.LINK_END_CREATION_DATA__IS_REPLACE_ALL :
 				setIsReplaceAll(((Boolean) newValue).booleanValue());
@@ -270,6 +280,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_CREATION_DATA__EANNOTATIONS :
@@ -302,6 +313,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_CREATION_DATA__EANNOTATIONS :
@@ -331,6 +343,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDataImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDataImpl.java
index bb85a7e..52b8f12 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDataImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDataImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndDataImpl.java,v 1.12 2006/11/14 18:02:20 khussey Exp $
+ * $Id: LinkEndDataImpl.java,v 1.13 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -30,6 +31,7 @@
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.InputPin;
 import org.eclipse.uml2.uml.LinkEndData;
 import org.eclipse.uml2.uml.Property;
@@ -85,7 +87,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList qualifiers = null;
+	protected EList<QualifierValue> qualifiers = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -101,6 +103,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LINK_END_DATA;
 	}
@@ -194,9 +197,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getQualifiers() {
+	public EList<QualifierValue> getQualifiers() {
 		if (qualifiers == null) {
-			qualifiers = new EObjectContainmentEList.Resolving(
+			qualifiers = new EObjectContainmentEList.Resolving<QualifierValue>(
 				QualifierValue.class, this, UMLPackage.LINK_END_DATA__QUALIFIER);
 		}
 		return qualifiers;
@@ -219,7 +222,7 @@
 	 * @generated
 	 */
 	public boolean validatePropertyIsAssociationEnd(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return LinkEndDataOperations.validatePropertyIsAssociationEnd(this,
 			diagnostics, context);
 	}
@@ -229,7 +232,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LinkEndDataOperations.validateSameType(this, diagnostics,
 			context);
 	}
@@ -239,7 +243,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LinkEndDataOperations.validateMultiplicity(this, diagnostics,
 			context);
 	}
@@ -249,7 +254,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateQualifiers(DiagnosticChain diagnostics, Map context) {
+	public boolean validateQualifiers(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LinkEndDataOperations.validateQualifiers(this, diagnostics,
 			context);
 	}
@@ -260,7 +266,7 @@
 	 * @generated
 	 */
 	public boolean validateEndObjectInputPin(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LinkEndDataOperations.validateEndObjectInputPin(this,
 			diagnostics, context);
 	}
@@ -270,18 +276,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DATA__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LINK_END_DATA__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LINK_END_DATA__QUALIFIER :
-				return ((InternalEList) getQualifiers()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getQualifiers()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -291,6 +298,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DATA__EANNOTATIONS :
@@ -322,15 +330,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DATA__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LINK_END_DATA__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LINK_END_DATA__VALUE :
 				setValue((InputPin) newValue);
@@ -340,7 +352,8 @@
 				return;
 			case UMLPackage.LINK_END_DATA__QUALIFIER :
 				getQualifiers().clear();
-				getQualifiers().addAll((Collection) newValue);
+				getQualifiers().addAll(
+					(Collection<? extends QualifierValue>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -351,6 +364,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DATA__EANNOTATIONS :
@@ -377,6 +391,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DATA__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDestructionDataImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDestructionDataImpl.java
index cd3e1a7..6a30b94 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDestructionDataImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LinkEndDestructionDataImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndDestructionDataImpl.java,v 1.9 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LinkEndDestructionDataImpl.java,v 1.10 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,17 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.InputPin;
 import org.eclipse.uml2.uml.LinkEndDestructionData;
 import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.QualifierValue;
 import org.eclipse.uml2.uml.UMLPackage;
 
 import org.eclipse.uml2.uml.internal.operations.LinkEndDestructionDataOperations;
@@ -93,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LINK_END_DESTRUCTION_DATA;
 	}
@@ -175,7 +179,7 @@
 	 * @generated
 	 */
 	public boolean validateDestroyLinkAction(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LinkEndDestructionDataOperations.validateDestroyLinkAction(this,
 			diagnostics, context);
 	}
@@ -186,7 +190,7 @@
 	 * @generated
 	 */
 	public boolean validateUnlimitedNaturalAndMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return LinkEndDestructionDataOperations
 			.validateUnlimitedNaturalAndMultiplicity(this, diagnostics, context);
 	}
@@ -196,6 +200,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__EANNOTATIONS :
@@ -235,15 +240,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__VALUE :
 				setValue((InputPin) newValue);
@@ -253,7 +262,8 @@
 				return;
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__QUALIFIER :
 				getQualifiers().clear();
-				getQualifiers().addAll((Collection) newValue);
+				getQualifiers().addAll(
+					(Collection<? extends QualifierValue>) newValue);
 				return;
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__IS_DESTROY_DUPLICATES :
 				setIsDestroyDuplicates(((Boolean) newValue).booleanValue());
@@ -270,6 +280,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__EANNOTATIONS :
@@ -302,6 +313,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LINK_END_DESTRUCTION_DATA__EANNOTATIONS :
@@ -331,6 +343,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralBooleanImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralBooleanImpl.java
index 5080cba..bf57fd6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralBooleanImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralBooleanImpl.java
@@ -8,16 +8,19 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralBooleanImpl.java,v 1.13 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LiteralBooleanImpl.java,v 1.14 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.LiteralBoolean;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -78,6 +81,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_BOOLEAN;
 	}
@@ -141,6 +145,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_BOOLEAN__EANNOTATIONS :
@@ -194,15 +199,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_BOOLEAN__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LITERAL_BOOLEAN__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LITERAL_BOOLEAN__NAME :
 				setName((String) newValue);
@@ -212,7 +221,8 @@
 				return;
 			case UMLPackage.LITERAL_BOOLEAN__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LITERAL_BOOLEAN__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -238,6 +248,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_BOOLEAN__EANNOTATIONS :
@@ -279,6 +290,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_BOOLEAN__EANNOTATIONS :
@@ -321,6 +333,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralIntegerImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralIntegerImpl.java
index a888541..345d9c0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralIntegerImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralIntegerImpl.java
@@ -8,16 +8,19 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralIntegerImpl.java,v 1.13 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LiteralIntegerImpl.java,v 1.14 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.LiteralInteger;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -78,6 +81,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_INTEGER;
 	}
@@ -138,6 +142,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_INTEGER__EANNOTATIONS :
@@ -189,15 +194,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_INTEGER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LITERAL_INTEGER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LITERAL_INTEGER__NAME :
 				setName((String) newValue);
@@ -207,7 +216,8 @@
 				return;
 			case UMLPackage.LITERAL_INTEGER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LITERAL_INTEGER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -233,6 +243,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_INTEGER__EANNOTATIONS :
@@ -274,6 +285,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_INTEGER__EANNOTATIONS :
@@ -316,6 +328,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralNullImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralNullImpl.java
index 2939875..4a9e09b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralNullImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralNullImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralNullImpl.java,v 1.2 2005/11/23 20:01:18 khussey Exp $
+ * $Id: LiteralNullImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -46,6 +46,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_NULL;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralSpecificationImpl.java
index fa4aa7b..fa5c3a0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralSpecificationImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralSpecificationImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: LiteralSpecificationImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_SPECIFICATION;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralStringImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralStringImpl.java
index 4d39686..9cd86a5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralStringImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralStringImpl.java
@@ -8,16 +8,19 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralStringImpl.java,v 1.13 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LiteralStringImpl.java,v 1.14 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.LiteralString;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -87,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_STRING;
 	}
@@ -184,6 +188,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_STRING__EANNOTATIONS :
@@ -235,15 +240,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_STRING__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LITERAL_STRING__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LITERAL_STRING__NAME :
 				setName((String) newValue);
@@ -253,7 +262,8 @@
 				return;
 			case UMLPackage.LITERAL_STRING__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LITERAL_STRING__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -279,6 +289,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_STRING__EANNOTATIONS :
@@ -320,6 +331,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_STRING__EANNOTATIONS :
@@ -362,6 +374,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralUnlimitedNaturalImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralUnlimitedNaturalImpl.java
index c1e60b9..ecec1cc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralUnlimitedNaturalImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LiteralUnlimitedNaturalImpl.java
@@ -8,16 +8,19 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LiteralUnlimitedNaturalImpl.java,v 1.13 2006/11/14 18:02:17 khussey Exp $
+ * $Id: LiteralUnlimitedNaturalImpl.java,v 1.14 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -78,6 +81,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LITERAL_UNLIMITED_NATURAL;
 	}
@@ -138,6 +142,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__EANNOTATIONS :
@@ -189,15 +194,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__NAME :
 				setName((String) newValue);
@@ -207,7 +216,8 @@
 				return;
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -233,6 +243,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__EANNOTATIONS :
@@ -274,6 +285,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL__EANNOTATIONS :
@@ -316,6 +328,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LoopNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LoopNodeImpl.java
index 83136ad..09da2cb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LoopNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/LoopNodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LoopNodeImpl.java,v 1.24 2006/11/14 18:02:20 khussey Exp $
+ * $Id: LoopNodeImpl.java,v 1.25 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -38,14 +38,25 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.ExecutableNode;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.LoopNode;
 import org.eclipse.uml2.uml.OutputPin;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.Variable;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.LoopNodeOperations;
@@ -105,7 +116,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodyParts = null;
+	protected EList<ExecutableNode> bodyParts = null;
 
 	/**
 	 * The cached value of the '{@link #getSetupParts() <em>Setup Part</em>}' reference list.
@@ -115,7 +126,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList setupParts = null;
+	protected EList<ExecutableNode> setupParts = null;
 
 	/**
 	 * The cached value of the '{@link #getDecider() <em>Decider</em>}' reference.
@@ -135,7 +146,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList tests = null;
+	protected EList<ExecutableNode> tests = null;
 
 	/**
 	 * The cached value of the '{@link #getResults() <em>Result</em>}' containment reference list.
@@ -145,7 +156,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList results = null;
+	protected EList<OutputPin> results = null;
 
 	/**
 	 * The cached value of the '{@link #getLoopVariables() <em>Loop Variable</em>}' reference list.
@@ -155,7 +166,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList loopVariables = null;
+	protected EList<OutputPin> loopVariables = null;
 
 	/**
 	 * The cached value of the '{@link #getBodyOutputs() <em>Body Output</em>}' reference list.
@@ -165,7 +176,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodyOutputs = null;
+	protected EList<OutputPin> bodyOutputs = null;
 
 	/**
 	 * The cached value of the '{@link #getLoopVariableInputs() <em>Loop Variable Input</em>}' containment reference list.
@@ -175,7 +186,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList loopVariableInputs = null;
+	protected EList<InputPin> loopVariableInputs = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -191,6 +202,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.LOOP_NODE;
 	}
@@ -200,21 +212,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.LOOP_NODE__OUTPUT, OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this, UMLPackage.LOOP_NODE__OUTPUT,
+						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.LOOP_NODE__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -223,21 +237,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.LOOP_NODE__INPUT, INPUT_ESUBSETS));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.LOOP_NODE__INPUT,
+						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.LOOP_NODE__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -274,10 +290,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodyParts() {
+	public EList<ExecutableNode> getBodyParts() {
 		if (bodyParts == null) {
-			bodyParts = new EObjectResolvingEList(ExecutableNode.class, this,
-				UMLPackage.LOOP_NODE__BODY_PART);
+			bodyParts = new EObjectResolvingEList<ExecutableNode>(
+				ExecutableNode.class, this, UMLPackage.LOOP_NODE__BODY_PART);
 		}
 		return bodyParts;
 	}
@@ -298,8 +314,7 @@
 	 */
 	public ExecutableNode getBodyPart(String name, boolean ignoreCase,
 			EClass eClass) {
-		bodyPartLoop : for (Iterator i = getBodyParts().iterator(); i.hasNext();) {
-			ExecutableNode bodyPart = (ExecutableNode) i.next();
+		bodyPartLoop : for (ExecutableNode bodyPart : getBodyParts()) {
 			if (eClass != null && !eClass.isInstance(bodyPart))
 				continue bodyPartLoop;
 			if (name != null && !(ignoreCase
@@ -316,10 +331,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSetupParts() {
+	public EList<ExecutableNode> getSetupParts() {
 		if (setupParts == null) {
-			setupParts = new EObjectResolvingEList(ExecutableNode.class, this,
-				UMLPackage.LOOP_NODE__SETUP_PART);
+			setupParts = new EObjectResolvingEList<ExecutableNode>(
+				ExecutableNode.class, this, UMLPackage.LOOP_NODE__SETUP_PART);
 		}
 		return setupParts;
 	}
@@ -340,9 +355,7 @@
 	 */
 	public ExecutableNode getSetupPart(String name, boolean ignoreCase,
 			EClass eClass) {
-		setupPartLoop : for (Iterator i = getSetupParts().iterator(); i
-			.hasNext();) {
-			ExecutableNode setupPart = (ExecutableNode) i.next();
+		setupPartLoop : for (ExecutableNode setupPart : getSetupParts()) {
 			if (eClass != null && !eClass.isInstance(setupPart))
 				continue setupPartLoop;
 			if (name != null && !(ignoreCase
@@ -401,10 +414,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTests() {
+	public EList<ExecutableNode> getTests() {
 		if (tests == null) {
-			tests = new EObjectResolvingEList(ExecutableNode.class, this,
-				UMLPackage.LOOP_NODE__TEST);
+			tests = new EObjectResolvingEList<ExecutableNode>(
+				ExecutableNode.class, this, UMLPackage.LOOP_NODE__TEST);
 		}
 		return tests;
 	}
@@ -424,8 +437,7 @@
 	 * @generated
 	 */
 	public ExecutableNode getTest(String name, boolean ignoreCase, EClass eClass) {
-		testLoop : for (Iterator i = getTests().iterator(); i.hasNext();) {
-			ExecutableNode test = (ExecutableNode) i.next();
+		testLoop : for (ExecutableNode test : getTests()) {
 			if (eClass != null && !eClass.isInstance(test))
 				continue testLoop;
 			if (name != null && !(ignoreCase
@@ -442,10 +454,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getResults() {
+	public EList<OutputPin> getResults() {
 		if (results == null) {
-			results = new EObjectContainmentEList.Resolving(OutputPin.class,
-				this, UMLPackage.LOOP_NODE__RESULT);
+			results = new EObjectContainmentEList.Resolving<OutputPin>(
+				OutputPin.class, this, UMLPackage.LOOP_NODE__RESULT);
 		}
 		return results;
 	}
@@ -481,8 +493,7 @@
 	 */
 	public OutputPin getResult(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		resultLoop : for (Iterator i = getResults().iterator(); i.hasNext();) {
-			OutputPin result = (OutputPin) i.next();
+		resultLoop : for (OutputPin result : getResults()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(result.getName())
 				: name.equals(result.getName())))
@@ -501,10 +512,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLoopVariables() {
+	public EList<OutputPin> getLoopVariables() {
 		if (loopVariables == null) {
-			loopVariables = new EObjectResolvingEList(OutputPin.class, this,
-				UMLPackage.LOOP_NODE__LOOP_VARIABLE);
+			loopVariables = new EObjectResolvingEList<OutputPin>(
+				OutputPin.class, this, UMLPackage.LOOP_NODE__LOOP_VARIABLE);
 		}
 		return loopVariables;
 	}
@@ -524,9 +535,7 @@
 	 * @generated
 	 */
 	public OutputPin getLoopVariable(String name, Type type, boolean ignoreCase) {
-		loopVariableLoop : for (Iterator i = getLoopVariables().iterator(); i
-			.hasNext();) {
-			OutputPin loopVariable = (OutputPin) i.next();
+		loopVariableLoop : for (OutputPin loopVariable : getLoopVariables()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(loopVariable.getName())
 				: name.equals(loopVariable.getName())))
@@ -543,10 +552,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodyOutputs() {
+	public EList<OutputPin> getBodyOutputs() {
 		if (bodyOutputs == null) {
-			bodyOutputs = new EObjectResolvingEList(OutputPin.class, this,
-				UMLPackage.LOOP_NODE__BODY_OUTPUT);
+			bodyOutputs = new EObjectResolvingEList<OutputPin>(OutputPin.class,
+				this, UMLPackage.LOOP_NODE__BODY_OUTPUT);
 		}
 		return bodyOutputs;
 	}
@@ -566,9 +575,7 @@
 	 * @generated
 	 */
 	public OutputPin getBodyOutput(String name, Type type, boolean ignoreCase) {
-		bodyOutputLoop : for (Iterator i = getBodyOutputs().iterator(); i
-			.hasNext();) {
-			OutputPin bodyOutput = (OutputPin) i.next();
+		bodyOutputLoop : for (OutputPin bodyOutput : getBodyOutputs()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(bodyOutput.getName())
 				: name.equals(bodyOutput.getName())))
@@ -585,9 +592,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLoopVariableInputs() {
+	public EList<InputPin> getLoopVariableInputs() {
 		if (loopVariableInputs == null) {
-			loopVariableInputs = new EObjectContainmentEList.Resolving(
+			loopVariableInputs = new EObjectContainmentEList.Resolving<InputPin>(
 				InputPin.class, this, UMLPackage.LOOP_NODE__LOOP_VARIABLE_INPUT);
 		}
 		return loopVariableInputs;
@@ -635,9 +642,7 @@
 	 */
 	public InputPin getLoopVariableInput(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		loopVariableInputLoop : for (Iterator i = getLoopVariableInputs()
-			.iterator(); i.hasNext();) {
-			InputPin loopVariableInput = (InputPin) i.next();
+		loopVariableInputLoop : for (InputPin loopVariableInput : getLoopVariableInputs()) {
 			if (eClass != null && !eClass.isInstance(loopVariableInput))
 				continue loopVariableInputLoop;
 			if (name != null && !(ignoreCase
@@ -658,7 +663,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInputEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInputEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return LoopNodeOperations
 			.validateInputEdges(this, diagnostics, context);
 	}
@@ -669,7 +675,7 @@
 	 * @generated
 	 */
 	public boolean validateBodyOutputPins(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LoopNodeOperations.validateBodyOutputPins(this, diagnostics,
 			context);
 	}
@@ -680,7 +686,7 @@
 	 * @generated
 	 */
 	public boolean validateResultNoIncoming(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return LoopNodeOperations.validateResultNoIncoming(this, diagnostics,
 			context);
 	}
@@ -690,18 +696,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.LOOP_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.LOOP_NODE__IN_STRUCTURED_NODE :
@@ -709,50 +716,52 @@
 			case UMLPackage.LOOP_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.LOOP_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.LOOP_NODE__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.LOOP_NODE__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.LOOP_NODE__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.LOOP_NODE__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.LOOP_NODE__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.LOOP_NODE__LOOP_VARIABLE_INPUT :
-				return ((InternalEList) getLoopVariableInputs()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLoopVariableInputs())
+					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -762,6 +771,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.LOOP_NODE__EANNOTATIONS :
@@ -899,15 +909,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.LOOP_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__NAME :
 				setName((String) newValue);
@@ -917,7 +931,8 @@
 				return;
 			case UMLPackage.LOOP_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -933,99 +948,120 @@
 				return;
 			case UMLPackage.LOOP_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__MUST_ISOLATE :
 				setMustIsolate(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.LOOP_NODE__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__IS_TESTED_FIRST :
 				setIsTestedFirst(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.LOOP_NODE__BODY_PART :
 				getBodyParts().clear();
-				getBodyParts().addAll((Collection) newValue);
+				getBodyParts().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__SETUP_PART :
 				getSetupParts().clear();
-				getSetupParts().addAll((Collection) newValue);
+				getSetupParts().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__DECIDER :
 				setDecider((OutputPin) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__TEST :
 				getTests().clear();
-				getTests().addAll((Collection) newValue);
+				getTests().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__LOOP_VARIABLE :
 				getLoopVariables().clear();
-				getLoopVariables().addAll((Collection) newValue);
+				getLoopVariables().addAll(
+					(Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__BODY_OUTPUT :
 				getBodyOutputs().clear();
-				getBodyOutputs().addAll((Collection) newValue);
+				getBodyOutputs().addAll(
+					(Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.LOOP_NODE__LOOP_VARIABLE_INPUT :
 				getLoopVariableInputs().clear();
-				getLoopVariableInputs().addAll((Collection) newValue);
+				getLoopVariableInputs().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1036,6 +1072,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LOOP_NODE__EANNOTATIONS :
@@ -1149,6 +1186,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.LOOP_NODE__EANNOTATIONS :
@@ -1269,6 +1307,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1295,6 +1334,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs() || eIsSet(UMLPackage.LOOP_NODE__RESULT);
 	}
@@ -1314,6 +1354,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.LOOP_NODE__LOOP_VARIABLE_INPUT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ManifestationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ManifestationImpl.java
index 77dc4df..8195cf5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ManifestationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ManifestationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ManifestationImpl.java,v 1.13 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ManifestationImpl.java,v 1.14 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -17,6 +17,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -26,6 +27,8 @@
 
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Manifestation;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.OpaqueExpression;
@@ -77,6 +80,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MANIFESTATION;
 	}
@@ -86,9 +90,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new SubsetSupersetEObjectResolvingEList(
+			suppliers = new SubsetSupersetEObjectResolvingEList<NamedElement>(
 				NamedElement.class, this, UMLPackage.MANIFESTATION__SUPPLIER,
 				null, SUPPLIER_ESUBSETS);
 		}
@@ -150,7 +154,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newUtilizedElement != null) {
-				EList suppliers = getSuppliers();
+				EList<NamedElement> suppliers = getSuppliers();
 				if (!suppliers.contains(newUtilizedElement)) {
 					suppliers.add(newUtilizedElement);
 				}
@@ -163,6 +167,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MANIFESTATION__EANNOTATIONS :
@@ -226,15 +231,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MANIFESTATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MANIFESTATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MANIFESTATION__NAME :
 				setName((String) newValue);
@@ -244,7 +253,8 @@
 				return;
 			case UMLPackage.MANIFESTATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.MANIFESTATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -257,11 +267,13 @@
 				return;
 			case UMLPackage.MANIFESTATION__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.MANIFESTATION__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.MANIFESTATION__MAPPING :
 				setMapping((OpaqueExpression) newValue);
@@ -278,6 +290,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MANIFESTATION__EANNOTATIONS :
@@ -325,6 +338,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MANIFESTATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MergeNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MergeNodeImpl.java
index 5c70a88..7383653 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MergeNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MergeNodeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MergeNodeImpl.java,v 1.2 2005/11/23 20:01:19 khussey Exp $
+ * $Id: MergeNodeImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MERGE_NODE;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateOneOutgoingEdge(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return MergeNodeOperations.validateOneOutgoingEdge(this, diagnostics,
 			context);
 	}
@@ -70,7 +71,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MergeNodeOperations.validateEdges(this, diagnostics, context);
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEndImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEndImpl.java
index 38c566d..f537c61 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEndImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEndImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageEndImpl.java,v 1.11 2006/11/14 18:02:15 khussey Exp $
+ * $Id: MessageEndImpl.java,v 1.12 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Message;
 import org.eclipse.uml2.uml.MessageEnd;
 import org.eclipse.uml2.uml.StringExpression;
@@ -67,6 +70,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MESSAGE_END;
 	}
@@ -118,6 +122,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_END__EANNOTATIONS :
@@ -159,15 +164,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_END__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MESSAGE_END__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MESSAGE_END__NAME :
 				setName((String) newValue);
@@ -177,7 +186,8 @@
 				return;
 			case UMLPackage.MESSAGE_END__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.MESSAGE_END__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -194,6 +204,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_END__EANNOTATIONS :
@@ -226,6 +237,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_END__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEventImpl.java
index 323ec34..5d8fd1a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageEventImpl.java,v 1.2 2005/11/23 20:01:15 khussey Exp $
+ * $Id: MessageEventImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MESSAGE_EVENT;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageImpl.java
index a227f6b..ce18285 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageImpl.java,v 1.21 2006/11/14 18:02:19 khussey Exp $
+ * $Id: MessageImpl.java,v 1.22 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.Message;
@@ -148,7 +150,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList arguments = null;
+	protected EList<ValueSpecification> arguments = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -164,6 +166,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MESSAGE;
 	}
@@ -185,23 +188,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.MESSAGE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.MESSAGE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.MESSAGE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -436,9 +440,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getArguments() {
+	public EList<ValueSpecification> getArguments() {
 		if (arguments == null) {
-			arguments = new EObjectContainmentEList.Resolving(
+			arguments = new EObjectContainmentEList.Resolving<ValueSpecification>(
 				ValueSpecification.class, this, UMLPackage.MESSAGE__ARGUMENT);
 		}
 		return arguments;
@@ -476,8 +480,7 @@
 	 */
 	public ValueSpecification getArgument(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		argumentLoop : for (Iterator i = getArguments().iterator(); i.hasNext();) {
-			ValueSpecification argument = (ValueSpecification) i.next();
+		argumentLoop : for (ValueSpecification argument : getArguments()) {
 			if (eClass != null && !eClass.isInstance(argument))
 				continue argumentLoop;
 			if (name != null && !(ignoreCase
@@ -521,7 +524,7 @@
 	 * @generated
 	 */
 	public boolean validateSendingReceivingMessageEvent(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MessageOperations.validateSendingReceivingMessageEvent(this,
 			diagnostics, context);
 	}
@@ -532,7 +535,7 @@
 	 * @generated
 	 */
 	public boolean validateSignatureReferTo(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return MessageOperations.validateSignatureReferTo(this, diagnostics,
 			context);
 	}
@@ -543,7 +546,7 @@
 	 * @generated
 	 */
 	public boolean validateSignatureIsOperation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return MessageOperations.validateSignatureIsOperation(this,
 			diagnostics, context);
 	}
@@ -554,7 +557,7 @@
 	 * @generated
 	 */
 	public boolean validateSignatureIsSignal(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return MessageOperations.validateSignatureIsSignal(this, diagnostics,
 			context);
 	}
@@ -564,7 +567,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateArguments(DiagnosticChain diagnostics, Map context) {
+	public boolean validateArguments(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MessageOperations.validateArguments(this, diagnostics, context);
 	}
 
@@ -574,7 +578,7 @@
 	 * @generated
 	 */
 	public boolean validateCannotCrossBoundaries(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return MessageOperations.validateCannotCrossBoundaries(this,
 			diagnostics, context);
 	}
@@ -585,7 +589,7 @@
 	 * @generated
 	 */
 	public boolean validateOccurrenceSpecifications(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MessageOperations.validateOccurrenceSpecifications(this,
 			diagnostics, context);
 	}
@@ -595,15 +599,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.MESSAGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.MESSAGE__INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -617,25 +623,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.MESSAGE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.MESSAGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.MESSAGE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.MESSAGE__INTERACTION :
 				return basicSetInteraction(null, msgs);
 			case UMLPackage.MESSAGE__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -645,6 +652,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -660,6 +668,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
@@ -723,15 +732,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MESSAGE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MESSAGE__NAME :
 				setName((String) newValue);
@@ -741,7 +754,8 @@
 				return;
 			case UMLPackage.MESSAGE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.MESSAGE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -763,7 +777,8 @@
 				return;
 			case UMLPackage.MESSAGE__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments().addAll(
+					(Collection<? extends ValueSpecification>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -774,6 +789,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
@@ -821,6 +837,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE__EANNOTATIONS :
@@ -871,6 +888,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -901,6 +919,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.MESSAGE__INTERACTION);
@@ -923,6 +942,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.MESSAGE__ARGUMENT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageOccurrenceSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageOccurrenceSpecificationImpl.java
index 97faf18..136496a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageOccurrenceSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MessageOccurrenceSpecificationImpl.java
@@ -8,21 +8,26 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageOccurrenceSpecificationImpl.java,v 1.13 2006/11/14 18:02:16 khussey Exp $
+ * $Id: MessageOccurrenceSpecificationImpl.java,v 1.14 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Event;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.Message;
 import org.eclipse.uml2.uml.MessageEnd;
 import org.eclipse.uml2.uml.MessageOccurrenceSpecification;
@@ -71,6 +76,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MESSAGE_OCCURRENCE_SPECIFICATION;
 	}
@@ -124,6 +130,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -185,15 +192,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -203,18 +214,20 @@
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -224,14 +237,16 @@
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__TO_BEFORE :
 				getToBefores().clear();
-				getToBefores().addAll((Collection) newValue);
+				getToBefores().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__EVENT :
 				setEvent((Event) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__TO_AFTER :
 				getToAfters().clear();
-				getToAfters().addAll((Collection) newValue);
+				getToAfters().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__MESSAGE :
 				setMessage((Message) newValue);
@@ -245,6 +260,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -298,6 +314,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -348,7 +365,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == MessageEnd.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION__MESSAGE :
@@ -365,7 +383,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == MessageEnd.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.MESSAGE_END__MESSAGE :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ModelImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ModelImpl.java
index 5ed6f29..8081ad5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ModelImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ModelImpl.java
@@ -8,20 +8,31 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ModelImpl.java,v 1.12 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ModelImpl.java,v 1.13 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.PackageMerge;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.ProfileApplication;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -87,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MODEL;
 	}
@@ -157,6 +169,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MODEL__EANNOTATIONS :
@@ -236,15 +249,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MODEL__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MODEL__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MODEL__NAME :
 				setName((String) newValue);
@@ -254,22 +271,26 @@
 				return;
 			case UMLPackage.MODEL__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.MODEL__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.MODEL__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.MODEL__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.MODEL__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.MODEL__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -279,33 +300,39 @@
 				return;
 			case UMLPackage.MODEL__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.MODEL__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
 				return;
 			case UMLPackage.MODEL__OWNED_TYPE :
 				getOwnedTypes().clear();
-				getOwnedTypes().addAll((Collection) newValue);
+				getOwnedTypes().addAll((Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.MODEL__PACKAGE_MERGE :
 				getPackageMerges().clear();
-				getPackageMerges().addAll((Collection) newValue);
+				getPackageMerges().addAll(
+					(Collection<? extends PackageMerge>) newValue);
 				return;
 			case UMLPackage.MODEL__PACKAGED_ELEMENT :
 				getPackagedElements().clear();
-				getPackagedElements().addAll((Collection) newValue);
+				getPackagedElements().addAll(
+					(Collection<? extends PackageableElement>) newValue);
 				return;
 			case UMLPackage.MODEL__NESTED_PACKAGE :
 				getNestedPackages().clear();
-				getNestedPackages().addAll((Collection) newValue);
+				getNestedPackages()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Package>) newValue);
 				return;
 			case UMLPackage.MODEL__NESTING_PACKAGE :
 				setNestingPackage((org.eclipse.uml2.uml.Package) newValue);
 				return;
 			case UMLPackage.MODEL__PROFILE_APPLICATION :
 				getProfileApplications().clear();
-				getProfileApplications().addAll((Collection) newValue);
+				getProfileApplications().addAll(
+					(Collection<? extends ProfileApplication>) newValue);
 				return;
 			case UMLPackage.MODEL__VIEWPOINT :
 				setViewpoint((String) newValue);
@@ -319,6 +346,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MODEL__EANNOTATIONS :
@@ -390,6 +418,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MODEL__EANNOTATIONS :
@@ -459,6 +488,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MultiplicityElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MultiplicityElementImpl.java
index 3e2bdd6..74de151 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MultiplicityElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/MultiplicityElementImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MultiplicityElementImpl.java,v 1.23 2006/11/14 18:02:17 khussey Exp $
+ * $Id: MultiplicityElementImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,6 +35,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.MultiplicityElement;
 import org.eclipse.uml2.uml.Type;
@@ -160,6 +162,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.MULTIPLICITY_ELEMENT;
 	}
@@ -169,23 +172,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.MULTIPLICITY_ELEMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.MULTIPLICITY_ELEMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.MULTIPLICITY_ELEMENT__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -507,7 +512,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGt0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGt0(this,
 			diagnostics, context);
 	}
@@ -517,7 +523,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateLowerGe0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateLowerGe0(this,
 			diagnostics, context);
 	}
@@ -527,7 +534,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGeLower(this,
 			diagnostics, context);
 	}
@@ -538,7 +546,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationNoSideEffects(this, diagnostics, context);
 	}
@@ -549,7 +557,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationConstant(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationConstant(this, diagnostics, context);
 	}
@@ -622,14 +630,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.MULTIPLICITY_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.MULTIPLICITY_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.MULTIPLICITY_ELEMENT__UPPER_VALUE :
 				return basicSetUpperValue(null, msgs);
@@ -644,6 +653,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.MULTIPLICITY_ELEMENT__EANNOTATIONS :
@@ -685,15 +695,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.MULTIPLICITY_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.MULTIPLICITY_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.MULTIPLICITY_ELEMENT__IS_ORDERED :
 				setIsOrdered(((Boolean) newValue).booleanValue());
@@ -722,6 +736,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MULTIPLICITY_ELEMENT__EANNOTATIONS :
@@ -757,6 +772,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.MULTIPLICITY_ELEMENT__EANNOTATIONS :
@@ -788,6 +804,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -819,6 +836,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.MULTIPLICITY_ELEMENT__UPPER_VALUE)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamedElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamedElementImpl.java
index 1ec3603..5190cc2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamedElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamedElementImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NamedElementImpl.java,v 1.24 2006/11/14 18:02:18 khussey Exp $
+ * $Id: NamedElementImpl.java,v 1.25 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
@@ -37,6 +37,7 @@
 
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.common.util.UML2Util;
 
 import org.eclipse.uml2.uml.Dependency;
@@ -150,7 +151,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList clientDependencies = null;
+	protected EList<Dependency> clientDependencies = null;
 
 	/**
 	 * The cached value of the '{@link #getNameExpression() <em>Name Expression</em>}' containment reference.
@@ -176,6 +177,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.NAMED_ELEMENT;
 	}
@@ -185,23 +187,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.NAMED_ELEMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.NAMED_ELEMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.NAMED_ELEMENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -325,9 +329,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new EObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new EObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this,
 				UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY,
 				UMLPackage.DEPENDENCY__CLIENT);
@@ -351,9 +355,7 @@
 	 */
 	public Dependency getClientDependency(String name, boolean ignoreCase,
 			EClass eClass) {
-		clientDependencyLoop : for (Iterator i = getClientDependencies()
-			.iterator(); i.hasNext();) {
-			Dependency clientDependency = (Dependency) i.next();
+		clientDependencyLoop : for (Dependency clientDependency : getClientDependencies()) {
 			if (eClass != null && !eClass.isInstance(clientDependency))
 				continue clientDependencyLoop;
 			if (name != null && !(ignoreCase
@@ -475,7 +477,7 @@
 	 * @generated
 	 */
 	public boolean validateHasNoQualifiedName(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return NamedElementOperations.validateHasNoQualifiedName(this,
 			diagnostics, context);
 	}
@@ -486,7 +488,7 @@
 	 * @generated
 	 */
 	public boolean validateHasQualifiedName(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return NamedElementOperations.validateHasQualifiedName(this,
 			diagnostics, context);
 	}
@@ -497,7 +499,7 @@
 	 * @generated
 	 */
 	public boolean validateVisibilityNeedsOwnership(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return NamedElementOperations.validateVisibilityNeedsOwnership(this,
 			diagnostics, context);
 	}
@@ -534,10 +536,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allNamespaces() {
+	public EList<Namespace> allNamespaces() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Namespace> result = (EList<Namespace>) cache.get(this,
 				UMLPackage.Literals.NAMED_ELEMENT.getEOperations().get(7));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMED_ELEMENT
@@ -572,11 +575,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allOwningPackages() {
+	public EList<org.eclipse.uml2.uml.Package> allOwningPackages() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMED_ELEMENT.getEOperations().get(10));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Package> result = (EList<org.eclipse.uml2.uml.Package>) cache
+				.get(this, UMLPackage.Literals.NAMED_ELEMENT.getEOperations()
+					.get(10));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMED_ELEMENT
 					.getEOperations().get(10), result = NamedElementOperations
@@ -592,15 +597,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -610,18 +617,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMED_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.NAMED_ELEMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 		}
@@ -633,6 +641,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
@@ -670,15 +679,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.NAMED_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.NAMED_ELEMENT__NAME :
 				setName((String) newValue);
@@ -688,7 +701,8 @@
 				return;
 			case UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.NAMED_ELEMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -702,6 +716,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
@@ -731,6 +746,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NAMED_ELEMENT__EANNOTATIONS :
@@ -765,6 +781,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -856,6 +873,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || isSetNamespace();
 	}
@@ -877,11 +895,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.NAMED_ELEMENT__NAME_EXPRESSION);
 	}
 
+	@Override
 	public String eURIFragmentSegment(EStructuralFeature eStructuralFeature,
 			EObject eObject) {
 
@@ -891,10 +911,7 @@
 			if (!UML2Util.isEmpty(name)) {
 				int count = 0;
 
-				for (Iterator eContents = eContents().iterator(); eContents
-					.hasNext();) {
-
-					Object otherEObject = eContents.next();
+				for (EObject otherEObject : eContents()) {
 
 					if (otherEObject == eObject) {
 						break;
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamespaceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamespaceImpl.java
index 27567a8..2b298bb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamespaceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NamespaceImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NamespaceImpl.java,v 1.21 2006/11/14 18:02:20 khussey Exp $
+ * $Id: NamespaceImpl.java,v 1.22 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,7 +33,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.NamedElement;
@@ -77,7 +79,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList elementImports = null;
+	protected EList<ElementImport> elementImports = null;
 
 	/**
 	 * The cached value of the '{@link #getPackageImports() <em>Package Import</em>}' containment reference list.
@@ -87,7 +89,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList packageImports = null;
+	protected EList<PackageImport> packageImports = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedRules() <em>Owned Rule</em>}' containment reference list.
@@ -97,7 +99,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedRules = null;
+	protected EList<Constraint> ownedRules = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -113,6 +115,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.NAMESPACE;
 	}
@@ -122,23 +125,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.NAMESPACE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.NAMESPACE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.NAMESPACE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -147,25 +152,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.NAMESPACE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.NAMESPACE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.NAMESPACE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -184,9 +190,7 @@
 	 */
 	public NamedElement getOwnedMember(String name, boolean ignoreCase,
 			EClass eClass) {
-		ownedMemberLoop : for (Iterator i = getOwnedMembers().iterator(); i
-			.hasNext();) {
-			NamedElement ownedMember = (NamedElement) i.next();
+		ownedMemberLoop : for (NamedElement ownedMember : getOwnedMembers()) {
 			if (eClass != null && !eClass.isInstance(ownedMember))
 				continue ownedMemberLoop;
 			if (name != null && !(ignoreCase
@@ -203,23 +207,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.NAMESPACE__MEMBER, MEMBER_ESUBSETS));
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this, UMLPackage.NAMESPACE__MEMBER,
+						MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.NAMESPACE__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.NAMESPACE__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -237,8 +243,7 @@
 	 * @generated
 	 */
 	public NamedElement getMember(String name, boolean ignoreCase, EClass eClass) {
-		memberLoop : for (Iterator i = getMembers().iterator(); i.hasNext();) {
-			NamedElement member = (NamedElement) i.next();
+		memberLoop : for (NamedElement member : getMembers()) {
 			if (eClass != null && !eClass.isInstance(member))
 				continue memberLoop;
 			if (name != null && !(ignoreCase
@@ -255,9 +260,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getElementImports() {
+	public EList<ElementImport> getElementImports() {
 		if (elementImports == null) {
-			elementImports = new EObjectContainmentWithInverseEList.Resolving(
+			elementImports = new EObjectContainmentWithInverseEList.Resolving<ElementImport>(
 				ElementImport.class, this,
 				UMLPackage.NAMESPACE__ELEMENT_IMPORT,
 				UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE);
@@ -294,9 +299,7 @@
 	 */
 	public ElementImport getElementImport(PackageableElement importedElement,
 			boolean createOnDemand) {
-		elementImportLoop : for (Iterator i = getElementImports().iterator(); i
-			.hasNext();) {
-			ElementImport elementImport = (ElementImport) i.next();
+		elementImportLoop : for (ElementImport elementImport : getElementImports()) {
 			if (importedElement != null
 				&& !importedElement.equals(elementImport.getImportedElement()))
 				continue elementImportLoop;
@@ -312,9 +315,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackageImports() {
+	public EList<PackageImport> getPackageImports() {
 		if (packageImports == null) {
-			packageImports = new EObjectContainmentWithInverseEList.Resolving(
+			packageImports = new EObjectContainmentWithInverseEList.Resolving<PackageImport>(
 				PackageImport.class, this,
 				UMLPackage.NAMESPACE__PACKAGE_IMPORT,
 				UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE);
@@ -353,9 +356,7 @@
 	 */
 	public PackageImport getPackageImport(
 			org.eclipse.uml2.uml.Package importedPackage, boolean createOnDemand) {
-		packageImportLoop : for (Iterator i = getPackageImports().iterator(); i
-			.hasNext();) {
-			PackageImport packageImport = (PackageImport) i.next();
+		packageImportLoop : for (PackageImport packageImport : getPackageImports()) {
 			if (importedPackage != null
 				&& !importedPackage.equals(packageImport.getImportedPackage()))
 				continue packageImportLoop;
@@ -371,9 +372,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedRules() {
+	public EList<Constraint> getOwnedRules() {
 		if (ownedRules == null) {
-			ownedRules = new EObjectContainmentWithInverseEList.Resolving(
+			ownedRules = new EObjectContainmentWithInverseEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.NAMESPACE__OWNED_RULE,
 				UMLPackage.CONSTRAINT__CONTEXT);
 		}
@@ -418,9 +419,7 @@
 	 */
 	public Constraint getOwnedRule(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedRuleLoop : for (Iterator i = getOwnedRules().iterator(); i
-			.hasNext();) {
-			Constraint ownedRule = (Constraint) i.next();
+		ownedRuleLoop : for (Constraint ownedRule : getOwnedRules()) {
 			if (eClass != null && !eClass.isInstance(ownedRule))
 				continue ownedRuleLoop;
 			if (name != null && !(ignoreCase
@@ -439,12 +438,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedMembers() {
+	public EList<PackageableElement> getImportedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER,
 					result = NamespaceOperations.getImportedMembers(this));
@@ -470,9 +470,7 @@
 	 */
 	public PackageableElement getImportedMember(String name,
 			boolean ignoreCase, EClass eClass) {
-		importedMemberLoop : for (Iterator i = getImportedMembers().iterator(); i
-			.hasNext();) {
-			PackageableElement importedMember = (PackageableElement) i.next();
+		importedMemberLoop : for (PackageableElement importedMember : getImportedMembers()) {
 			if (eClass != null && !eClass.isInstance(importedMember))
 				continue importedMemberLoop;
 			if (name != null && !(ignoreCase
@@ -490,7 +488,7 @@
 	 * @generated
 	 */
 	public boolean validateMembersDistinguishable(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return NamespaceOperations.validateMembersDistinguishable(this,
 			diagnostics, context);
 	}
@@ -522,11 +520,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedElements() {
+	public EList<PackageableElement> getImportedElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE.getEOperations().get(3));
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE.getEOperations()
+					.get(3));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE.getEOperations()
 					.get(3), result = NamespaceOperations
@@ -542,11 +542,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedPackages() {
+	public EList<org.eclipse.uml2.uml.Package> getImportedPackages() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE.getEOperations().get(4));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Package> result = (EList<org.eclipse.uml2.uml.Package>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE.getEOperations()
+					.get(4));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE.getEOperations()
 					.get(4), result = NamespaceOperations
@@ -562,7 +564,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNamesOfMember(NamedElement element) {
+	public EList<String> getNamesOfMember(NamedElement element) {
 		return NamespaceOperations.getNamesOfMember(this, element);
 	}
 
@@ -580,7 +582,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList importMembers(EList imps) {
+	public EList<PackageableElement> importMembers(
+			EList<PackageableElement> imps) {
 		return NamespaceOperations.importMembers(this, imps);
 	}
 
@@ -589,7 +592,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList excludeCollisions(EList imps) {
+	public EList<PackageableElement> excludeCollisions(
+			EList<PackageableElement> imps) {
 		return NamespaceOperations.excludeCollisions(this, imps);
 	}
 
@@ -598,24 +602,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NAMESPACE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NAMESPACE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NAMESPACE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NAMESPACE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -625,29 +631,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMESPACE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMESPACE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.NAMESPACE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.NAMESPACE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMESPACE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NAMESPACE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -657,6 +664,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
@@ -706,15 +714,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.NAMESPACE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.NAMESPACE__NAME :
 				setName((String) newValue);
@@ -724,22 +736,26 @@
 				return;
 			case UMLPackage.NAMESPACE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.NAMESPACE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.NAMESPACE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.NAMESPACE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.NAMESPACE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -750,6 +766,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
@@ -788,6 +805,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NAMESPACE__EANNOTATIONS :
@@ -849,6 +867,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.NAMESPACE__ELEMENT_IMPORT)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NodeImpl.java
index 8e75d89..7cb326b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/NodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NodeImpl.java,v 1.26 2006/11/14 18:02:19 khussey Exp $
+ * $Id: NodeImpl.java,v 1.27 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,18 +36,35 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.DeploymentTarget;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.DeploymentTargetOperations;
@@ -83,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList deployments = null;
+	protected EList<Deployment> deployments = null;
 
 	/**
 	 * The cached value of the '{@link #getNestedNodes() <em>Nested Node</em>}' containment reference list.
@@ -93,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nestedNodes = null;
+	protected EList<Node> nestedNodes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -109,6 +126,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.NODE;
 	}
@@ -118,23 +136,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.NODE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.NODE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -143,9 +162,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this, UMLPackage.NODE__CLIENT_DEPENDENCY,
 				null, CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
 		}
@@ -157,9 +176,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployments() {
+	public EList<Deployment> getDeployments() {
 		if (deployments == null) {
-			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Deployment>(
 				Deployment.class, this, UMLPackage.NODE__DEPLOYMENT,
 				DEPLOYMENT_ESUPERSETS, null, UMLPackage.DEPLOYMENT__LOCATION);
 		}
@@ -195,9 +214,7 @@
 	 */
 	public Deployment getDeployment(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		deploymentLoop : for (Iterator i = getDeployments().iterator(); i
-			.hasNext();) {
-			Deployment deployment = (Deployment) i.next();
+		deploymentLoop : for (Deployment deployment : getDeployments()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(deployment.getName())
 				: name.equals(deployment.getName())))
@@ -214,12 +231,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployedElements() {
+	public EList<PackageableElement> getDeployedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this,
+					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
 			if (result == null) {
 				cache.put(this,
 					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT,
@@ -247,9 +266,7 @@
 	 */
 	public PackageableElement getDeployedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		deployedElementLoop : for (Iterator i = getDeployedElements()
-			.iterator(); i.hasNext();) {
-			PackageableElement deployedElement = (PackageableElement) i.next();
+		deployedElementLoop : for (PackageableElement deployedElement : getDeployedElements()) {
 			if (eClass != null && !eClass.isInstance(deployedElement))
 				continue deployedElementLoop;
 			if (name != null && !(ignoreCase
@@ -266,24 +283,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.NODE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.NODE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.NODE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -291,10 +309,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNestedNodes() {
+	public EList<Node> getNestedNodes() {
 		if (nestedNodes == null) {
-			nestedNodes = new EObjectContainmentEList.Resolving(Node.class,
-				this, UMLPackage.NODE__NESTED_NODE);
+			nestedNodes = new EObjectContainmentEList.Resolving<Node>(
+				Node.class, this, UMLPackage.NODE__NESTED_NODE);
 		}
 		return nestedNodes;
 	}
@@ -337,9 +355,7 @@
 	 */
 	public Node getNestedNode(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		nestedNodeLoop : for (Iterator i = getNestedNodes().iterator(); i
-			.hasNext();) {
-			Node nestedNode = (Node) i.next();
+		nestedNodeLoop : for (Node nestedNode : getNestedNodes()) {
 			if (eClass != null && !eClass.isInstance(nestedNode))
 				continue nestedNodeLoop;
 			if (name != null && !(ignoreCase
@@ -359,7 +375,7 @@
 	 * @generated
 	 */
 	public boolean validateInternalStructure(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return NodeOperations.validateInternalStructure(this, diagnostics,
 			context);
 	}
@@ -369,24 +385,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -401,8 +419,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.NODE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -412,25 +430,26 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.NODE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.NODE__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getDeployments())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -440,86 +459,87 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.NODE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.NODE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.NODE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.NODE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.NODE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.NODE__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getDeployments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.NODE__NESTED_NODE :
-				return ((InternalEList) getNestedNodes()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getNestedNodes()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -529,6 +549,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
@@ -674,15 +695,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.NODE__NAME :
 				setName((String) newValue);
@@ -692,22 +717,26 @@
 				return;
 			case UMLPackage.NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.NODE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.NODE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.NODE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -723,7 +752,8 @@
 				return;
 			case UMLPackage.NODE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -733,92 +763,110 @@
 				return;
 			case UMLPackage.NODE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.NODE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.NODE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.NODE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.NODE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.NODE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.NODE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.NODE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.NODE__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.NODE__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.NODE__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.NODE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.NODE__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.NODE__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.NODE__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.NODE__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 			case UMLPackage.NODE__NESTED_NODE :
 				getNestedNodes().clear();
-				getNestedNodes().addAll((Collection) newValue);
+				getNestedNodes().addAll((Collection<? extends Node>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -829,6 +877,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
@@ -957,6 +1006,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.NODE__EANNOTATIONS :
@@ -1085,7 +1135,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == DeploymentTarget.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.NODE__DEPLOYMENT :
@@ -1104,7 +1155,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == DeploymentTarget.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.DEPLOYMENT_TARGET__DEPLOYMENT :
@@ -1162,6 +1214,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.NODE__DEPLOYMENT);
@@ -1187,6 +1240,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.NODE__NESTED_NODE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectFlowImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectFlowImpl.java
index 481b090..dff4a27 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectFlowImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectFlowImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectFlowImpl.java,v 1.14 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ObjectFlowImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,14 +19,19 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectFlow;
 import org.eclipse.uml2.uml.StringExpression;
@@ -131,6 +136,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OBJECT_FLOW;
 	}
@@ -283,7 +289,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoActions(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoActions(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateNoActions(this, diagnostics,
 			context);
 	}
@@ -294,7 +301,7 @@
 	 * @generated
 	 */
 	public boolean validateCompatibleTypes(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateCompatibleTypes(this, diagnostics,
 			context);
 	}
@@ -305,7 +312,7 @@
 	 * @generated
 	 */
 	public boolean validateSameUpperBounds(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateSameUpperBounds(this, diagnostics,
 			context);
 	}
@@ -315,7 +322,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTarget(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTarget(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateTarget(this, diagnostics, context);
 	}
 
@@ -325,7 +333,7 @@
 	 * @generated
 	 */
 	public boolean validateTransformationBehaviour(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateTransformationBehaviour(this,
 			diagnostics, context);
 	}
@@ -336,7 +344,7 @@
 	 * @generated
 	 */
 	public boolean validateSelectionBehaviour(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateSelectionBehaviour(this,
 			diagnostics, context);
 	}
@@ -347,7 +355,7 @@
 	 * @generated
 	 */
 	public boolean validateInputAndOutputParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectFlowOperations.validateInputAndOutputParameter(this,
 			diagnostics, context);
 	}
@@ -358,7 +366,7 @@
 	 * @generated
 	 */
 	public boolean validateIsMulticastOrIsMultireceive(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ObjectFlowOperations.validateIsMulticastOrIsMultireceive(this,
 			diagnostics, context);
 	}
@@ -368,6 +376,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_FLOW__EANNOTATIONS :
@@ -463,15 +472,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_FLOW__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OBJECT_FLOW__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OBJECT_FLOW__NAME :
 				setName((String) newValue);
@@ -481,7 +494,8 @@
 				return;
 			case UMLPackage.OBJECT_FLOW__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OBJECT_FLOW__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -497,11 +511,13 @@
 				return;
 			case UMLPackage.OBJECT_FLOW__REDEFINED_EDGE :
 				getRedefinedEdges().clear();
-				getRedefinedEdges().addAll((Collection) newValue);
+				getRedefinedEdges().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.OBJECT_FLOW__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.OBJECT_FLOW__GUARD :
 				setGuard((ValueSpecification) newValue);
@@ -539,6 +555,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_FLOW__EANNOTATIONS :
@@ -610,6 +627,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_FLOW__EANNOTATIONS :
@@ -678,6 +696,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectNodeImpl.java
index 88fd7f0..d40a8a0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObjectNodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectNodeImpl.java,v 1.21 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ObjectNodeImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,8 +37,14 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectNode;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
 import org.eclipse.uml2.uml.State;
@@ -143,7 +149,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inStates = null;
+	protected EList<State> inStates = null;
 
 	/**
 	 * The cached value of the '{@link #getSelection() <em>Selection</em>}' reference.
@@ -169,6 +175,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OBJECT_NODE;
 	}
@@ -220,23 +227,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.OBJECT_NODE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.OBJECT_NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.OBJECT_NODE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -403,9 +412,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInStates() {
+	public EList<State> getInStates() {
 		if (inStates == null) {
-			inStates = new EObjectResolvingEList(State.class, this,
+			inStates = new EObjectResolvingEList<State>(State.class, this,
 				UMLPackage.OBJECT_NODE__IN_STATE);
 		}
 		return inStates;
@@ -426,8 +435,7 @@
 	 * @generated
 	 */
 	public State getInState(String name, boolean ignoreCase, EClass eClass) {
-		inStateLoop : for (Iterator i = getInStates().iterator(); i.hasNext();) {
-			State inState = (State) i.next();
+		inStateLoop : for (State inState : getInStates()) {
 			if (eClass != null && !eClass.isInstance(inState))
 				continue inStateLoop;
 			if (name != null && !(ignoreCase
@@ -488,7 +496,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlowEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectNodeOperations.validateObjectFlowEdges(this, diagnostics,
 			context);
 	}
@@ -498,7 +506,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotUnique(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotUnique(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ObjectNodeOperations.validateNotUnique(this, diagnostics,
 			context);
 	}
@@ -509,7 +518,7 @@
 	 * @generated
 	 */
 	public boolean validateSelectionBehavior(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectNodeOperations.validateSelectionBehavior(this,
 			diagnostics, context);
 	}
@@ -520,7 +529,7 @@
 	 * @generated
 	 */
 	public boolean validateInputOutputParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ObjectNodeOperations.validateInputOutputParameter(this,
 			diagnostics, context);
 	}
@@ -530,18 +539,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.OBJECT_NODE__IN_STRUCTURED_NODE :
@@ -549,16 +559,16 @@
 			case UMLPackage.OBJECT_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.OBJECT_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OBJECT_NODE__UPPER_BOUND :
 				return basicSetUpperBound(null, msgs);
@@ -571,6 +581,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_NODE__EANNOTATIONS :
@@ -656,15 +667,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__NAME :
 				setName((String) newValue);
@@ -674,7 +689,8 @@
 				return;
 			case UMLPackage.OBJECT_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -690,23 +706,29 @@
 				return;
 			case UMLPackage.OBJECT_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__TYPE :
 				setType((Type) newValue);
@@ -722,7 +744,7 @@
 				return;
 			case UMLPackage.OBJECT_NODE__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.OBJECT_NODE__SELECTION :
 				setSelection((Behavior) newValue);
@@ -736,6 +758,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_NODE__EANNOTATIONS :
@@ -807,6 +830,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OBJECT_NODE__EANNOTATIONS :
@@ -876,7 +900,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.OBJECT_NODE__TYPE :
@@ -893,7 +918,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.TYPED_ELEMENT__TYPE :
@@ -910,6 +936,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -941,6 +968,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.OBJECT_NODE__UPPER_BOUND);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObservationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObservationImpl.java
index e549e3a..3147241 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObservationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ObservationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObservationImpl.java,v 1.2 2006/01/04 17:47:24 khussey Exp $
+ * $Id: ObservationImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OBSERVATION;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OccurrenceSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OccurrenceSpecificationImpl.java
index 520a92c..a403690 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OccurrenceSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OccurrenceSpecificationImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OccurrenceSpecificationImpl.java,v 1.17 2006/11/14 18:02:16 khussey Exp $
+ * $Id: OccurrenceSpecificationImpl.java,v 1.18 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -27,6 +27,8 @@
 import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Event;
 import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
@@ -65,7 +67,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList toBefores = null;
+	protected EList<GeneralOrdering> toBefores = null;
 
 	/**
 	 * The cached value of the '{@link #getEvent() <em>Event</em>}' reference.
@@ -85,7 +87,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList toAfters = null;
+	protected EList<GeneralOrdering> toAfters = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -101,6 +103,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OCCURRENCE_SPECIFICATION;
 	}
@@ -110,9 +113,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getToBefores() {
+	public EList<GeneralOrdering> getToBefores() {
 		if (toBefores == null) {
-			toBefores = new EObjectWithInverseResolvingEList(
+			toBefores = new EObjectWithInverseResolvingEList<GeneralOrdering>(
 				GeneralOrdering.class, this,
 				UMLPackage.OCCURRENCE_SPECIFICATION__TO_BEFORE,
 				UMLPackage.GENERAL_ORDERING__AFTER);
@@ -135,8 +138,7 @@
 	 * @generated
 	 */
 	public GeneralOrdering getToBefore(String name, boolean ignoreCase) {
-		toBeforeLoop : for (Iterator i = getToBefores().iterator(); i.hasNext();) {
-			GeneralOrdering toBefore = (GeneralOrdering) i.next();
+		toBeforeLoop : for (GeneralOrdering toBefore : getToBefores()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(toBefore.getName())
 				: name.equals(toBefore.getName())))
@@ -194,9 +196,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getToAfters() {
+	public EList<GeneralOrdering> getToAfters() {
 		if (toAfters == null) {
-			toAfters = new EObjectWithInverseResolvingEList(
+			toAfters = new EObjectWithInverseResolvingEList<GeneralOrdering>(
 				GeneralOrdering.class, this,
 				UMLPackage.OCCURRENCE_SPECIFICATION__TO_AFTER,
 				UMLPackage.GENERAL_ORDERING__BEFORE);
@@ -219,8 +221,7 @@
 	 * @generated
 	 */
 	public GeneralOrdering getToAfter(String name, boolean ignoreCase) {
-		toAfterLoop : for (Iterator i = getToAfters().iterator(); i.hasNext();) {
-			GeneralOrdering toAfter = (GeneralOrdering) i.next();
+		toAfterLoop : for (GeneralOrdering toAfter : getToAfters()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(toAfter.getName())
 				: name.equals(toAfter.getName())))
@@ -235,9 +236,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCovereds() {
+	public EList<Lifeline> getCovereds() {
 		if (covereds == null) {
-			covereds = new EObjectWithInverseResolvingEList.ManyInverse(
+			covereds = new EObjectWithInverseResolvingEList.ManyInverse<Lifeline>(
 				Lifeline.class, this,
 				UMLPackage.OCCURRENCE_SPECIFICATION__COVERED,
 				UMLPackage.LIFELINE__COVERED_BY);
@@ -250,6 +251,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Lifeline getCovered(String name) {
 		return getCovered(name, false);
 	}
@@ -259,9 +261,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Lifeline getCovered(String name, boolean ignoreCase) {
-		coveredLoop : for (Iterator i = getCovereds().iterator(); i.hasNext();) {
-			Lifeline covered = (Lifeline) i.next();
+		coveredLoop : for (Lifeline covered : getCovereds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(covered.getName())
 				: name.equals(covered.getName())))
@@ -285,17 +287,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__COVERED :
-				return ((InternalEList) getCovereds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getCovereds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__ENCLOSING_INTERACTION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -307,10 +312,11 @@
 				return basicSetEnclosingOperand((InteractionOperand) otherEnd,
 					msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_BEFORE :
-				return ((InternalEList) getToBefores())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getToBefores())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_AFTER :
-				return ((InternalEList) getToAfters()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getToAfters())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -320,35 +326,36 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__ENCLOSING_OPERAND :
 				return basicSetEnclosingOperand(null, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_BEFORE :
-				return ((InternalEList) getToBefores()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getToBefores()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_AFTER :
-				return ((InternalEList) getToAfters()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getToAfters()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -359,6 +366,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -416,15 +424,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -434,18 +446,20 @@
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -455,14 +469,16 @@
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_BEFORE :
 				getToBefores().clear();
-				getToBefores().addAll((Collection) newValue);
+				getToBefores().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EVENT :
 				setEvent((Event) newValue);
 				return;
 			case UMLPackage.OCCURRENCE_SPECIFICATION__TO_AFTER :
 				getToAfters().clear();
-				getToAfters().addAll((Collection) newValue);
+				getToAfters().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -473,6 +489,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
@@ -523,6 +540,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OCCURRENCE_SPECIFICATION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueActionImpl.java
index 5887bf9..5d3d25d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueActionImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueActionImpl.java,v 1.20 2006/11/14 18:02:16 khussey Exp $
+ * $Id: OpaqueActionImpl.java,v 1.21 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,7 +33,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OpaqueAction;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
@@ -72,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodies = null;
+	protected EList<String> bodies = null;
 
 	/**
 	 * The cached value of the '{@link #getLanguages() <em>Language</em>}' attribute list.
@@ -82,7 +90,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList languages = null;
+	protected EList<String> languages = null;
 
 	/**
 	 * The cached value of the '{@link #getInputValues() <em>Input Value</em>}' containment reference list.
@@ -92,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList inputValues = null;
+	protected EList<InputPin> inputValues = null;
 
 	/**
 	 * The cached value of the '{@link #getOutputValues() <em>Output Value</em>}' containment reference list.
@@ -102,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList outputValues = null;
+	protected EList<OutputPin> outputValues = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -118,6 +126,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OPAQUE_ACTION;
 	}
@@ -127,21 +136,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.OPAQUE_ACTION__INPUT, INPUT_ESUBSETS));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.OPAQUE_ACTION__INPUT,
+						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.OPAQUE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -150,23 +161,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache
-					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-						outputs = new DerivedUnionEObjectEList(OutputPin.class,
-							this, UMLPackage.OPAQUE_ACTION__OUTPUT,
-							OUTPUT_ESUBSETS));
+				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.OPAQUE_ACTION__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.OPAQUE_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -175,9 +186,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodies() {
+	public EList<String> getBodies() {
 		if (bodies == null) {
-			bodies = new EDataTypeEList.Unsettable(String.class, this,
+			bodies = new EDataTypeEList.Unsettable<String>(String.class, this,
 				UMLPackage.OPAQUE_ACTION__BODY);
 		}
 		return bodies;
@@ -190,7 +201,7 @@
 	 */
 	public void unsetBodies() {
 		if (bodies != null)
-			((InternalEList.Unsettable) bodies).unset();
+			((InternalEList.Unsettable<?>) bodies).unset();
 	}
 
 	/**
@@ -199,7 +210,7 @@
 	 * @generated
 	 */
 	public boolean isSetBodies() {
-		return bodies != null && ((InternalEList.Unsettable) bodies).isSet();
+		return bodies != null && ((InternalEList.Unsettable<?>) bodies).isSet();
 	}
 
 	/**
@@ -207,10 +218,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLanguages() {
+	public EList<String> getLanguages() {
 		if (languages == null) {
-			languages = new EDataTypeUniqueEList.Unsettable(String.class, this,
-				UMLPackage.OPAQUE_ACTION__LANGUAGE);
+			languages = new EDataTypeUniqueEList.Unsettable<String>(
+				String.class, this, UMLPackage.OPAQUE_ACTION__LANGUAGE);
 		}
 		return languages;
 	}
@@ -222,7 +233,7 @@
 	 */
 	public void unsetLanguages() {
 		if (languages != null)
-			((InternalEList.Unsettable) languages).unset();
+			((InternalEList.Unsettable<?>) languages).unset();
 	}
 
 	/**
@@ -232,7 +243,7 @@
 	 */
 	public boolean isSetLanguages() {
 		return languages != null
-			&& ((InternalEList.Unsettable) languages).isSet();
+			&& ((InternalEList.Unsettable<?>) languages).isSet();
 	}
 
 	/**
@@ -240,10 +251,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputValues() {
+	public EList<InputPin> getInputValues() {
 		if (inputValues == null) {
-			inputValues = new EObjectContainmentEList.Resolving(InputPin.class,
-				this, UMLPackage.OPAQUE_ACTION__INPUT_VALUE);
+			inputValues = new EObjectContainmentEList.Resolving<InputPin>(
+				InputPin.class, this, UMLPackage.OPAQUE_ACTION__INPUT_VALUE);
 		}
 		return inputValues;
 	}
@@ -288,9 +299,7 @@
 	 */
 	public InputPin getInputValue(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		inputValueLoop : for (Iterator i = getInputValues().iterator(); i
-			.hasNext();) {
-			InputPin inputValue = (InputPin) i.next();
+		inputValueLoop : for (InputPin inputValue : getInputValues()) {
 			if (eClass != null && !eClass.isInstance(inputValue))
 				continue inputValueLoop;
 			if (name != null && !(ignoreCase
@@ -321,9 +330,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputValues() {
+	public EList<OutputPin> getOutputValues() {
 		if (outputValues == null) {
-			outputValues = new EObjectContainmentEList.Resolving(
+			outputValues = new EObjectContainmentEList.Resolving<OutputPin>(
 				OutputPin.class, this, UMLPackage.OPAQUE_ACTION__OUTPUT_VALUE);
 		}
 		return outputValues;
@@ -360,9 +369,7 @@
 	 */
 	public OutputPin getOutputValue(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		outputValueLoop : for (Iterator i = getOutputValues().iterator(); i
-			.hasNext();) {
-			OutputPin outputValue = (OutputPin) i.next();
+		outputValueLoop : for (OutputPin outputValue : getOutputValues()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(outputValue.getName())
 				: name.equals(outputValue.getName())))
@@ -381,18 +388,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.OPAQUE_ACTION__IN_STRUCTURED_NODE :
@@ -400,31 +408,31 @@
 			case UMLPackage.OPAQUE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.OPAQUE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.OPAQUE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__INPUT_VALUE :
-				return ((InternalEList) getInputValues()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getInputValues()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OPAQUE_ACTION__OUTPUT_VALUE :
-				return ((InternalEList) getOutputValues()).basicRemove(
+				return ((InternalEList<?>) getOutputValues()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -444,6 +452,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_ACTION__EANNOTATIONS :
@@ -531,15 +540,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__NAME :
 				setName((String) newValue);
@@ -549,7 +562,8 @@
 				return;
 			case UMLPackage.OPAQUE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -565,51 +579,62 @@
 				return;
 			case UMLPackage.OPAQUE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__BODY :
 				getBodies().clear();
-				getBodies().addAll((Collection) newValue);
+				getBodies().addAll((Collection<? extends String>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__LANGUAGE :
 				getLanguages().clear();
-				getLanguages().addAll((Collection) newValue);
+				getLanguages().addAll((Collection<? extends String>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__INPUT_VALUE :
 				getInputValues().clear();
-				getInputValues().addAll((Collection) newValue);
+				getInputValues().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.OPAQUE_ACTION__OUTPUT_VALUE :
 				getOutputValues().clear();
-				getOutputValues().addAll((Collection) newValue);
+				getOutputValues().addAll(
+					(Collection<? extends OutputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -620,6 +645,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_ACTION__EANNOTATIONS :
@@ -694,6 +720,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_ACTION__EANNOTATIONS :
@@ -773,6 +800,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -801,6 +829,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.OPAQUE_ACTION__INPUT_VALUE);
@@ -821,6 +850,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.OPAQUE_ACTION__OUTPUT_VALUE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueBehaviorImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueBehaviorImpl.java
index 70ec78d..9478868 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueBehaviorImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueBehaviorImpl.java
@@ -8,13 +8,14 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueBehaviorImpl.java,v 1.19 2006/10/10 20:41:28 khussey Exp $
+ * $Id: OpaqueBehaviorImpl.java,v 1.20 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.util.EDataTypeEList;
 import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
@@ -23,12 +24,32 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 /**
@@ -57,7 +78,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodies = null;
+	protected EList<String> bodies = null;
 
 	/**
 	 * The cached value of the '{@link #getLanguages() <em>Language</em>}' attribute list.
@@ -67,7 +88,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList languages = null;
+	protected EList<String> languages = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -83,6 +104,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OPAQUE_BEHAVIOR;
 	}
@@ -92,9 +114,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodies() {
+	public EList<String> getBodies() {
 		if (bodies == null) {
-			bodies = new EDataTypeEList.Unsettable(String.class, this,
+			bodies = new EDataTypeEList.Unsettable<String>(String.class, this,
 				UMLPackage.OPAQUE_BEHAVIOR__BODY);
 		}
 		return bodies;
@@ -107,7 +129,7 @@
 	 */
 	public void unsetBodies() {
 		if (bodies != null)
-			((InternalEList.Unsettable) bodies).unset();
+			((InternalEList.Unsettable<?>) bodies).unset();
 	}
 
 	/**
@@ -116,7 +138,7 @@
 	 * @generated
 	 */
 	public boolean isSetBodies() {
-		return bodies != null && ((InternalEList.Unsettable) bodies).isSet();
+		return bodies != null && ((InternalEList.Unsettable<?>) bodies).isSet();
 	}
 
 	/**
@@ -124,10 +146,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLanguages() {
+	public EList<String> getLanguages() {
 		if (languages == null) {
-			languages = new EDataTypeUniqueEList.Unsettable(String.class, this,
-				UMLPackage.OPAQUE_BEHAVIOR__LANGUAGE);
+			languages = new EDataTypeUniqueEList.Unsettable<String>(
+				String.class, this, UMLPackage.OPAQUE_BEHAVIOR__LANGUAGE);
 		}
 		return languages;
 	}
@@ -139,7 +161,7 @@
 	 */
 	public void unsetLanguages() {
 		if (languages != null)
-			((InternalEList.Unsettable) languages).unset();
+			((InternalEList.Unsettable<?>) languages).unset();
 	}
 
 	/**
@@ -149,7 +171,7 @@
 	 */
 	public boolean isSetLanguages() {
 		return languages != null
-			&& ((InternalEList.Unsettable) languages).isSet();
+			&& ((InternalEList.Unsettable<?>) languages).isSet();
 	}
 
 	/**
@@ -157,6 +179,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_BEHAVIOR__EANNOTATIONS :
@@ -322,15 +345,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_BEHAVIOR__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__NAME :
 				setName((String) newValue);
@@ -340,22 +367,26 @@
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -371,7 +402,8 @@
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -381,118 +413,140 @@
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__BODY :
 				getBodies().clear();
-				getBodies().addAll((Collection) newValue);
+				getBodies().addAll((Collection<? extends String>) newValue);
 				return;
 			case UMLPackage.OPAQUE_BEHAVIOR__LANGUAGE :
 				getLanguages().clear();
-				getLanguages().addAll((Collection) newValue);
+				getLanguages().addAll((Collection<? extends String>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -503,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_BEHAVIOR__EANNOTATIONS :
@@ -652,6 +707,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_BEHAVIOR__EANNOTATIONS :
@@ -796,6 +852,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueExpressionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueExpressionImpl.java
index d115872..b7d3980 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueExpressionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OpaqueExpressionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueExpressionImpl.java,v 1.18 2006/11/14 18:02:18 khussey Exp $
+ * $Id: OpaqueExpressionImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -21,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,6 +33,8 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.OpaqueExpression;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.StringExpression;
@@ -70,7 +73,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList bodies = null;
+	protected EList<String> bodies = null;
 
 	/**
 	 * The cached value of the '{@link #getLanguages() <em>Language</em>}' attribute list.
@@ -80,7 +83,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList languages = null;
+	protected EList<String> languages = null;
 
 	/**
 	 * The cached value of the '{@link #getBehavior() <em>Behavior</em>}' reference.
@@ -106,6 +109,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OPAQUE_EXPRESSION;
 	}
@@ -115,9 +119,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getBodies() {
+	public EList<String> getBodies() {
 		if (bodies == null) {
-			bodies = new EDataTypeEList.Unsettable(String.class, this,
+			bodies = new EDataTypeEList.Unsettable<String>(String.class, this,
 				UMLPackage.OPAQUE_EXPRESSION__BODY);
 		}
 		return bodies;
@@ -130,7 +134,7 @@
 	 */
 	public void unsetBodies() {
 		if (bodies != null)
-			((InternalEList.Unsettable) bodies).unset();
+			((InternalEList.Unsettable<?>) bodies).unset();
 	}
 
 	/**
@@ -139,7 +143,7 @@
 	 * @generated
 	 */
 	public boolean isSetBodies() {
-		return bodies != null && ((InternalEList.Unsettable) bodies).isSet();
+		return bodies != null && ((InternalEList.Unsettable<?>) bodies).isSet();
 	}
 
 	/**
@@ -147,10 +151,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getLanguages() {
+	public EList<String> getLanguages() {
 		if (languages == null) {
-			languages = new EDataTypeUniqueEList.Unsettable(String.class, this,
-				UMLPackage.OPAQUE_EXPRESSION__LANGUAGE);
+			languages = new EDataTypeUniqueEList.Unsettable<String>(
+				String.class, this, UMLPackage.OPAQUE_EXPRESSION__LANGUAGE);
 		}
 		return languages;
 	}
@@ -162,7 +166,7 @@
 	 */
 	public void unsetLanguages() {
 		if (languages != null)
-			((InternalEList.Unsettable) languages).unset();
+			((InternalEList.Unsettable<?>) languages).unset();
 	}
 
 	/**
@@ -172,7 +176,7 @@
 	 */
 	public boolean isSetLanguages() {
 		return languages != null
-			&& ((InternalEList.Unsettable) languages).isSet();
+			&& ((InternalEList.Unsettable<?>) languages).isSet();
 	}
 
 	/**
@@ -246,7 +250,7 @@
 	 * @generated
 	 */
 	public boolean validateLanguageBodySize(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return OpaqueExpressionOperations.validateLanguageBodySize(this,
 			diagnostics, context);
 	}
@@ -257,7 +261,7 @@
 	 * @generated
 	 */
 	public boolean validateOnlyReturnResultParameters(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return OpaqueExpressionOperations.validateOnlyReturnResultParameters(
 			this, diagnostics, context);
 	}
@@ -268,7 +272,7 @@
 	 * @generated
 	 */
 	public boolean validateOneReturnResultParameter(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return OpaqueExpressionOperations.validateOneReturnResultParameter(
 			this, diagnostics, context);
 	}
@@ -323,6 +327,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_EXPRESSION__EANNOTATIONS :
@@ -384,15 +389,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_EXPRESSION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__NAME :
 				setName((String) newValue);
@@ -402,7 +411,8 @@
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -418,11 +428,11 @@
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__BODY :
 				getBodies().clear();
-				getBodies().addAll((Collection) newValue);
+				getBodies().addAll((Collection<? extends String>) newValue);
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__LANGUAGE :
 				getLanguages().clear();
-				getLanguages().addAll((Collection) newValue);
+				getLanguages().addAll((Collection<? extends String>) newValue);
 				return;
 			case UMLPackage.OPAQUE_EXPRESSION__BEHAVIOR :
 				setBehavior((Behavior) newValue);
@@ -436,6 +446,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_EXPRESSION__EANNOTATIONS :
@@ -483,6 +494,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPAQUE_EXPRESSION__EANNOTATIONS :
@@ -531,6 +543,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationImpl.java
index fb82fd1..3d1b517 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OperationImpl.java,v 1.31 2006/11/14 18:02:17 khussey Exp $
+ * $Id: OperationImpl.java,v 1.32 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -41,16 +41,22 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentWithInverseEList;
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.CallConcurrencyKind;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.OperationTemplateParameter;
 import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
@@ -126,7 +132,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -206,7 +212,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList preconditions = null;
+	protected EList<Constraint> preconditions = null;
 
 	/**
 	 * The cached value of the '{@link #getPostconditions() <em>Postcondition</em>}' reference list.
@@ -216,7 +222,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList postconditions = null;
+	protected EList<Constraint> postconditions = null;
 
 	/**
 	 * The cached value of the '{@link #getRedefinedOperations() <em>Redefined Operation</em>}' reference list.
@@ -226,7 +232,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedOperations = null;
+	protected EList<Operation> redefinedOperations = null;
 
 	/**
 	 * The cached value of the '{@link #getBodyCondition() <em>Body Condition</em>}' reference.
@@ -252,6 +258,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OPERATION;
 	}
@@ -461,23 +468,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.OPERATION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.OPERATION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.OPERATION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -486,9 +495,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.OPERATION__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -525,9 +534,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -656,27 +663,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class, this,
 							UMLPackage.OPERATION__REDEFINITION_CONTEXT,
 							REDEFINITION_CONTEXT_ESUBSETS));
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.OPERATION__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -686,24 +697,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeaturingClassifiers() {
+	public EList<Classifier> getFeaturingClassifiers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.OPERATION__FEATURING_CLASSIFIER,
-						FEATURING_CLASSIFIER_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class, this,
+							UMLPackage.OPERATION__FEATURING_CLASSIFIER,
+							FEATURING_CLASSIFIER_ESUBSETS));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.OPERATION__FEATURING_CLASSIFIER,
 			FEATURING_CLASSIFIER_ESUBSETS);
 	}
@@ -713,24 +729,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.OPERATION__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.OPERATION__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.OPERATION__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -739,9 +761,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedRules() {
+	public EList<Constraint> getOwnedRules() {
 		if (ownedRules == null) {
-			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.OPERATION__OWNED_RULE, null,
 				OWNED_RULE_ESUBSETS, UMLPackage.CONSTRAINT__CONTEXT);
 		}
@@ -923,9 +945,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPreconditions() {
+	public EList<Constraint> getPreconditions() {
 		if (preconditions == null) {
-			preconditions = new SubsetSupersetEObjectResolvingEList(
+			preconditions = new SubsetSupersetEObjectResolvingEList<Constraint>(
 				Constraint.class, this, UMLPackage.OPERATION__PRECONDITION,
 				PRECONDITION_ESUPERSETS, null);
 		}
@@ -970,9 +992,7 @@
 	 */
 	public Constraint getPrecondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		preconditionLoop : for (Iterator i = getPreconditions().iterator(); i
-			.hasNext();) {
-			Constraint precondition = (Constraint) i.next();
+		preconditionLoop : for (Constraint precondition : getPreconditions()) {
 			if (eClass != null && !eClass.isInstance(precondition))
 				continue preconditionLoop;
 			if (name != null && !(ignoreCase
@@ -991,9 +1011,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPostconditions() {
+	public EList<Constraint> getPostconditions() {
 		if (postconditions == null) {
-			postconditions = new SubsetSupersetEObjectResolvingEList(
+			postconditions = new SubsetSupersetEObjectResolvingEList<Constraint>(
 				Constraint.class, this, UMLPackage.OPERATION__POSTCONDITION,
 				POSTCONDITION_ESUPERSETS, null);
 		}
@@ -1038,9 +1058,7 @@
 	 */
 	public Constraint getPostcondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		postconditionLoop : for (Iterator i = getPostconditions().iterator(); i
-			.hasNext();) {
-			Constraint postcondition = (Constraint) i.next();
+		postconditionLoop : for (Constraint postcondition : getPostconditions()) {
 			if (eClass != null && !eClass.isInstance(postcondition))
 				continue postconditionLoop;
 			if (name != null && !(ignoreCase
@@ -1059,10 +1077,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedOperations() {
+	public EList<Operation> getRedefinedOperations() {
 		if (redefinedOperations == null) {
-			redefinedOperations = new EObjectResolvingEList(Operation.class,
-				this, UMLPackage.OPERATION__REDEFINED_OPERATION);
+			redefinedOperations = new EObjectResolvingEList<Operation>(
+				Operation.class, this,
+				UMLPackage.OPERATION__REDEFINED_OPERATION);
 		}
 		return redefinedOperations;
 	}
@@ -1073,7 +1092,7 @@
 	 * @generated
 	 */
 	public Operation getRedefinedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes) {
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getRedefinedOperation(name, ownedParameterNames,
 			ownedParameterTypes, false);
 	}
@@ -1084,27 +1103,25 @@
 	 * @generated
 	 */
 	public Operation getRedefinedOperation(String name,
-			EList ownedParameterNames, EList ownedParameterTypes,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
 			boolean ignoreCase) {
-		redefinedOperationLoop : for (Iterator i = getRedefinedOperations()
-			.iterator(); i.hasNext();) {
-			Operation redefinedOperation = (Operation) i.next();
+		redefinedOperationLoop : for (Operation redefinedOperation : getRedefinedOperations()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(redefinedOperation.getName())
 				: name.equals(redefinedOperation.getName())))
 				continue redefinedOperationLoop;
-			EList ownedParameterList = redefinedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = redefinedOperation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue redefinedOperationLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -1227,7 +1244,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newBodyCondition != null) {
-				EList ownedRules = getOwnedRules();
+				EList<Constraint> ownedRules = getOwnedRules();
 				if (!ownedRules.contains(newBodyCondition)) {
 					ownedRules.add(newBodyCondition);
 				}
@@ -1357,9 +1374,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameters() {
+	public EList<Parameter> getOwnedParameters() {
 		if (ownedParameters == null) {
-			ownedParameters = new EObjectContainmentEList.Resolving(
+			ownedParameters = new EObjectContainmentEList.Resolving<Parameter>(
 				Parameter.class, this, UMLPackage.OPERATION__OWNED_PARAMETER);
 		}
 		return ownedParameters;
@@ -1370,6 +1387,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Parameter createOwnedParameter(String name, Type type) {
 		Parameter newOwnedParameter = (Parameter) create(UMLPackage.Literals.PARAMETER);
 		getOwnedParameters().add(newOwnedParameter);
@@ -1385,6 +1403,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Parameter getOwnedParameter(String name, Type type) {
 		return getOwnedParameter(name, type, false, false);
 	}
@@ -1394,11 +1413,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Parameter getOwnedParameter(String name, Type type,
 			boolean ignoreCase, boolean createOnDemand) {
-		ownedParameterLoop : for (Iterator i = getOwnedParameters().iterator(); i
-			.hasNext();) {
-			Parameter ownedParameter = (Parameter) i.next();
+		ownedParameterLoop : for (Parameter ownedParameter : getOwnedParameters()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedParameter.getName())
 				: name.equals(ownedParameter.getName())))
@@ -1426,10 +1444,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRaisedExceptions() {
+	public EList<Type> getRaisedExceptions() {
 		if (raisedExceptions == null) {
-			raisedExceptions = new EObjectResolvingEList(Type.class, this,
-				UMLPackage.OPERATION__RAISED_EXCEPTION);
+			raisedExceptions = new EObjectResolvingEList<Type>(Type.class,
+				this, UMLPackage.OPERATION__RAISED_EXCEPTION);
 		}
 		return raisedExceptions;
 	}
@@ -1439,6 +1457,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Type getRaisedException(String name) {
 		return getRaisedException(name, false, null);
 	}
@@ -1448,11 +1467,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Type getRaisedException(String name, boolean ignoreCase,
 			EClass eClass) {
-		raisedExceptionLoop : for (Iterator i = getRaisedExceptions()
-			.iterator(); i.hasNext();) {
-			Type raisedException = (Type) i.next();
+		raisedExceptionLoop : for (Type raisedException : getRaisedExceptions()) {
 			if (eClass != null && !eClass.isInstance(raisedException))
 				continue raisedExceptionLoop;
 			if (name != null && !(ignoreCase
@@ -1496,12 +1514,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -1528,7 +1547,7 @@
 	 * @generated
 	 */
 	public boolean validateAtMostOneReturn(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return OperationOperations.validateAtMostOneReturn(this, diagnostics,
 			context);
 	}
@@ -1539,7 +1558,7 @@
 	 * @generated
 	 */
 	public boolean validateOnlyBodyForQuery(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return OperationOperations.validateOnlyBodyForQuery(this, diagnostics,
 			context);
 	}
@@ -1576,10 +1595,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList returnResult() {
+	public EList<Parameter> returnResult() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Parameter> result = (EList<Parameter>) cache.get(this,
 				UMLPackage.Literals.OPERATION.getEOperations().get(15));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.OPERATION.getEOperations()
@@ -1604,26 +1624,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__METHOD :
-				return ((InternalEList) getMethods()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getMethods())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1638,8 +1661,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.OPERATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -1670,44 +1693,45 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPERATION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.OPERATION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__METHOD :
-				return ((InternalEList) getMethods()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getMethods()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.OPERATION__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.OPERATION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.OPERATION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.OPERATION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
@@ -1726,6 +1750,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -1755,6 +1780,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
@@ -1888,15 +1914,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.OPERATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.OPERATION__NAME :
 				setName((String) newValue);
@@ -1906,22 +1936,26 @@
 				return;
 			case UMLPackage.OPERATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.OPERATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.OPERATION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.OPERATION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.OPERATION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPERATION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1931,25 +1965,28 @@
 				return;
 			case UMLPackage.OPERATION__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.OPERATION__IS_ABSTRACT :
 				setIsAbstract(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.OPERATION__METHOD :
 				getMethods().clear();
-				getMethods().addAll((Collection) newValue);
+				getMethods().addAll((Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.OPERATION__CONCURRENCY :
 				setConcurrency((CallConcurrencyKind) newValue);
 				return;
 			case UMLPackage.OPERATION__RAISED_EXCEPTION :
 				getRaisedExceptions().clear();
-				getRaisedExceptions().addAll((Collection) newValue);
+				getRaisedExceptions().addAll(
+					(Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.OPERATION__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.OPERATION__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -1959,7 +1996,8 @@
 				return;
 			case UMLPackage.OPERATION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.OPERATION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -1987,15 +2025,18 @@
 				return;
 			case UMLPackage.OPERATION__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPERATION__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.OPERATION__REDEFINED_OPERATION :
 				getRedefinedOperations().clear();
-				getRedefinedOperations().addAll((Collection) newValue);
+				getRedefinedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.OPERATION__DATATYPE :
 				setDatatype((DataType) newValue);
@@ -2015,6 +2056,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
@@ -2128,6 +2170,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPERATION__EANNOTATIONS :
@@ -2232,7 +2275,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.OPERATION__OWNING_TEMPLATE_PARAMETER :
@@ -2261,7 +2305,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -2290,6 +2335,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -2320,6 +2366,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.OPERATION__OWNING_TEMPLATE_PARAMETER);
@@ -2347,6 +2394,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.OPERATION__TEMPLATE_BINDING)
@@ -2382,6 +2430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinitionContexts() {
 		return super.isSetRedefinitionContexts()
 			|| eIsSet(UMLPackage.OPERATION__INTERFACE)
@@ -2412,6 +2461,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.OPERATION__CLASS)
 			|| eIsSet(UMLPackage.OPERATION__DATATYPE);
@@ -2433,6 +2483,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeaturingClassifiers() {
 		return super.isSetFeaturingClassifiers()
 			|| eIsSet(UMLPackage.OPERATION__CLASS)
@@ -2487,6 +2538,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.OPERATION__REDEFINED_OPERATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationTemplateParameterImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationTemplateParameterImpl.java
index dd07231..cb9ae73 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationTemplateParameterImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OperationTemplateParameterImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OperationTemplateParameterImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: OperationTemplateParameterImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -57,6 +57,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OPERATION_TEMPLATE_PARAMETER;
 	}
@@ -114,6 +115,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetParameteredElement(
 			ParameterableElement newParameteredElement, NotificationChain msgs) {
 
@@ -180,6 +182,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.OPERATION_TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -221,6 +224,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.OPERATION_TEMPLATE_PARAMETER__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OutputPinImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OutputPinImpl.java
index 0257de1..72c3593 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OutputPinImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/OutputPinImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OutputPinImpl.java,v 1.3 2006/05/16 15:07:26 khussey Exp $
+ * $Id: OutputPinImpl.java,v 1.4 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.OUTPUT_PIN;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validateIncomingEdgesStructuredOnly(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return OutputPinOperations.validateIncomingEdgesStructuredOnly(this,
 			diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImpl.java
index 029fc8c..063cfa7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageImpl.java,v 1.32 2006/11/17 15:48:50 khussey Exp $
+ * $Id: PackageImpl.java,v 1.33 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,7 +22,9 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -38,11 +39,16 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedSubsetEObjectEList;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Enumeration;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.PackageMerge;
 import org.eclipse.uml2.uml.PackageableElement;
 import org.eclipse.uml2.uml.ParameterableElement;
@@ -111,7 +117,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -131,7 +137,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList packagedElements = null;
+	protected EList<PackageableElement> packagedElements = null;
 
 	/**
 	 * The cached value of the '{@link #getPackageMerges() <em>Package Merge</em>}' containment reference list.
@@ -141,7 +147,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList packageMerges = null;
+	protected EList<PackageMerge> packageMerges = null;
 
 	/**
 	 * The cached value of the '{@link #getProfileApplications() <em>Profile Application</em>}' containment reference list.
@@ -151,7 +157,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList profileApplications = null;
+	protected EList<ProfileApplication> profileApplications = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -167,6 +173,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PACKAGE;
 	}
@@ -384,23 +391,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PACKAGE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PACKAGE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PACKAGE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -409,9 +417,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.PACKAGE__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -448,9 +456,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -578,26 +584,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache
-					.put(eResource, this,
+					.put(
+						eResource,
+						this,
 						UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-						ownedMembers = new DerivedUnionEObjectEList(
+						ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 							NamedElement.class, this,
 							UMLPackage.PACKAGE__OWNED_MEMBER,
 							OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.PACKAGE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.PACKAGE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -605,9 +614,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackagedElements() {
+	public EList<PackageableElement> getPackagedElements() {
 		if (packagedElements == null) {
-			packagedElements = new EObjectContainmentEList.Resolving(
+			packagedElements = new EObjectContainmentEList.Resolving<PackageableElement>(
 				PackageableElement.class, this,
 				UMLPackage.PACKAGE__PACKAGED_ELEMENT);
 		}
@@ -643,9 +652,7 @@
 	 */
 	public PackageableElement getPackagedElement(String name,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		packagedElementLoop : for (Iterator i = getPackagedElements()
-			.iterator(); i.hasNext();) {
-			PackageableElement packagedElement = (PackageableElement) i.next();
+		packagedElementLoop : for (PackageableElement packagedElement : getPackagedElements()) {
 			if (eClass != null && !eClass.isInstance(packagedElement))
 				continue packagedElementLoop;
 			if (name != null && !(ignoreCase
@@ -664,9 +671,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackageMerges() {
+	public EList<PackageMerge> getPackageMerges() {
 		if (packageMerges == null) {
-			packageMerges = new EObjectContainmentWithInverseEList.Resolving(
+			packageMerges = new EObjectContainmentWithInverseEList.Resolving<PackageMerge>(
 				PackageMerge.class, this, UMLPackage.PACKAGE__PACKAGE_MERGE,
 				UMLPackage.PACKAGE_MERGE__RECEIVING_PACKAGE);
 		}
@@ -704,9 +711,7 @@
 	 */
 	public PackageMerge getPackageMerge(
 			org.eclipse.uml2.uml.Package mergedPackage, boolean createOnDemand) {
-		packageMergeLoop : for (Iterator i = getPackageMerges().iterator(); i
-			.hasNext();) {
-			PackageMerge packageMerge = (PackageMerge) i.next();
+		packageMergeLoop : for (PackageMerge packageMerge : getPackageMerges()) {
 			if (mergedPackage != null
 				&& !mergedPackage.equals(packageMerge.getMergedPackage()))
 				continue packageMergeLoop;
@@ -722,22 +727,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getOwnedTypes() {
+	public EList<Type> getOwnedTypes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedTypes = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Type> ownedTypes = (EList<Type>) cache.get(eResource, this,
 				UMLPackage.Literals.PACKAGE__OWNED_TYPE);
 			if (ownedTypes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.PACKAGE__OWNED_TYPE,
-					ownedTypes = new DerivedSubsetEObjectEList(Type.class,
-						this, UMLPackage.PACKAGE__OWNED_TYPE,
+					ownedTypes = new DerivedSubsetEObjectEList<Type>(
+						Type.class, this, UMLPackage.PACKAGE__OWNED_TYPE,
 						OWNED_TYPE_ESUPERSETS));
 			}
 			return ownedTypes;
 		}
-		return new DerivedSubsetEObjectEList(Type.class, this,
+		return new DerivedSubsetEObjectEList<Type>(Type.class, this,
 			UMLPackage.PACKAGE__OWNED_TYPE, OWNED_TYPE_ESUPERSETS);
 	}
 
@@ -770,9 +776,7 @@
 	 */
 	public Type getOwnedType(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		ownedTypeLoop : for (Iterator i = getOwnedTypes().iterator(); i
-			.hasNext();) {
-			Type ownedType = (Type) i.next();
+		ownedTypeLoop : for (Type ownedType : getOwnedTypes()) {
 			if (eClass != null && !eClass.isInstance(ownedType))
 				continue ownedTypeLoop;
 			if (name != null && !(ignoreCase
@@ -791,23 +795,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getNestedPackages() {
+	public EList<org.eclipse.uml2.uml.Package> getNestedPackages() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList nestedPackages = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.PACKAGE__NESTED_PACKAGE);
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Package> nestedPackages = (EList<org.eclipse.uml2.uml.Package>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.PACKAGE__NESTED_PACKAGE);
 			if (nestedPackages == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.PACKAGE__NESTED_PACKAGE,
-					nestedPackages = new DerivedSubsetEObjectEList(
-						org.eclipse.uml2.uml.Package.class, this,
-						UMLPackage.PACKAGE__NESTED_PACKAGE,
-						NESTED_PACKAGE_ESUPERSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.PACKAGE__NESTED_PACKAGE,
+						nestedPackages = new DerivedSubsetEObjectEList<org.eclipse.uml2.uml.Package>(
+							org.eclipse.uml2.uml.Package.class, this,
+							UMLPackage.PACKAGE__NESTED_PACKAGE,
+							NESTED_PACKAGE_ESUPERSETS));
 			}
 			return nestedPackages;
 		}
-		return new DerivedSubsetEObjectEList(
+		return new DerivedSubsetEObjectEList<org.eclipse.uml2.uml.Package>(
 			org.eclipse.uml2.uml.Package.class, this,
 			UMLPackage.PACKAGE__NESTED_PACKAGE, NESTED_PACKAGE_ESUPERSETS);
 	}
@@ -842,10 +851,7 @@
 	 */
 	public org.eclipse.uml2.uml.Package getNestedPackage(String name,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		nestedPackageLoop : for (Iterator i = getNestedPackages().iterator(); i
-			.hasNext();) {
-			org.eclipse.uml2.uml.Package nestedPackage = (org.eclipse.uml2.uml.Package) i
-				.next();
+		nestedPackageLoop : for (org.eclipse.uml2.uml.Package nestedPackage : getNestedPackages()) {
 			if (eClass != null && !eClass.isInstance(nestedPackage))
 				continue nestedPackageLoop;
 			if (name != null && !(ignoreCase
@@ -897,8 +903,8 @@
 			if (eInternalContainer() != null)
 				msgs = eBasicRemoveFromContainer(msgs);
 			if (newNestingPackage != null)
-				msgs = ((InternalEList) newNestingPackage.getNestedPackages())
-					.basicAdd(this, msgs);
+				msgs = ((InternalEList<org.eclipse.uml2.uml.Package>) newNestingPackage
+					.getNestedPackages()).basicAdd(this, msgs);
 			msgs = eBasicSetContainer((InternalEObject) newNestingPackage,
 				UMLPackage.PACKAGE__NESTING_PACKAGE, msgs);
 			if (msgs != null)
@@ -914,9 +920,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getProfileApplications() {
+	public EList<ProfileApplication> getProfileApplications() {
 		if (profileApplications == null) {
-			profileApplications = new EObjectContainmentWithInverseEList.Resolving(
+			profileApplications = new EObjectContainmentWithInverseEList.Resolving<ProfileApplication>(
 				ProfileApplication.class, this,
 				UMLPackage.PACKAGE__PROFILE_APPLICATION,
 				UMLPackage.PROFILE_APPLICATION__APPLYING_PACKAGE);
@@ -958,12 +964,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -990,7 +997,7 @@
 	 * @generated
 	 */
 	public boolean validateElementsPublicOrPrivate(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PackageOperations.validateElementsPublicOrPrivate(this,
 			diagnostics, context);
 	}
@@ -1046,7 +1053,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList applyProfile(Profile profile) {
+	public EList<EObject> applyProfile(Profile profile) {
 		return PackageOperations.applyProfile(this, profile);
 	}
 
@@ -1055,7 +1062,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList unapplyProfile(Profile profile) {
+	public EList<EObject> unapplyProfile(Profile profile) {
 		return PackageOperations.unapplyProfile(this, profile);
 	}
 
@@ -1064,11 +1071,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAppliedProfiles() {
+	public EList<Profile> getAppliedProfiles() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PACKAGE
-				.getEOperations().get(8));
+			@SuppressWarnings("unchecked")
+			EList<Profile> result = (EList<Profile>) cache.get(this,
+				UMLPackage.Literals.PACKAGE.getEOperations().get(8));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PACKAGE.getEOperations()
 					.get(8), result = PackageOperations
@@ -1103,11 +1111,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllProfileApplications() {
+	public EList<ProfileApplication> getAllProfileApplications() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PACKAGE
-				.getEOperations().get(12));
+			@SuppressWarnings("unchecked")
+			EList<ProfileApplication> result = (EList<ProfileApplication>) cache
+				.get(this, UMLPackage.Literals.PACKAGE.getEOperations().get(12));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PACKAGE.getEOperations()
 					.get(12), result = PackageOperations
@@ -1160,11 +1169,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllAppliedProfiles() {
+	public EList<Profile> getAllAppliedProfiles() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PACKAGE
-				.getEOperations().get(9));
+			@SuppressWarnings("unchecked")
+			EList<Profile> result = (EList<Profile>) cache.get(this,
+				UMLPackage.Literals.PACKAGE.getEOperations().get(9));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PACKAGE.getEOperations()
 					.get(9), result = PackageOperations
@@ -1180,11 +1190,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList visibleMembers() {
+	public EList<PackageableElement> visibleMembers() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PACKAGE
-				.getEOperations().get(16));
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this, UMLPackage.Literals.PACKAGE.getEOperations().get(16));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PACKAGE.getEOperations()
 					.get(16), result = PackageOperations.visibleMembers(this));
@@ -1217,24 +1228,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1249,8 +1262,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.PACKAGE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -1260,11 +1273,11 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.PACKAGE__PACKAGE_MERGE :
-				return ((InternalEList) getPackageMerges()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageMerges())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE__PROFILE_APPLICATION :
-				return ((InternalEList) getProfileApplications()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getProfileApplications())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -1274,47 +1287,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PACKAGE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PACKAGE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.PACKAGE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.PACKAGE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.PACKAGE__PACKAGE_MERGE :
-				return ((InternalEList) getPackageMerges()).basicRemove(
+				return ((InternalEList<?>) getPackageMerges()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__PACKAGED_ELEMENT :
-				return ((InternalEList) getPackagedElements()).basicRemove(
+				return ((InternalEList<?>) getPackagedElements()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE__PROFILE_APPLICATION :
-				return ((InternalEList) getProfileApplications()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getProfileApplications())
+					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -1324,6 +1338,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -1340,6 +1355,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
@@ -1417,15 +1433,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PACKAGE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PACKAGE__NAME :
 				setName((String) newValue);
@@ -1435,22 +1455,26 @@
 				return;
 			case UMLPackage.PACKAGE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PACKAGE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PACKAGE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.PACKAGE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.PACKAGE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PACKAGE__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -1460,33 +1484,39 @@
 				return;
 			case UMLPackage.PACKAGE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.PACKAGE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
 				return;
 			case UMLPackage.PACKAGE__OWNED_TYPE :
 				getOwnedTypes().clear();
-				getOwnedTypes().addAll((Collection) newValue);
+				getOwnedTypes().addAll((Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.PACKAGE__PACKAGE_MERGE :
 				getPackageMerges().clear();
-				getPackageMerges().addAll((Collection) newValue);
+				getPackageMerges().addAll(
+					(Collection<? extends PackageMerge>) newValue);
 				return;
 			case UMLPackage.PACKAGE__PACKAGED_ELEMENT :
 				getPackagedElements().clear();
-				getPackagedElements().addAll((Collection) newValue);
+				getPackagedElements().addAll(
+					(Collection<? extends PackageableElement>) newValue);
 				return;
 			case UMLPackage.PACKAGE__NESTED_PACKAGE :
 				getNestedPackages().clear();
-				getNestedPackages().addAll((Collection) newValue);
+				getNestedPackages()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Package>) newValue);
 				return;
 			case UMLPackage.PACKAGE__NESTING_PACKAGE :
 				setNestingPackage((org.eclipse.uml2.uml.Package) newValue);
 				return;
 			case UMLPackage.PACKAGE__PROFILE_APPLICATION :
 				getProfileApplications().clear();
-				getProfileApplications().addAll((Collection) newValue);
+				getProfileApplications().addAll(
+					(Collection<? extends ProfileApplication>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1497,6 +1527,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
@@ -1565,6 +1596,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE__EANNOTATIONS :
@@ -1632,7 +1664,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.PACKAGE__OWNING_TEMPLATE_PARAMETER :
@@ -1667,7 +1700,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -1702,6 +1736,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1732,6 +1767,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PACKAGE__OWNING_TEMPLATE_PARAMETER);
@@ -1758,6 +1794,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PACKAGE__TEMPLATE_BINDING)
@@ -1814,6 +1851,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.PACKAGE__PACKAGED_ELEMENT);
@@ -1838,6 +1876,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.PACKAGE__NESTING_PACKAGE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImportImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImportImpl.java
index 3d1b8ca..1e6d76c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImportImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageImportImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageImportImpl.java,v 1.14 2006/11/14 18:02:18 khussey Exp $
+ * $Id: PackageImportImpl.java,v 1.15 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.PackageImport;
@@ -109,6 +111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PACKAGE_IMPORT;
 	}
@@ -118,22 +121,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.PACKAGE_IMPORT__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PACKAGE_IMPORT__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PACKAGE_IMPORT__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -142,22 +147,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.PACKAGE_IMPORT__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PACKAGE_IMPORT__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PACKAGE_IMPORT__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -303,7 +310,7 @@
 	 * @generated
 	 */
 	public boolean validatePublicOrPrivate(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PackageImportOperations.validatePublicOrPrivate(this,
 			diagnostics, context);
 	}
@@ -313,12 +320,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -332,14 +341,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE_IMPORT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE :
 				return basicSetImportingNamespace(null, msgs);
@@ -352,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -368,6 +379,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
@@ -405,15 +417,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PACKAGE_IMPORT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PACKAGE_IMPORT__VISIBILITY :
 				setVisibility((VisibilityKind) newValue);
@@ -433,6 +449,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
@@ -459,6 +476,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_IMPORT__EANNOTATIONS :
@@ -490,6 +508,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -516,6 +535,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.PACKAGE_IMPORT__IMPORTED_PACKAGE);
@@ -548,6 +568,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE);
@@ -572,6 +593,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageMergeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageMergeImpl.java
index f57032f..213a565 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageMergeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageMergeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageMergeImpl.java,v 1.13 2006/11/14 18:02:18 khussey Exp $
+ * $Id: PackageMergeImpl.java,v 1.14 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,6 +32,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.PackageMerge;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -80,6 +82,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PACKAGE_MERGE;
 	}
@@ -89,22 +92,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.PACKAGE_MERGE__TARGET, TARGET_ESUBSETS));
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PACKAGE_MERGE__TARGET,
+						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PACKAGE_MERGE__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -113,22 +118,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
-						UMLPackage.PACKAGE_MERGE__SOURCE, SOURCE_ESUBSETS));
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PACKAGE_MERGE__SOURCE,
+						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PACKAGE_MERGE__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -247,12 +254,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGE_MERGE__RECEIVING_PACKAGE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -267,14 +276,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE_MERGE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGE_MERGE__RECEIVING_PACKAGE :
 				return basicSetReceivingPackage(null, msgs);
@@ -287,6 +297,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -303,6 +314,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
@@ -338,15 +350,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PACKAGE_MERGE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PACKAGE_MERGE__MERGED_PACKAGE :
 				setMergedPackage((org.eclipse.uml2.uml.Package) newValue);
@@ -363,6 +379,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
@@ -386,6 +403,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGE_MERGE__EANNOTATIONS :
@@ -425,6 +443,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.PACKAGE_MERGE__MERGED_PACKAGE);
@@ -457,6 +476,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.PACKAGE_MERGE__RECEIVING_PACKAGE);
@@ -481,6 +501,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PACKAGE_MERGE__RECEIVING_PACKAGE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageableElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageableElementImpl.java
index 544ce9b..5f84260 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageableElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PackageableElementImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageableElementImpl.java,v 1.14 2006/11/14 18:02:16 khussey Exp $
+ * $Id: PackageableElementImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,6 +16,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -26,6 +27,8 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.PackageableElement;
 import org.eclipse.uml2.uml.ParameterableElement;
@@ -80,6 +83,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PACKAGEABLE_ELEMENT;
 	}
@@ -317,15 +321,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -348,18 +354,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PACKAGEABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -375,6 +382,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -391,6 +399,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
@@ -436,15 +445,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PACKAGEABLE_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PACKAGEABLE_ELEMENT__NAME :
 				setName((String) newValue);
@@ -454,7 +467,8 @@
 				return;
 			case UMLPackage.PACKAGEABLE_ELEMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PACKAGEABLE_ELEMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -474,6 +488,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
@@ -509,6 +524,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PACKAGEABLE_ELEMENT__EANNOTATIONS :
@@ -547,7 +563,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.PACKAGEABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -566,7 +583,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -585,6 +603,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -615,6 +634,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PACKAGEABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterImpl.java
index dc61e02..54720be 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterImpl.java,v 1.33 2006/11/17 15:48:50 khussey Exp $
+ * $Id: ParameterImpl.java,v 1.34 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,6 +37,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.MultiplicityElement;
 import org.eclipse.uml2.uml.Namespace;
@@ -175,7 +178,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList parameterSets = null;
+	protected EList<ParameterSet> parameterSets = null;
 
 	/**
 	 * The default value of the '{@link #getDirection() <em>Direction</em>}' attribute.
@@ -301,6 +304,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PARAMETER;
 	}
@@ -310,23 +314,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PARAMETER__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.PARAMETER__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PARAMETER__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -647,9 +653,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getParameterSets() {
+	public EList<ParameterSet> getParameterSets() {
 		if (parameterSets == null) {
-			parameterSets = new EObjectWithInverseResolvingEList.ManyInverse(
+			parameterSets = new EObjectWithInverseResolvingEList.ManyInverse<ParameterSet>(
 				ParameterSet.class, this, UMLPackage.PARAMETER__PARAMETER_SET,
 				UMLPackage.PARAMETER_SET__PARAMETER);
 		}
@@ -671,9 +677,7 @@
 	 * @generated
 	 */
 	public ParameterSet getParameterSet(String name, boolean ignoreCase) {
-		parameterSetLoop : for (Iterator i = getParameterSets().iterator(); i
-			.hasNext();) {
-			ParameterSet parameterSet = (ParameterSet) i.next();
+		parameterSetLoop : for (ParameterSet parameterSet : getParameterSets()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(parameterSet.getName())
 				: name.equals(parameterSet.getName())))
@@ -721,8 +725,8 @@
 			if (eInternalContainer() != null)
 				msgs = eBasicRemoveFromContainer(msgs);
 			if (newOperation != null)
-				msgs = ((InternalEList) newOperation.getOwnedParameters())
-					.basicAdd(this, msgs);
+				msgs = ((InternalEList<Parameter>) newOperation
+					.getOwnedParameters()).basicAdd(this, msgs);
 			msgs = eBasicSetContainer((InternalEObject) newOperation,
 				UMLPackage.PARAMETER__OPERATION, msgs);
 			if (msgs != null)
@@ -1015,7 +1019,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGt0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGt0(this,
 			diagnostics, context);
 	}
@@ -1025,7 +1030,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateLowerGe0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateLowerGe0(this,
 			diagnostics, context);
 	}
@@ -1035,7 +1041,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGeLower(this,
 			diagnostics, context);
 	}
@@ -1046,7 +1053,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationNoSideEffects(this, diagnostics, context);
 	}
@@ -1057,7 +1064,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationConstant(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationConstant(this, diagnostics, context);
 	}
@@ -1130,7 +1137,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateConnectorEnd(DiagnosticChain diagnostics, Map context) {
+	public boolean validateConnectorEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ParameterOperations.validateConnectorEnd(this, diagnostics,
 			context);
 	}
@@ -1141,7 +1149,7 @@
 	 * @generated
 	 */
 	public boolean validateStreamAndException(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ParameterOperations.validateStreamAndException(this,
 			diagnostics, context);
 	}
@@ -1151,7 +1159,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotException(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotException(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ParameterOperations.validateNotException(this, diagnostics,
 			context);
 	}
@@ -1162,7 +1171,7 @@
 	 * @generated
 	 */
 	public boolean validateReentrantBehaviors(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ParameterOperations.validateReentrantBehaviors(this,
 			diagnostics, context);
 	}
@@ -1172,7 +1181,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInAndOut(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInAndOut(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ParameterOperations.validateInAndOut(this, diagnostics, context);
 	}
 
@@ -1226,15 +1236,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETER__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1249,10 +1261,11 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.PARAMETER__END :
-				return ((InternalEList) getEnds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEnds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETER__PARAMETER_SET :
-				return ((InternalEList) getParameterSets()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getParameterSets())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -1262,18 +1275,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PARAMETER__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PARAMETER__OWNING_TEMPLATE_PARAMETER :
@@ -1281,13 +1295,14 @@
 			case UMLPackage.PARAMETER__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.PARAMETER__END :
-				return ((InternalEList) getEnds()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEnds()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.PARAMETER__UPPER_VALUE :
 				return basicSetUpperValue(null, msgs);
 			case UMLPackage.PARAMETER__LOWER_VALUE :
 				return basicSetLowerValue(null, msgs);
 			case UMLPackage.PARAMETER__PARAMETER_SET :
-				return ((InternalEList) getParameterSets()).basicRemove(
+				return ((InternalEList<?>) getParameterSets()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETER__DEFAULT_VALUE :
 				return basicSetDefaultValue(null, msgs);
@@ -1300,6 +1315,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
@@ -1395,15 +1411,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PARAMETER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PARAMETER__NAME :
 				setName((String) newValue);
@@ -1413,7 +1433,8 @@
 				return;
 			case UMLPackage.PARAMETER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PARAMETER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -1429,7 +1450,7 @@
 				return;
 			case UMLPackage.PARAMETER__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 			case UMLPackage.PARAMETER__IS_ORDERED :
 				setIsOrdered(((Boolean) newValue).booleanValue());
@@ -1451,7 +1472,8 @@
 				return;
 			case UMLPackage.PARAMETER__PARAMETER_SET :
 				getParameterSets().clear();
-				getParameterSets().addAll((Collection) newValue);
+				getParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.PARAMETER__DIRECTION :
 				setDirection((ParameterDirectionKind) newValue);
@@ -1475,6 +1497,7 @@
 		eDynamicSet(featureID, newValue);
 	}
 
+	@Override
 	public void eDynamicSet(int featureID, Object newValue) {
 
 		if (featureID == UMLPackage.PARAMETER__OPERATION) {
@@ -1490,6 +1513,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
@@ -1570,6 +1594,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER__EANNOTATIONS :
@@ -1640,7 +1665,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.PARAMETER__IS_ORDERED :
@@ -1667,7 +1693,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.MULTIPLICITY_ELEMENT__IS_ORDERED :
@@ -1694,6 +1721,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1737,6 +1765,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PARAMETER__UPPER_VALUE)
@@ -1763,6 +1792,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.PARAMETER__OPERATION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterSetImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterSetImpl.java
index fe84b62..a3d84ff 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterSetImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterSetImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterSetImpl.java,v 1.18 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ParameterSetImpl.java,v 1.19 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,7 +34,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.ParameterSet;
@@ -72,7 +74,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList parameters = null;
+	protected EList<Parameter> parameters = null;
 
 	/**
 	 * The cached value of the '{@link #getConditions() <em>Condition</em>}' containment reference list.
@@ -82,7 +84,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList conditions = null;
+	protected EList<Constraint> conditions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -98,6 +100,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PARAMETER_SET;
 	}
@@ -107,23 +110,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PARAMETER_SET__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.PARAMETER_SET__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PARAMETER_SET__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -132,9 +137,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getParameters() {
+	public EList<Parameter> getParameters() {
 		if (parameters == null) {
-			parameters = new EObjectWithInverseResolvingEList.ManyInverse(
+			parameters = new EObjectWithInverseResolvingEList.ManyInverse<Parameter>(
 				Parameter.class, this, UMLPackage.PARAMETER_SET__PARAMETER,
 				UMLPackage.PARAMETER__PARAMETER_SET);
 		}
@@ -156,9 +161,7 @@
 	 * @generated
 	 */
 	public Parameter getParameter(String name, Type type, boolean ignoreCase) {
-		parameterLoop : for (Iterator i = getParameters().iterator(); i
-			.hasNext();) {
-			Parameter parameter = (Parameter) i.next();
+		parameterLoop : for (Parameter parameter : getParameters()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(parameter.getName())
 				: name.equals(parameter.getName())))
@@ -175,9 +178,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConditions() {
+	public EList<Constraint> getConditions() {
 		if (conditions == null) {
-			conditions = new EObjectContainmentEList.Resolving(
+			conditions = new EObjectContainmentEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.PARAMETER_SET__CONDITION);
 		}
 		return conditions;
@@ -221,9 +224,7 @@
 	 */
 	public Constraint getCondition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		conditionLoop : for (Iterator i = getConditions().iterator(); i
-			.hasNext();) {
-			Constraint condition = (Constraint) i.next();
+		conditionLoop : for (Constraint condition : getConditions()) {
 			if (eClass != null && !eClass.isInstance(condition))
 				continue conditionLoop;
 			if (name != null && !(ignoreCase
@@ -243,7 +244,7 @@
 	 * @generated
 	 */
 	public boolean validateSameParameterizedEntity(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ParameterSetOperations.validateSameParameterizedEntity(this,
 			diagnostics, context);
 	}
@@ -253,7 +254,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInput(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInput(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ParameterSetOperations.validateInput(this, diagnostics, context);
 	}
 
@@ -263,7 +265,7 @@
 	 * @generated
 	 */
 	public boolean validateTwoParameterSets(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ParameterSetOperations.validateTwoParameterSets(this,
 			diagnostics, context);
 	}
@@ -273,18 +275,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__PARAMETER :
-				return ((InternalEList) getParameters()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getParameters())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -294,26 +298,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PARAMETER_SET__PARAMETER :
-				return ((InternalEList) getParameters()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getParameters()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PARAMETER_SET__CONDITION :
-				return ((InternalEList) getConditions()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getConditions()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -323,6 +328,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
@@ -364,15 +370,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PARAMETER_SET__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PARAMETER_SET__NAME :
 				setName((String) newValue);
@@ -382,18 +392,21 @@
 				return;
 			case UMLPackage.PARAMETER_SET__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PARAMETER_SET__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PARAMETER_SET__PARAMETER :
 				getParameters().clear();
-				getParameters().addAll((Collection) newValue);
+				getParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.PARAMETER_SET__CONDITION :
 				getConditions().clear();
-				getConditions().addAll((Collection) newValue);
+				getConditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -404,6 +417,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
@@ -439,6 +453,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETER_SET__EANNOTATIONS :
@@ -490,6 +505,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PARAMETER_SET__CONDITION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterableElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterableElementImpl.java
index e7b5b11..b1526c2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterableElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ParameterableElementImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterableElementImpl.java,v 1.12 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ParameterableElementImpl.java,v 1.13 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,6 +16,7 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -26,6 +27,7 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -76,6 +78,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PARAMETERABLE_ELEMENT;
 	}
@@ -277,12 +280,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -305,14 +310,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETERABLE_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
@@ -327,6 +333,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -343,6 +350,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
@@ -372,15 +380,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PARAMETERABLE_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -397,6 +409,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
@@ -420,6 +433,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PARAMETERABLE_ELEMENT__EANNOTATIONS :
@@ -457,6 +471,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PartDecompositionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PartDecompositionImpl.java
index 86b612d..a7724a5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PartDecompositionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PartDecompositionImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PartDecompositionImpl.java,v 1.2 2005/11/23 20:01:15 khussey Exp $
+ * $Id: PartDecompositionImpl.java,v 1.3 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PART_DECOMPOSITION;
 	}
@@ -60,7 +61,7 @@
 	 * @generated
 	 */
 	public boolean validatePartsOfInternalStructures(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return PartDecompositionOperations.validatePartsOfInternalStructures(
 			this, diagnostics, context);
 	}
@@ -70,7 +71,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAssume(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAssume(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PartDecompositionOperations.validateAssume(this, diagnostics,
 			context);
 	}
@@ -81,7 +83,7 @@
 	 * @generated
 	 */
 	public boolean validateCommutativityOfDecomposition(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return PartDecompositionOperations
 			.validateCommutativityOfDecomposition(this, diagnostics, context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PinImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PinImpl.java
index 5e5d87a..43355b9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PinImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PinImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PinImpl.java,v 1.25 2006/11/14 18:02:19 khussey Exp $
+ * $Id: PinImpl.java,v 1.26 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -23,6 +23,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,11 +37,18 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.MultiplicityElement;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
 import org.eclipse.uml2.uml.Pin;
+import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -190,6 +198,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PIN;
 	}
@@ -199,23 +208,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PIN__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.PIN__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PIN__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -549,7 +559,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGt0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGt0(this,
 			diagnostics, context);
 	}
@@ -559,7 +570,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateLowerGe0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateLowerGe0(this,
 			diagnostics, context);
 	}
@@ -569,7 +581,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGeLower(this,
 			diagnostics, context);
 	}
@@ -580,7 +593,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationNoSideEffects(this, diagnostics, context);
 	}
@@ -591,7 +604,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationConstant(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationConstant(this, diagnostics, context);
 	}
@@ -664,7 +677,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateControlPins(DiagnosticChain diagnostics, Map context) {
+	public boolean validateControlPins(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PinOperations.validateControlPins(this, diagnostics, context);
 	}
 
@@ -673,18 +687,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PIN__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PIN__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PIN__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PIN__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PIN__IN_STRUCTURED_NODE :
@@ -692,16 +707,16 @@
 			case UMLPackage.PIN__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.PIN__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PIN__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PIN__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PIN__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PIN__UPPER_BOUND :
 				return basicSetUpperBound(null, msgs);
@@ -718,6 +733,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PIN__EANNOTATIONS :
@@ -827,15 +843,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PIN__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PIN__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PIN__NAME :
 				setName((String) newValue);
@@ -845,7 +865,8 @@
 				return;
 			case UMLPackage.PIN__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PIN__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -861,23 +882,29 @@
 				return;
 			case UMLPackage.PIN__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.PIN__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.PIN__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.PIN__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.PIN__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.PIN__TYPE :
 				setType((Type) newValue);
@@ -893,7 +920,7 @@
 				return;
 			case UMLPackage.PIN__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.PIN__SELECTION :
 				setSelection((Behavior) newValue);
@@ -928,6 +955,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PIN__EANNOTATIONS :
@@ -1020,6 +1048,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PIN__EANNOTATIONS :
@@ -1103,7 +1132,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.PIN__IS_ORDERED :
@@ -1130,7 +1160,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.MULTIPLICITY_ELEMENT__IS_ORDERED :
@@ -1157,6 +1188,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1190,6 +1222,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PIN__UPPER_VALUE)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PortImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PortImpl.java
index 501ed9e..5ac0efc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PortImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PortImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PortImpl.java,v 1.24 2006/11/17 15:48:50 khussey Exp $
+ * $Id: PortImpl.java,v 1.25 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,13 +36,18 @@
 
 import org.eclipse.uml2.uml.AggregationKind;
 import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.ConnectorEnd;
 import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Deployment;
 import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.ProtocolStateMachine;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
@@ -123,7 +128,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedPorts = null;
+	protected EList<Port> redefinedPorts = null;
 
 	/**
 	 * The cached value of the '{@link #getProtocol() <em>Protocol</em>}' reference.
@@ -150,6 +155,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PORT;
 	}
@@ -159,25 +165,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.PORT__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.PORT__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
-			UMLPackage.PORT__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this, UMLPackage.PORT__REDEFINED_ELEMENT,
+			REDEFINED_ELEMENT_ESUBSETS);
 	}
 
 	/**
@@ -239,11 +251,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRequireds() {
+	public EList<Interface> getRequireds() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.PORT__REQUIRED);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PORT__REQUIRED,
@@ -269,8 +282,7 @@
 	 * @generated
 	 */
 	public Interface getRequired(String name, boolean ignoreCase) {
-		requiredLoop : for (Iterator i = getRequireds().iterator(); i.hasNext();) {
-			Interface required = (Interface) i.next();
+		requiredLoop : for (Interface required : getRequireds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(required.getName())
 				: name.equals(required.getName())))
@@ -285,9 +297,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedPorts() {
+	public EList<Port> getRedefinedPorts() {
 		if (redefinedPorts == null) {
-			redefinedPorts = new EObjectResolvingEList(Port.class, this,
+			redefinedPorts = new EObjectResolvingEList<Port>(Port.class, this,
 				UMLPackage.PORT__REDEFINED_PORT);
 		}
 		return redefinedPorts;
@@ -308,9 +320,7 @@
 	 * @generated
 	 */
 	public Port getRedefinedPort(String name, Type type, boolean ignoreCase) {
-		redefinedPortLoop : for (Iterator i = getRedefinedPorts().iterator(); i
-			.hasNext();) {
-			Port redefinedPort = (Port) i.next();
+		redefinedPortLoop : for (Port redefinedPort : getRedefinedPorts()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(redefinedPort.getName())
 				: name.equals(redefinedPort.getName())))
@@ -327,11 +337,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getProvideds() {
+	public EList<Interface> getProvideds() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Interface> result = (EList<Interface>) cache.get(this,
 				UMLPackage.Literals.PORT__PROVIDED);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PORT__PROVIDED,
@@ -357,8 +368,7 @@
 	 * @generated
 	 */
 	public Interface getProvided(String name, boolean ignoreCase) {
-		providedLoop : for (Iterator i = getProvideds().iterator(); i.hasNext();) {
-			Interface provided = (Interface) i.next();
+		providedLoop : for (Interface provided : getProvideds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(provided.getName())
 				: name.equals(provided.getName())))
@@ -416,7 +426,7 @@
 	 * @generated
 	 */
 	public boolean validateRequiredInterfaces(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PortOperations.validateRequiredInterfaces(this, diagnostics,
 			context);
 	}
@@ -427,7 +437,7 @@
 	 * @generated
 	 */
 	public boolean validatePortAggregation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PortOperations.validatePortAggregation(this, diagnostics,
 			context);
 	}
@@ -438,7 +448,7 @@
 	 * @generated
 	 */
 	public boolean validatePortDestroyed(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PortOperations.validatePortDestroyed(this, diagnostics, context);
 	}
 
@@ -447,7 +457,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateDefaultValue(DiagnosticChain diagnostics, Map context) {
+	public boolean validateDefaultValue(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PortOperations.validateDefaultValue(this, diagnostics, context);
 	}
 
@@ -456,6 +467,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PORT__EANNOTATIONS :
@@ -623,15 +635,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PORT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PORT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PORT__NAME :
 				setName((String) newValue);
@@ -641,7 +657,8 @@
 				return;
 			case UMLPackage.PORT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PORT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -684,15 +701,17 @@
 				return;
 			case UMLPackage.PORT__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 			case UMLPackage.PORT__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 			case UMLPackage.PORT__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.PORT__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -717,7 +736,8 @@
 				return;
 			case UMLPackage.PORT__REDEFINED_PROPERTY :
 				getRedefinedProperties().clear();
-				getRedefinedProperties().addAll((Collection) newValue);
+				getRedefinedProperties().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PORT__OWNING_ASSOCIATION :
 				setOwningAssociation((Association) newValue);
@@ -730,14 +750,16 @@
 				return;
 			case UMLPackage.PORT__SUBSETTED_PROPERTY :
 				getSubsettedProperties().clear();
-				getSubsettedProperties().addAll((Collection) newValue);
+				getSubsettedProperties().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PORT__ASSOCIATION :
 				setAssociation((Association) newValue);
 				return;
 			case UMLPackage.PORT__QUALIFIER :
 				getQualifiers().clear();
-				getQualifiers().addAll((Collection) newValue);
+				getQualifiers().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PORT__ASSOCIATION_END :
 				setAssociationEnd((Property) newValue);
@@ -750,7 +772,8 @@
 				return;
 			case UMLPackage.PORT__REDEFINED_PORT :
 				getRedefinedPorts().clear();
-				getRedefinedPorts().addAll((Collection) newValue);
+				getRedefinedPorts().addAll(
+					(Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.PORT__PROTOCOL :
 				setProtocol((ProtocolStateMachine) newValue);
@@ -759,6 +782,7 @@
 		eDynamicSet(featureID, newValue);
 	}
 
+	@Override
 	public void eDynamicSet(int featureID, Object newValue) {
 
 		if (featureID == UMLPackage.PORT__CLASS) {
@@ -774,6 +798,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PORT__EANNOTATIONS :
@@ -905,6 +930,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PORT__EANNOTATIONS :
@@ -1023,6 +1049,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1052,6 +1079,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.PORT__REDEFINED_PORT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PrimitiveTypeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PrimitiveTypeImpl.java
index 545a874..744731c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PrimitiveTypeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PrimitiveTypeImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PrimitiveTypeImpl.java,v 1.2 2005/11/23 20:01:20 khussey Exp $
+ * $Id: PrimitiveTypeImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PRIMITIVE_TYPE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileApplicationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileApplicationImpl.java
index 7dc5ff2..1d036d2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileApplicationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileApplicationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProfileApplicationImpl.java,v 1.19 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ProfileApplicationImpl.java,v 1.20 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,6 +19,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.ecore.EPackage;
@@ -34,6 +35,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Profile;
@@ -108,6 +110,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROFILE_APPLICATION;
 	}
@@ -117,24 +120,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache
 					.put(eResource, this,
 						UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-						targets = new DerivedUnionEObjectEList(Element.class,
-							this, UMLPackage.PROFILE_APPLICATION__TARGET,
+						targets = new DerivedUnionEObjectEList<Element>(
+							Element.class, this,
+							UMLPackage.PROFILE_APPLICATION__TARGET,
 							TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROFILE_APPLICATION__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -143,24 +148,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache
 					.put(eResource, this,
 						UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-						sources = new DerivedUnionEObjectEList(Element.class,
-							this, UMLPackage.PROFILE_APPLICATION__SOURCE,
+						sources = new DerivedUnionEObjectEList<Element>(
+							Element.class, this,
+							UMLPackage.PROFILE_APPLICATION__SOURCE,
 							SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROFILE_APPLICATION__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -326,12 +333,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE_APPLICATION__APPLYING_PACKAGE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -346,14 +355,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE_APPLICATION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE_APPLICATION__APPLYING_PACKAGE :
 				return basicSetApplyingPackage(null, msgs);
@@ -366,6 +376,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -382,6 +393,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
@@ -421,15 +433,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROFILE_APPLICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROFILE_APPLICATION__APPLIED_PROFILE :
 				setAppliedProfile((Profile) newValue);
@@ -449,6 +465,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
@@ -475,6 +492,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROFILE_APPLICATION__EANNOTATIONS :
@@ -506,6 +524,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -532,6 +551,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.PROFILE_APPLICATION__APPLIED_PROFILE);
@@ -564,6 +584,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.PROFILE_APPLICATION__APPLYING_PACKAGE);
@@ -588,6 +609,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PROFILE_APPLICATION__APPLYING_PACKAGE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileImpl.java
index bb52066..9bdb699 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProfileImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProfileImpl.java,v 1.25 2006/05/08 17:46:11 khussey Exp $
+ * $Id: ProfileImpl.java,v 1.26 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.ecore.EObject;
@@ -38,15 +38,24 @@
 
 import org.eclipse.uml2.common.util.DerivedSubsetEObjectEList;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Extension;
+import org.eclipse.uml2.uml.Model;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.PackageMerge;
 import org.eclipse.uml2.uml.PackageableElement;
 import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.ProfileApplication;
 import org.eclipse.uml2.uml.Stereotype;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -82,7 +91,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList metaclassReferences = null;
+	protected EList<ElementImport> metaclassReferences = null;
 
 	/**
 	 * The cached value of the '{@link #getMetamodelReferences() <em>Metamodel Reference</em>}' reference list.
@@ -92,7 +101,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList metamodelReferences = null;
+	protected EList<PackageImport> metamodelReferences = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -108,6 +117,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROFILE;
 	}
@@ -117,9 +127,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackagedElements() {
+	public EList<PackageableElement> getPackagedElements() {
 		if (packagedElements == null) {
-			packagedElements = new EObjectContainmentEList.Resolving(
+			packagedElements = new EObjectContainmentEList.Resolving<PackageableElement>(
 				PackageableElement.class, this,
 				UMLPackage.PROFILE__PACKAGED_ELEMENT);
 		}
@@ -131,9 +141,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getElementImports() {
+	public EList<ElementImport> getElementImports() {
 		if (elementImports == null) {
-			elementImports = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			elementImports = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<ElementImport>(
 				ElementImport.class, this, UMLPackage.PROFILE__ELEMENT_IMPORT,
 				null, ELEMENT_IMPORT_ESUBSETS,
 				UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE);
@@ -156,9 +166,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackageImports() {
+	public EList<PackageImport> getPackageImports() {
 		if (packageImports == null) {
-			packageImports = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			packageImports = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<PackageImport>(
 				PackageImport.class, this, UMLPackage.PROFILE__PACKAGE_IMPORT,
 				null, PACKAGE_IMPORT_ESUBSETS,
 				UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE);
@@ -211,24 +221,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getOwnedStereotypes() {
+	public EList<Stereotype> getOwnedStereotypes() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedStereotypes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.PROFILE__OWNED_STEREOTYPE);
+			@SuppressWarnings("unchecked")
+			EList<Stereotype> ownedStereotypes = (EList<Stereotype>) cache.get(
+				eResource, this, UMLPackage.Literals.PROFILE__OWNED_STEREOTYPE);
 			if (ownedStereotypes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.PROFILE__OWNED_STEREOTYPE,
-					ownedStereotypes = new DerivedSubsetEObjectEList(
-						Stereotype.class, this,
-						UMLPackage.PROFILE__OWNED_STEREOTYPE,
-						OWNED_STEREOTYPE_ESUPERSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.PROFILE__OWNED_STEREOTYPE,
+						ownedStereotypes = new DerivedSubsetEObjectEList<Stereotype>(
+							Stereotype.class, this,
+							UMLPackage.PROFILE__OWNED_STEREOTYPE,
+							OWNED_STEREOTYPE_ESUPERSETS));
 			}
 			return ownedStereotypes;
 		}
-		return new DerivedSubsetEObjectEList(Stereotype.class, this,
-			UMLPackage.PROFILE__OWNED_STEREOTYPE, OWNED_STEREOTYPE_ESUPERSETS);
+		return new DerivedSubsetEObjectEList<Stereotype>(Stereotype.class,
+			this, UMLPackage.PROFILE__OWNED_STEREOTYPE,
+			OWNED_STEREOTYPE_ESUPERSETS);
 	}
 
 	/**
@@ -260,9 +275,7 @@
 	 */
 	public Stereotype getOwnedStereotype(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedStereotypeLoop : for (Iterator i = getOwnedStereotypes()
-			.iterator(); i.hasNext();) {
-			Stereotype ownedStereotype = (Stereotype) i.next();
+		ownedStereotypeLoop : for (Stereotype ownedStereotype : getOwnedStereotypes()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedStereotype.getName())
 				: name.equals(ownedStereotype.getName())))
@@ -279,9 +292,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMetaclassReferences() {
+	public EList<ElementImport> getMetaclassReferences() {
 		if (metaclassReferences == null) {
-			metaclassReferences = new SubsetSupersetEObjectResolvingEList(
+			metaclassReferences = new SubsetSupersetEObjectResolvingEList<ElementImport>(
 				ElementImport.class, this,
 				UMLPackage.PROFILE__METACLASS_REFERENCE,
 				METACLASS_REFERENCE_ESUPERSETS, null);
@@ -320,9 +333,7 @@
 	 */
 	public ElementImport getMetaclassReference(
 			PackageableElement importedElement, boolean createOnDemand) {
-		metaclassReferenceLoop : for (Iterator i = getMetaclassReferences()
-			.iterator(); i.hasNext();) {
-			ElementImport metaclassReference = (ElementImport) i.next();
+		metaclassReferenceLoop : for (ElementImport metaclassReference : getMetaclassReferences()) {
 			if (importedElement != null
 				&& !importedElement.equals(metaclassReference
 					.getImportedElement()))
@@ -339,9 +350,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMetamodelReferences() {
+	public EList<PackageImport> getMetamodelReferences() {
 		if (metamodelReferences == null) {
-			metamodelReferences = new SubsetSupersetEObjectResolvingEList(
+			metamodelReferences = new SubsetSupersetEObjectResolvingEList<PackageImport>(
 				PackageImport.class, this,
 				UMLPackage.PROFILE__METAMODEL_REFERENCE,
 				METAMODEL_REFERENCE_ESUPERSETS, null);
@@ -380,9 +391,7 @@
 	 */
 	public PackageImport getMetamodelReference(
 			org.eclipse.uml2.uml.Package importedPackage, boolean createOnDemand) {
-		metamodelReferenceLoop : for (Iterator i = getMetamodelReferences()
-			.iterator(); i.hasNext();) {
-			PackageImport metamodelReference = (PackageImport) i.next();
+		metamodelReferenceLoop : for (PackageImport metamodelReference : getMetamodelReferences()) {
 			if (importedPackage != null
 				&& !importedPackage.equals(metamodelReference
 					.getImportedPackage()))
@@ -400,7 +409,7 @@
 	 * @generated
 	 */
 	public boolean validateMetaclassReferenceNotSpecialized(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ProfileOperations.validateMetaclassReferenceNotSpecialized(this,
 			diagnostics, context);
 	}
@@ -411,7 +420,7 @@
 	 * @generated
 	 */
 	public boolean validateReferencesSameMetamodel(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProfileOperations.validateReferencesSameMetamodel(this,
 			diagnostics, context);
 	}
@@ -475,11 +484,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getReferencedMetaclasses() {
+	public EList<org.eclipse.uml2.uml.Class> getReferencedMetaclasses() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PROFILE
-				.getEOperations().get(8));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Class> result = (EList<org.eclipse.uml2.uml.Class>) cache
+				.get(this, UMLPackage.Literals.PROFILE.getEOperations().get(8));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PROFILE.getEOperations()
 					.get(8), result = ProfileOperations
@@ -495,11 +505,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getReferencedMetamodels() {
+	public EList<Model> getReferencedMetamodels() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PROFILE
-				.getEOperations().get(9));
+			@SuppressWarnings("unchecked")
+			EList<Model> result = (EList<Model>) cache.get(this,
+				UMLPackage.Literals.PROFILE.getEOperations().get(9));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PROFILE.getEOperations()
 					.get(9), result = ProfileOperations
@@ -515,7 +526,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedExtensions(boolean requiredOnly) {
+	public EList<Extension> getOwnedExtensions(boolean requiredOnly) {
 		return ProfileOperations.getOwnedExtensions(this, requiredOnly);
 	}
 
@@ -524,24 +535,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -556,8 +569,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.PROFILE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -567,11 +580,11 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.PROFILE__PACKAGE_MERGE :
-				return ((InternalEList) getPackageMerges()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageMerges())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROFILE__PROFILE_APPLICATION :
-				return ((InternalEList) getProfileApplications()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getProfileApplications())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -581,47 +594,48 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROFILE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PROFILE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.PROFILE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.PROFILE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.PROFILE__PACKAGE_MERGE :
-				return ((InternalEList) getPackageMerges()).basicRemove(
+				return ((InternalEList<?>) getPackageMerges()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__PACKAGED_ELEMENT :
-				return ((InternalEList) getPackagedElements()).basicRemove(
+				return ((InternalEList<?>) getPackagedElements()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROFILE__PROFILE_APPLICATION :
-				return ((InternalEList) getProfileApplications()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getProfileApplications())
+					.basicRemove(otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -631,6 +645,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
@@ -714,15 +729,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROFILE__NAME :
 				setName((String) newValue);
@@ -732,22 +751,26 @@
 				return;
 			case UMLPackage.PROFILE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PROFILE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PROFILE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.PROFILE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNING_TEMPLATE_PARAMETER :
 				setOwningTemplateParameter((TemplateParameter) newValue);
@@ -757,45 +780,54 @@
 				return;
 			case UMLPackage.PROFILE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNED_TYPE :
 				getOwnedTypes().clear();
-				getOwnedTypes().addAll((Collection) newValue);
+				getOwnedTypes().addAll((Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.PROFILE__PACKAGE_MERGE :
 				getPackageMerges().clear();
-				getPackageMerges().addAll((Collection) newValue);
+				getPackageMerges().addAll(
+					(Collection<? extends PackageMerge>) newValue);
 				return;
 			case UMLPackage.PROFILE__PACKAGED_ELEMENT :
 				getPackagedElements().clear();
-				getPackagedElements().addAll((Collection) newValue);
+				getPackagedElements().addAll(
+					(Collection<? extends PackageableElement>) newValue);
 				return;
 			case UMLPackage.PROFILE__NESTED_PACKAGE :
 				getNestedPackages().clear();
-				getNestedPackages().addAll((Collection) newValue);
+				getNestedPackages()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Package>) newValue);
 				return;
 			case UMLPackage.PROFILE__NESTING_PACKAGE :
 				setNestingPackage((org.eclipse.uml2.uml.Package) newValue);
 				return;
 			case UMLPackage.PROFILE__PROFILE_APPLICATION :
 				getProfileApplications().clear();
-				getProfileApplications().addAll((Collection) newValue);
+				getProfileApplications().addAll(
+					(Collection<? extends ProfileApplication>) newValue);
 				return;
 			case UMLPackage.PROFILE__OWNED_STEREOTYPE :
 				getOwnedStereotypes().clear();
-				getOwnedStereotypes().addAll((Collection) newValue);
+				getOwnedStereotypes().addAll(
+					(Collection<? extends Stereotype>) newValue);
 				return;
 			case UMLPackage.PROFILE__METACLASS_REFERENCE :
 				getMetaclassReferences().clear();
-				getMetaclassReferences().addAll((Collection) newValue);
+				getMetaclassReferences().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.PROFILE__METAMODEL_REFERENCE :
 				getMetamodelReferences().clear();
-				getMetamodelReferences().addAll((Collection) newValue);
+				getMetamodelReferences().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -806,6 +838,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
@@ -883,6 +916,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROFILE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PropertyImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PropertyImpl.java
index faf0648..fbdefb4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PropertyImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PropertyImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PropertyImpl.java,v 1.37 2006/11/17 15:48:50 khussey Exp $
+ * $Id: PropertyImpl.java,v 1.38 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -44,6 +44,7 @@
 import org.eclipse.uml2.uml.AggregationKind;
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
 import org.eclipse.uml2.uml.ConnectableElementTemplateParameter;
 import org.eclipse.uml2.uml.ConnectorEnd;
@@ -135,7 +136,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ends = null;
+	protected EList<ConnectorEnd> ends = null;
 
 	/**
 	 * The cached value of the '{@link #getDeployments() <em>Deployment</em>}' containment reference list.
@@ -145,7 +146,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList deployments = null;
+	protected EList<Deployment> deployments = null;
 
 	/**
 	 * The cached value of the '{@link #getTemplateBindings() <em>Template Binding</em>}' containment reference list.
@@ -155,7 +156,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -265,7 +266,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList redefinedProperties = null;
+	protected EList<Property> redefinedProperties = null;
 
 	/**
 	 * The cached value of the '{@link #getDefaultValue() <em>Default Value</em>}' containment reference.
@@ -285,7 +286,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList subsettedProperties = null;
+	protected EList<Property> subsettedProperties = null;
 
 	/**
 	 * The cached value of the '{@link #getQualifiers() <em>Qualifier</em>}' containment reference list.
@@ -295,7 +296,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList qualifiers = null;
+	protected EList<Property> qualifiers = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -311,6 +312,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROPERTY;
 	}
@@ -520,10 +522,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEnds() {
+	public EList<ConnectorEnd> getEnds() {
 		if (ends == null) {
-			ends = new EObjectWithInverseResolvingEList(ConnectorEnd.class,
-				this, UMLPackage.PROPERTY__END, UMLPackage.CONNECTOR_END__ROLE);
+			ends = new EObjectWithInverseResolvingEList<ConnectorEnd>(
+				ConnectorEnd.class, this, UMLPackage.PROPERTY__END,
+				UMLPackage.CONNECTOR_END__ROLE);
 		}
 		return ends;
 	}
@@ -533,23 +536,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PROPERTY__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.PROPERTY__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROPERTY__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -558,9 +563,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClientDependencies() {
+	public EList<Dependency> getClientDependencies() {
 		if (clientDependencies == null) {
-			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clientDependencies = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<Dependency>(
 				Dependency.class, this, UMLPackage.PROPERTY__CLIENT_DEPENDENCY,
 				null, CLIENT_DEPENDENCY_ESUBSETS, UMLPackage.DEPENDENCY__CLIENT);
 		}
@@ -572,9 +577,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployments() {
+	public EList<Deployment> getDeployments() {
 		if (deployments == null) {
-			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			deployments = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Deployment>(
 				Deployment.class, this, UMLPackage.PROPERTY__DEPLOYMENT,
 				DEPLOYMENT_ESUPERSETS, null, UMLPackage.DEPLOYMENT__LOCATION);
 		}
@@ -610,9 +615,7 @@
 	 */
 	public Deployment getDeployment(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		deploymentLoop : for (Iterator i = getDeployments().iterator(); i
-			.hasNext();) {
-			Deployment deployment = (Deployment) i.next();
+		deploymentLoop : for (Deployment deployment : getDeployments()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(deployment.getName())
 				: name.equals(deployment.getName())))
@@ -629,12 +632,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeployedElements() {
+	public EList<PackageableElement> getDeployedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this,
+					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT);
 			if (result == null) {
 				cache.put(this,
 					UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT,
@@ -662,9 +667,7 @@
 	 */
 	public PackageableElement getDeployedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		deployedElementLoop : for (Iterator i = getDeployedElements()
-			.iterator(); i.hasNext();) {
-			PackageableElement deployedElement = (PackageableElement) i.next();
+		deployedElementLoop : for (PackageableElement deployedElement : getDeployedElements()) {
 			if (eClass != null && !eClass.isInstance(deployedElement))
 				continue deployedElementLoop;
 			if (name != null && !(ignoreCase
@@ -681,9 +684,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.PROPERTY__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -720,9 +723,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -863,24 +864,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeaturingClassifiers() {
+	public EList<Classifier> getFeaturingClassifiers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList featuringClassifiers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> featuringClassifiers = (EList<Classifier>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER);
 			if (featuringClassifiers == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
-					featuringClassifiers = new DerivedUnionEObjectEList(
-						Classifier.class, this,
-						UMLPackage.PROPERTY__FEATURING_CLASSIFIER,
-						FEATURING_CLASSIFIER_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.FEATURE__FEATURING_CLASSIFIER,
+						featuringClassifiers = new DerivedUnionEObjectEList<Classifier>(
+							Classifier.class, this,
+							UMLPackage.PROPERTY__FEATURING_CLASSIFIER,
+							FEATURING_CLASSIFIER_ESUBSETS));
 			}
 			return featuringClassifiers;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.PROPERTY__FEATURING_CLASSIFIER,
 			FEATURING_CLASSIFIER_ESUBSETS);
 	}
@@ -890,24 +896,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.PROPERTY__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.PROPERTY__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.PROPERTY__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -1238,7 +1250,7 @@
 			if (eInternalContainer() != null)
 				msgs = eBasicRemoveFromContainer(msgs);
 			if (newClass != null)
-				msgs = ((InternalEList) newClass.getOwnedAttributes())
+				msgs = ((InternalEList<Property>) newClass.getOwnedAttributes())
 					.basicAdd(this, msgs);
 			msgs = eBasicSetContainer((InternalEObject) newClass,
 				UMLPackage.PROPERTY__CLASS, msgs);
@@ -1254,10 +1266,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedProperties() {
+	public EList<Property> getRedefinedProperties() {
 		if (redefinedProperties == null) {
-			redefinedProperties = new EObjectResolvingEList(Property.class,
-				this, UMLPackage.PROPERTY__REDEFINED_PROPERTY);
+			redefinedProperties = new EObjectResolvingEList<Property>(
+				Property.class, this, UMLPackage.PROPERTY__REDEFINED_PROPERTY);
 		}
 		return redefinedProperties;
 	}
@@ -1278,9 +1290,7 @@
 	 */
 	public Property getRedefinedProperty(String name, Type type,
 			boolean ignoreCase, EClass eClass) {
-		redefinedPropertyLoop : for (Iterator i = getRedefinedProperties()
-			.iterator(); i.hasNext();) {
-			Property redefinedProperty = (Property) i.next();
+		redefinedPropertyLoop : for (Property redefinedProperty : getRedefinedProperties()) {
 			if (eClass != null && !eClass.isInstance(redefinedProperty))
 				continue redefinedPropertyLoop;
 			if (name != null && !(ignoreCase
@@ -1507,10 +1517,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubsettedProperties() {
+	public EList<Property> getSubsettedProperties() {
 		if (subsettedProperties == null) {
-			subsettedProperties = new EObjectResolvingEList(Property.class,
-				this, UMLPackage.PROPERTY__SUBSETTED_PROPERTY);
+			subsettedProperties = new EObjectResolvingEList<Property>(
+				Property.class, this, UMLPackage.PROPERTY__SUBSETTED_PROPERTY);
 		}
 		return subsettedProperties;
 	}
@@ -1531,9 +1541,7 @@
 	 */
 	public Property getSubsettedProperty(String name, Type type,
 			boolean ignoreCase, EClass eClass) {
-		subsettedPropertyLoop : for (Iterator i = getSubsettedProperties()
-			.iterator(); i.hasNext();) {
-			Property subsettedProperty = (Property) i.next();
+		subsettedPropertyLoop : for (Property subsettedProperty : getSubsettedProperties()) {
 			if (eClass != null && !eClass.isInstance(subsettedProperty))
 				continue subsettedPropertyLoop;
 			if (name != null && !(ignoreCase
@@ -1552,9 +1560,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getQualifiers() {
+	public EList<Property> getQualifiers() {
 		if (qualifiers == null) {
-			qualifiers = new EObjectContainmentWithInverseEList.Resolving(
+			qualifiers = new EObjectContainmentWithInverseEList.Resolving<Property>(
 				Property.class, this, UMLPackage.PROPERTY__QUALIFIER,
 				UMLPackage.PROPERTY__ASSOCIATION_END);
 		}
@@ -1601,9 +1609,7 @@
 	 */
 	public Property getQualifier(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		qualifierLoop : for (Iterator i = getQualifiers().iterator(); i
-			.hasNext();) {
-			Property qualifier = (Property) i.next();
+		qualifierLoop : for (Property qualifier : getQualifiers()) {
 			if (eClass != null && !eClass.isInstance(qualifier))
 				continue qualifierLoop;
 			if (name != null && !(ignoreCase
@@ -1741,12 +1747,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -1773,7 +1780,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfComposite(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateMultiplicityOfComposite(this,
 			diagnostics, context);
 	}
@@ -1784,7 +1791,7 @@
 	 * @generated
 	 */
 	public boolean validateSubsettingContextConforms(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return PropertyOperations.validateSubsettingContextConforms(this,
 			diagnostics, context);
 	}
@@ -1795,7 +1802,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinedPropertyInherited(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return PropertyOperations.validateRedefinedPropertyInherited(this,
 			diagnostics, context);
 	}
@@ -1806,7 +1813,7 @@
 	 * @generated
 	 */
 	public boolean validateSubsettingRules(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateSubsettingRules(this, diagnostics,
 			context);
 	}
@@ -1817,7 +1824,7 @@
 	 * @generated
 	 */
 	public boolean validateNavigableReadonly(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateNavigableReadonly(this, diagnostics,
 			context);
 	}
@@ -1828,7 +1835,7 @@
 	 * @generated
 	 */
 	public boolean validateDerivedUnionIsDerived(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateDerivedUnionIsDerived(this,
 			diagnostics, context);
 	}
@@ -1839,7 +1846,7 @@
 	 * @generated
 	 */
 	public boolean validateDerivedUnionIsReadOnly(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateDerivedUnionIsReadOnly(this,
 			diagnostics, context);
 	}
@@ -1850,7 +1857,7 @@
 	 * @generated
 	 */
 	public boolean validateSubsettedPropertyNames(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateSubsettedPropertyNames(this,
 			diagnostics, context);
 	}
@@ -1861,7 +1868,7 @@
 	 * @generated
 	 */
 	public boolean validateDeploymentTarget(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateDeploymentTarget(this, diagnostics,
 			context);
 	}
@@ -1872,7 +1879,7 @@
 	 * @generated
 	 */
 	public boolean validateBindingToAttribute(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PropertyOperations.validateBindingToAttribute(this, diagnostics,
 			context);
 	}
@@ -1954,11 +1961,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList subsettingContext() {
+	public EList<Type> subsettingContext() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.PROPERTY
-				.getEOperations().get(26));
+			@SuppressWarnings("unchecked")
+			EList<Type> result = (EList<Type>) cache.get(this,
+				UMLPackage.Literals.PROPERTY.getEOperations().get(26));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.PROPERTY.getEOperations()
 					.get(26), result = PropertyOperations
@@ -1992,15 +2000,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -2015,13 +2025,14 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.PROPERTY__END :
-				return ((InternalEList) getEnds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEnds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getDeployments())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -2045,8 +2056,8 @@
 						msgs);
 				return basicSetAssociation((Association) otherEnd, msgs);
 			case UMLPackage.PROPERTY__QUALIFIER :
-				return ((InternalEList) getQualifiers()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getQualifiers())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROPERTY__ASSOCIATION_END :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -2060,18 +2071,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROPERTY__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROPERTY__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROPERTY__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PROPERTY__UPPER_VALUE :
@@ -2083,12 +2095,13 @@
 			case UMLPackage.PROPERTY__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.PROPERTY__END :
-				return ((InternalEList) getEnds()).basicRemove(otherEnd, msgs);
-			case UMLPackage.PROPERTY__DEPLOYMENT :
-				return ((InternalEList) getDeployments()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getEnds()).basicRemove(otherEnd,
 					msgs);
+			case UMLPackage.PROPERTY__DEPLOYMENT :
+				return ((InternalEList<?>) getDeployments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PROPERTY__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROPERTY__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
@@ -2101,8 +2114,8 @@
 			case UMLPackage.PROPERTY__ASSOCIATION :
 				return basicSetAssociation(null, msgs);
 			case UMLPackage.PROPERTY__QUALIFIER :
-				return ((InternalEList) getQualifiers()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getQualifiers()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PROPERTY__ASSOCIATION_END :
 				return basicSetAssociationEnd(null, msgs);
 		}
@@ -2114,6 +2127,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -2141,6 +2155,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
@@ -2290,15 +2305,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROPERTY__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROPERTY__NAME :
 				setName((String) newValue);
@@ -2308,7 +2327,8 @@
 				return;
 			case UMLPackage.PROPERTY__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PROPERTY__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -2351,15 +2371,17 @@
 				return;
 			case UMLPackage.PROPERTY__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 			case UMLPackage.PROPERTY__DEPLOYMENT :
 				getDeployments().clear();
-				getDeployments().addAll((Collection) newValue);
+				getDeployments().addAll(
+					(Collection<? extends Deployment>) newValue);
 				return;
 			case UMLPackage.PROPERTY__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.PROPERTY__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -2384,7 +2406,8 @@
 				return;
 			case UMLPackage.PROPERTY__REDEFINED_PROPERTY :
 				getRedefinedProperties().clear();
-				getRedefinedProperties().addAll((Collection) newValue);
+				getRedefinedProperties().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PROPERTY__OWNING_ASSOCIATION :
 				setOwningAssociation((Association) newValue);
@@ -2397,14 +2420,16 @@
 				return;
 			case UMLPackage.PROPERTY__SUBSETTED_PROPERTY :
 				getSubsettedProperties().clear();
-				getSubsettedProperties().addAll((Collection) newValue);
+				getSubsettedProperties().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PROPERTY__ASSOCIATION :
 				setAssociation((Association) newValue);
 				return;
 			case UMLPackage.PROPERTY__QUALIFIER :
 				getQualifiers().clear();
-				getQualifiers().addAll((Collection) newValue);
+				getQualifiers().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PROPERTY__ASSOCIATION_END :
 				setAssociationEnd((Property) newValue);
@@ -2413,6 +2438,7 @@
 		eDynamicSet(featureID, newValue);
 	}
 
+	@Override
 	public void eDynamicSet(int featureID, Object newValue) {
 
 		if (featureID == UMLPackage.PROPERTY__CLASS) {
@@ -2428,6 +2454,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
@@ -2547,6 +2574,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROPERTY__EANNOTATIONS :
@@ -2653,7 +2681,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.PROPERTY__OWNING_TEMPLATE_PARAMETER :
@@ -2700,7 +2729,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == ParameterableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.PARAMETERABLE_ELEMENT__OWNING_TEMPLATE_PARAMETER :
@@ -2747,6 +2777,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -2787,6 +2818,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PROPERTY__OWNING_TEMPLATE_PARAMETER)
@@ -2834,6 +2866,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PROPERTY__DEPLOYMENT)
@@ -2870,6 +2903,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.PROPERTY__CLASS)
 			|| eIsSet(UMLPackage.PROPERTY__DATATYPE)
@@ -2893,6 +2927,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeaturingClassifiers() {
 		return super.isSetFeaturingClassifiers()
 			|| eIsSet(UMLPackage.PROPERTY__CLASS)
@@ -2915,6 +2950,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.PROPERTY__REDEFINED_PROPERTY);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolConformanceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolConformanceImpl.java
index e9834b5..4dffc1b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolConformanceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolConformanceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolConformanceImpl.java,v 1.13 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ProtocolConformanceImpl.java,v 1.14 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,6 +32,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ProtocolConformance;
 import org.eclipse.uml2.uml.ProtocolStateMachine;
@@ -81,6 +83,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROTOCOL_CONFORMANCE;
 	}
@@ -90,23 +93,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.PROTOCOL_CONFORMANCE__TARGET,
 						TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROTOCOL_CONFORMANCE__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -115,23 +120,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.PROTOCOL_CONFORMANCE__SOURCE,
 						SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROTOCOL_CONFORMANCE__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -248,12 +255,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_CONFORMANCE__SPECIFIC_MACHINE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -268,14 +277,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_CONFORMANCE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_CONFORMANCE__SPECIFIC_MACHINE :
 				return basicSetSpecificMachine(null, msgs);
@@ -288,6 +298,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -304,6 +315,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
@@ -339,15 +351,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_CONFORMANCE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_CONFORMANCE__GENERAL_MACHINE :
 				setGeneralMachine((ProtocolStateMachine) newValue);
@@ -364,6 +380,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
@@ -387,6 +404,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_CONFORMANCE__EANNOTATIONS :
@@ -426,6 +444,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.PROTOCOL_CONFORMANCE__GENERAL_MACHINE);
@@ -458,6 +477,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.PROTOCOL_CONFORMANCE__SPECIFIC_MACHINE);
@@ -482,6 +502,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.PROTOCOL_CONFORMANCE__SPECIFIC_MACHINE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolStateMachineImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolStateMachineImpl.java
index 5b23f5d..ca7b113 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolStateMachineImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolStateMachineImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolStateMachineImpl.java,v 1.24 2006/11/14 18:02:15 khussey Exp $
+ * $Id: ProtocolStateMachineImpl.java,v 1.25 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,14 +35,38 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.ProtocolConformance;
 import org.eclipse.uml2.uml.ProtocolStateMachine;
+import org.eclipse.uml2.uml.Pseudostate;
+import org.eclipse.uml2.uml.Reception;
+import org.eclipse.uml2.uml.Region;
+import org.eclipse.uml2.uml.State;
+import org.eclipse.uml2.uml.StateMachine;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.ProtocolStateMachineOperations;
@@ -73,7 +97,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList conformances = null;
+	protected EList<ProtocolConformance> conformances = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -89,6 +113,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROTOCOL_STATE_MACHINE;
 	}
@@ -98,23 +123,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -124,9 +151,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConformances() {
+	public EList<ProtocolConformance> getConformances() {
 		if (conformances == null) {
-			conformances = new EObjectContainmentWithInverseEList.Resolving(
+			conformances = new EObjectContainmentWithInverseEList.Resolving<ProtocolConformance>(
 				ProtocolConformance.class, this,
 				UMLPackage.PROTOCOL_STATE_MACHINE__CONFORMANCE,
 				UMLPackage.PROTOCOL_CONFORMANCE__SPECIFIC_MACHINE);
@@ -165,9 +192,7 @@
 	 */
 	public ProtocolConformance getConformance(
 			ProtocolStateMachine generalMachine, boolean createOnDemand) {
-		conformanceLoop : for (Iterator i = getConformances().iterator(); i
-			.hasNext();) {
-			ProtocolConformance conformance = (ProtocolConformance) i.next();
+		conformanceLoop : for (ProtocolConformance conformance : getConformances()) {
 			if (generalMachine != null
 				&& !generalMachine.equals(conformance.getGeneralMachine()))
 				continue conformanceLoop;
@@ -184,7 +209,7 @@
 	 * @generated
 	 */
 	public boolean validateProtocolTransitions(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolStateMachineOperations.validateProtocolTransitions(this,
 			diagnostics, context);
 	}
@@ -194,7 +219,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEntryExitDo(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEntryExitDo(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ProtocolStateMachineOperations.validateEntryExitDo(this,
 			diagnostics, context);
 	}
@@ -205,7 +231,7 @@
 	 * @generated
 	 */
 	public boolean validateDeepOrShallowHistory(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolStateMachineOperations.validateDeepOrShallowHistory(
 			this, diagnostics, context);
 	}
@@ -216,7 +242,7 @@
 	 * @generated
 	 */
 	public boolean validatePortsConnected(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolStateMachineOperations.validatePortsConnected(this,
 			diagnostics, context);
 	}
@@ -227,7 +253,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifierContext(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolStateMachineOperations.validateClassifierContext(this,
 			diagnostics, context);
 	}
@@ -237,24 +263,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -269,8 +297,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -282,22 +310,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SPECIFICATION :
 				if (specification != null)
 					msgs = ((InternalEObject) specification).eInverseRemove(
@@ -305,16 +334,17 @@
 						BehavioralFeature.class, msgs);
 				return basicSetSpecification((BehavioralFeature) otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REGION :
-				return ((InternalEList) getRegions()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBMACHINE_STATE :
-				return ((InternalEList) getSubmachineStates()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubmachineStates())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConnectionPoints())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONFORMANCE :
-				return ((InternalEList) getConformances()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConformances())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -324,105 +354,106 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__PRECONDITION :
-				return ((InternalEList) getPreconditions()).basicRemove(
+				return ((InternalEList<?>) getPreconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__POSTCONDITION :
-				return ((InternalEList) getPostconditions()).basicRemove(
+				return ((InternalEList<?>) getPostconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REGION :
-				return ((InternalEList) getRegions()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getRegions()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBMACHINE_STATE :
-				return ((InternalEList) getSubmachineStates()).basicRemove(
+				return ((InternalEList<?>) getSubmachineStates()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicRemove(
+				return ((InternalEList<?>) getConnectionPoints()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONFORMANCE :
-				return ((InternalEList) getConformances()).basicRemove(
+				return ((InternalEList<?>) getConformances()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -433,6 +464,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
@@ -604,15 +636,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__NAME :
 				setName((String) newValue);
@@ -622,22 +658,26 @@
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -653,7 +693,8 @@
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -663,130 +704,156 @@
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__REGION :
 				getRegions().clear();
-				getRegions().addAll((Collection) newValue);
+				getRegions().addAll((Collection<? extends Region>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__SUBMACHINE_STATE :
 				getSubmachineStates().clear();
-				getSubmachineStates().addAll((Collection) newValue);
+				getSubmachineStates().addAll(
+					(Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONNECTION_POINT :
 				getConnectionPoints().clear();
-				getConnectionPoints().addAll((Collection) newValue);
+				getConnectionPoints().addAll(
+					(Collection<? extends Pseudostate>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EXTENDED_STATE_MACHINE :
 				getExtendedStateMachines().clear();
-				getExtendedStateMachines().addAll((Collection) newValue);
+				getExtendedStateMachines().addAll(
+					(Collection<? extends StateMachine>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_STATE_MACHINE__CONFORMANCE :
 				getConformances().clear();
-				getConformances().addAll((Collection) newValue);
+				getConformances().addAll(
+					(Collection<? extends ProtocolConformance>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -797,6 +864,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
@@ -955,6 +1023,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_STATE_MACHINE__EANNOTATIONS :
@@ -1128,6 +1197,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.PROTOCOL_STATE_MACHINE__CONFORMANCE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolTransitionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolTransitionImpl.java
index 95f4416..5ac0b9e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolTransitionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ProtocolTransitionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolTransitionImpl.java,v 1.32 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ProtocolTransitionImpl.java,v 1.33 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -25,6 +24,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
@@ -41,10 +41,14 @@
 import org.eclipse.uml2.common.util.DerivedEObjectEList;
 
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.CallEvent;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Event;
 import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.ProtocolTransition;
 import org.eclipse.uml2.uml.Region;
@@ -52,6 +56,7 @@
 import org.eclipse.uml2.uml.Transition;
 import org.eclipse.uml2.uml.TransitionKind;
 import org.eclipse.uml2.uml.Trigger;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.Vertex;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -113,6 +118,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PROTOCOL_TRANSITION;
 	}
@@ -122,9 +128,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedRules() {
+	public EList<Constraint> getOwnedRules() {
 		if (ownedRules == null) {
-			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Constraint>(
 				Constraint.class, this,
 				UMLPackage.PROTOCOL_TRANSITION__OWNED_RULE, null,
 				OWNED_RULE_ESUBSETS, UMLPackage.CONSTRAINT__CONTEXT);
@@ -190,7 +196,7 @@
 				setPreCondition(null);
 			}
 			if (newGuard != null) {
-				EList ownedRules = getOwnedRules();
+				EList<Constraint> ownedRules = getOwnedRules();
 				if (!ownedRules.contains(newGuard)) {
 					ownedRules.add(newGuard);
 				}
@@ -243,7 +249,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newPostCondition != null) {
-				EList ownedRules = getOwnedRules();
+				EList<Constraint> ownedRules = getOwnedRules();
 				if (!ownedRules.contains(newPostCondition)) {
 					ownedRules.add(newPostCondition);
 				}
@@ -274,28 +280,32 @@
 	}
 
 	protected static class ReferredEList
-			extends DerivedEObjectEList {
+			extends DerivedEObjectEList<Operation> {
 
-		protected ReferredEList(Class dataClass, InternalEObject owner,
+		protected ReferredEList(Class<?> dataClass, InternalEObject owner,
 				int featureID, int[] sourceFeatureIDs) {
 			super(dataClass, owner, featureID, sourceFeatureIDs);
 		}
 
-		public List basicList() {
+		@Override
+		public List<Operation> basicList() {
 			return new ReferredEList(dataClass, owner, featureID,
 				sourceFeatureIDs) {
 
-				public ListIterator listIterator(int index) {
+				@Override
+				public ListIterator<Operation> listIterator(int index) {
 					return basicListIterator(index);
 				}
 			};
 		}
 
+		@Override
 		protected boolean isIncluded(EStructuralFeature feature) {
 			return false;
 		}
 
-		protected Object derive(Object object) {
+		@Override
+		protected Operation derive(Object object) {
 			Event event = ((Trigger) object).getEvent();
 			return event instanceof CallEvent
 				? ((CallEvent) event).getOperation()
@@ -315,11 +325,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getReferreds() {
+	public EList<Operation> getReferreds() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList referreds = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Operation> referreds = (EList<Operation>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.PROTOCOL_TRANSITION__REFERRED);
 			if (referreds == null) {
 				cache.put(eResource, this,
@@ -335,12 +347,11 @@
 	}
 
 	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getReferred(String name, EList ownedParameterNames,
-			EList ownedParameterTypes) {
+	public Operation getReferred(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes) {
 		return getReferred(name, ownedParameterNames, ownedParameterTypes,
 			false);
 	}
@@ -350,26 +361,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Operation getReferred(String name, EList ownedParameterNames,
-			EList ownedParameterTypes, boolean ignoreCase) {
-		referredLoop : for (Iterator i = getReferreds().iterator(); i.hasNext();) {
-			Operation referred = (Operation) i.next();
+	public Operation getReferred(String name,
+			EList<String> ownedParameterNames, EList<Type> ownedParameterTypes,
+			boolean ignoreCase) {
+		referredLoop : for (Operation referred : getReferreds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(referred.getName())
 				: name.equals(referred.getName())))
 				continue referredLoop;
-			EList ownedParameterList = referred.getOwnedParameters();
+			EList<Parameter> ownedParameterList = referred.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 			if (ownedParameterNames != null
 				&& ownedParameterNames.size() != ownedParameterListSize
 				|| (ownedParameterTypes != null && ownedParameterTypes.size() != ownedParameterListSize))
 				continue referredLoop;
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 				if (ownedParameterNames != null
 					&& !(ignoreCase
-						? ((String) ownedParameterNames.get(j))
+						? (ownedParameterNames.get(j))
 							.equalsIgnoreCase(ownedParameter.getName())
 						: ownedParameterNames.get(j).equals(
 							ownedParameter.getName())))
@@ -441,7 +451,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateBelongsToPsm(DiagnosticChain diagnostics, Map context) {
+	public boolean validateBelongsToPsm(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ProtocolTransitionOperations.validateBelongsToPsm(this,
 			diagnostics, context);
 	}
@@ -452,7 +463,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociatedActions(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolTransitionOperations.validateAssociatedActions(this,
 			diagnostics, context);
 	}
@@ -463,7 +474,7 @@
 	 * @generated
 	 */
 	public boolean validateRefersToOperation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ProtocolTransitionOperations.validateRefersToOperation(this,
 			diagnostics, context);
 	}
@@ -473,24 +484,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__CONTAINER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -514,29 +527,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__CONTAINER :
 				return basicSetContainer(null, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__TARGET :
@@ -544,7 +558,7 @@
 			case UMLPackage.PROTOCOL_TRANSITION__EFFECT :
 				return basicSetEffect(null, msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__TRIGGER :
-				return ((InternalEList) getTriggers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getTriggers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.PROTOCOL_TRANSITION__SOURCE :
 				return basicSetSource(null, msgs);
@@ -557,6 +571,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
@@ -652,15 +667,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__NAME :
 				setName((String) newValue);
@@ -670,22 +689,26 @@
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -710,7 +733,7 @@
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__TRIGGER :
 				getTriggers().clear();
-				getTriggers().addAll((Collection) newValue);
+				getTriggers().addAll((Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.PROTOCOL_TRANSITION__SOURCE :
 				setSource((Vertex) newValue);
@@ -730,6 +753,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
@@ -801,6 +825,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PROTOCOL_TRANSITION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PseudostateImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PseudostateImpl.java
index 102a14a..5eff54e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PseudostateImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/PseudostateImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PseudostateImpl.java,v 1.15 2006/11/14 18:02:16 khussey Exp $
+ * $Id: PseudostateImpl.java,v 1.16 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,6 +29,8 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Pseudostate;
@@ -36,6 +39,7 @@
 import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StateMachine;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Transition;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -96,6 +100,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.PSEUDOSTATE;
 	}
@@ -270,7 +275,7 @@
 	 * @generated
 	 */
 	public boolean validateInitialVertex(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateInitialVertex(this, diagnostics,
 			context);
 	}
@@ -281,7 +286,7 @@
 	 * @generated
 	 */
 	public boolean validateHistoryVertices(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateHistoryVertices(this, diagnostics,
 			context);
 	}
@@ -291,7 +296,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateJoinVertex(DiagnosticChain diagnostics, Map context) {
+	public boolean validateJoinVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateJoinVertex(this, diagnostics,
 			context);
 	}
@@ -302,7 +308,7 @@
 	 * @generated
 	 */
 	public boolean validateTransitionsIncoming(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateTransitionsIncoming(this,
 			diagnostics, context);
 	}
@@ -312,7 +318,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateForkVertex(DiagnosticChain diagnostics, Map context) {
+	public boolean validateForkVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateForkVertex(this, diagnostics,
 			context);
 	}
@@ -323,7 +330,7 @@
 	 * @generated
 	 */
 	public boolean validateTransitionsOutgoing(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateTransitionsOutgoing(this,
 			diagnostics, context);
 	}
@@ -334,7 +341,7 @@
 	 * @generated
 	 */
 	public boolean validateJunctionVertex(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateJunctionVertex(this, diagnostics,
 			context);
 	}
@@ -344,7 +351,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateChoiceVertex(DiagnosticChain diagnostics, Map context) {
+	public boolean validateChoiceVertex(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateChoiceVertex(this, diagnostics,
 			context);
 	}
@@ -355,7 +363,7 @@
 	 * @generated
 	 */
 	public boolean validateOutgoingFromInitial(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return PseudostateOperations.validateOutgoingFromInitial(this,
 			diagnostics, context);
 	}
@@ -365,20 +373,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__CONTAINER :
 				if (eInternalContainer() != null)
@@ -401,26 +411,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.PSEUDOSTATE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.PSEUDOSTATE__CONTAINER :
 				return basicSetContainer(null, msgs);
 			case UMLPackage.PSEUDOSTATE__STATE_MACHINE :
@@ -436,6 +447,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -458,6 +470,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
@@ -513,15 +526,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__NAME :
 				setName((String) newValue);
@@ -531,18 +548,21 @@
 				return;
 			case UMLPackage.PSEUDOSTATE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.PSEUDOSTATE__CONTAINER :
 				setContainer((Region) newValue);
@@ -565,6 +585,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
@@ -612,6 +633,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.PSEUDOSTATE__EANNOTATIONS :
@@ -658,6 +680,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -700,6 +723,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.PSEUDOSTATE__STATE_MACHINE);
@@ -724,6 +748,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || eIsSet(UMLPackage.PSEUDOSTATE__STATE);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/QualifierValueImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/QualifierValueImpl.java
index 22f13bf..733bb31 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/QualifierValueImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/QualifierValueImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: QualifierValueImpl.java,v 1.9 2006/11/14 18:02:17 khussey Exp $
+ * $Id: QualifierValueImpl.java,v 1.10 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,11 +19,13 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.InputPin;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.QualifierValue;
@@ -83,6 +85,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.QUALIFIER_VALUE;
 	}
@@ -178,7 +181,7 @@
 	 * @generated
 	 */
 	public boolean validateQualifierAttribute(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return QualifierValueOperations.validateQualifierAttribute(this,
 			diagnostics, context);
 	}
@@ -189,7 +192,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOfQualifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return QualifierValueOperations.validateTypeOfQualifier(this,
 			diagnostics, context);
 	}
@@ -200,7 +203,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfQualifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return QualifierValueOperations.validateMultiplicityOfQualifier(this,
 			diagnostics, context);
 	}
@@ -210,6 +213,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.QUALIFIER_VALUE__EANNOTATIONS :
@@ -239,15 +243,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.QUALIFIER_VALUE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.QUALIFIER_VALUE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.QUALIFIER_VALUE__QUALIFIER :
 				setQualifier((Property) newValue);
@@ -264,6 +272,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.QUALIFIER_VALUE__EANNOTATIONS :
@@ -287,6 +296,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.QUALIFIER_VALUE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RaiseExceptionActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RaiseExceptionActionImpl.java
index 133767b..01e4d37 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RaiseExceptionActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RaiseExceptionActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RaiseExceptionActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: RaiseExceptionActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -31,7 +32,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.RaiseExceptionAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -81,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RAISE_EXCEPTION_ACTION;
 	}
@@ -90,22 +100,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.RAISE_EXCEPTION_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.RAISE_EXCEPTION_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -230,18 +242,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__IN_STRUCTURED_NODE :
@@ -249,26 +262,26 @@
 			case UMLPackage.RAISE_EXCEPTION_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EXCEPTION :
 				return basicSetException(null, msgs);
 		}
@@ -280,6 +293,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EANNOTATIONS :
@@ -363,15 +377,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__NAME :
 				setName((String) newValue);
@@ -381,7 +399,8 @@
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -397,35 +416,44 @@
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EXCEPTION :
 				setException((InputPin) newValue);
@@ -439,6 +467,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EANNOTATIONS :
@@ -504,6 +533,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RAISE_EXCEPTION_ACTION__EANNOTATIONS :
@@ -587,6 +617,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.RAISE_EXCEPTION_ACTION__EXCEPTION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadExtentActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadExtentActionImpl.java
index 34790fe..5288cc3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadExtentActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadExtentActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadExtentActionImpl.java,v 1.21 2006/11/14 18:02:17 khussey Exp $
+ * $Id: ReadExtentActionImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadExtentAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -99,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_EXTENT_ACTION;
 	}
@@ -108,22 +118,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.READ_EXTENT_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+				cache
+					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+						outputs = new DerivedUnionEObjectEList<OutputPin>(
+							OutputPin.class, this,
+							UMLPackage.READ_EXTENT_ACTION__OUTPUT,
+							OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_EXTENT_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -278,7 +291,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeIsClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadExtentActionOperations.validateTypeIsClassifier(this,
 			diagnostics, context);
 	}
@@ -289,7 +302,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadExtentActionOperations.validateMultiplicityOfResult(this,
 			diagnostics, context);
 	}
@@ -299,18 +312,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_EXTENT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__IN_STRUCTURED_NODE :
@@ -318,26 +332,26 @@
 			case UMLPackage.READ_EXTENT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_EXTENT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_EXTENT_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -349,6 +363,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_EXTENT_ACTION__EANNOTATIONS :
@@ -436,15 +451,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_EXTENT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__NAME :
 				setName((String) newValue);
@@ -454,7 +473,8 @@
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -470,35 +490,44 @@
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_EXTENT_ACTION__RESULT :
 				setResult((OutputPin) newValue);
@@ -515,6 +544,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_EXTENT_ACTION__EANNOTATIONS :
@@ -583,6 +613,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_EXTENT_ACTION__EANNOTATIONS :
@@ -668,6 +699,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_EXTENT_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadIsClassifiedObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadIsClassifiedObjectActionImpl.java
index 6821428..5166813 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadIsClassifiedObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadIsClassifiedObjectActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadIsClassifiedObjectActionImpl.java,v 1.22 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ReadIsClassifiedObjectActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,8 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadIsClassifiedObjectAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -133,6 +142,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_IS_CLASSIFIED_OBJECT_ACTION;
 	}
@@ -142,23 +152,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
 						UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OUTPUT,
 			OUTPUT_ESUBSETS);
 	}
@@ -168,22 +179,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -490,7 +503,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfInput(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadIsClassifiedObjectActionOperations
 			.validateMultiplicityOfInput(this, diagnostics, context);
 	}
@@ -500,7 +513,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadIsClassifiedObjectActionOperations.validateNoType(this,
 			diagnostics, context);
 	}
@@ -511,7 +525,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfOutput(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadIsClassifiedObjectActionOperations
 			.validateMultiplicityOfOutput(this, diagnostics, context);
 	}
@@ -522,7 +536,7 @@
 	 * @generated
 	 */
 	public boolean validateBooleanResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadIsClassifiedObjectActionOperations.validateBooleanResult(
 			this, diagnostics, context);
 	}
@@ -532,18 +546,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -551,26 +566,26 @@
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OBJECT :
@@ -584,6 +599,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__EANNOTATIONS :
@@ -679,15 +695,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -697,7 +717,8 @@
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -713,35 +734,44 @@
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__IS_DIRECT :
 				setIsDirect(((Boolean) newValue).booleanValue());
@@ -764,6 +794,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__EANNOTATIONS :
@@ -838,6 +869,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__EANNOTATIONS :
@@ -917,6 +949,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -943,6 +976,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__RESULT);
@@ -963,6 +997,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkActionImpl.java
index 04ed986..0a20156 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkActionImpl.java,v 1.21 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ReadLinkActionImpl.java,v 1.22 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
+import org.eclipse.uml2.uml.LinkEndData;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadLinkAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -87,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_LINK_ACTION;
 	}
@@ -96,22 +108,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.READ_LINK_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.READ_LINK_ACTION__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_LINK_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -220,7 +233,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOneOpenEnd(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOneOpenEnd(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkActionOperations.validateOneOpenEnd(this, diagnostics,
 			context);
 	}
@@ -231,7 +245,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkActionOperations.validateTypeAndOrdering(this,
 			diagnostics, context);
 	}
@@ -242,7 +256,7 @@
 	 * @generated
 	 */
 	public boolean validateCompatibleMultiplicity(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkActionOperations.validateCompatibleMultiplicity(this,
 			diagnostics, context);
 	}
@@ -253,7 +267,7 @@
 	 * @generated
 	 */
 	public boolean validateNavigableOpenEnd(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkActionOperations.validateNavigableOpenEnd(this,
 			diagnostics, context);
 	}
@@ -263,7 +277,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateVisibility(DiagnosticChain diagnostics, Map context) {
+	public boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkActionOperations.validateVisibility(this, diagnostics,
 			context);
 	}
@@ -273,18 +288,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_LINK_ACTION__IN_STRUCTURED_NODE :
@@ -292,32 +308,32 @@
 			case UMLPackage.READ_LINK_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_LINK_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_LINK_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__END_DATA :
-				return ((InternalEList) getEndData()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getEndData()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_LINK_ACTION__INPUT_VALUE :
-				return ((InternalEList) getInputValues()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getInputValues()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -329,6 +345,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_ACTION__EANNOTATIONS :
@@ -416,15 +433,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__NAME :
 				setName((String) newValue);
@@ -434,7 +455,8 @@
 				return;
 			case UMLPackage.READ_LINK_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -450,43 +472,54 @@
 				return;
 			case UMLPackage.READ_LINK_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__END_DATA :
 				getEndData().clear();
-				getEndData().addAll((Collection) newValue);
+				getEndData().addAll(
+					(Collection<? extends LinkEndData>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__INPUT_VALUE :
 				getInputValues().clear();
-				getInputValues().addAll((Collection) newValue);
+				getInputValues().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.READ_LINK_ACTION__RESULT :
 				setResult((OutputPin) newValue);
@@ -500,6 +533,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_ACTION__EANNOTATIONS :
@@ -571,6 +605,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_ACTION__EANNOTATIONS :
@@ -658,6 +693,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_LINK_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndActionImpl.java
index 49a176f..ab7ec6a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ReadLinkObjectEndActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.ReadLinkObjectEndAction;
@@ -112,6 +121,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_LINK_OBJECT_END_ACTION;
 	}
@@ -121,22 +131,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.READ_LINK_OBJECT_END_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.READ_LINK_OBJECT_END_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -145,22 +157,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.READ_LINK_OBJECT_END_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.READ_LINK_OBJECT_END_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_LINK_OBJECT_END_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -435,7 +449,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateProperty(DiagnosticChain diagnostics, Map context) {
+	public boolean validateProperty(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateProperty(this,
 			diagnostics, context);
 	}
@@ -446,7 +461,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationOfAssociation(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations
 			.validateAssociationOfAssociation(this, diagnostics, context);
 	}
@@ -457,7 +472,7 @@
 	 * @generated
 	 */
 	public boolean validateEndsOfAssociation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateEndsOfAssociation(
 			this, diagnostics, context);
 	}
@@ -467,7 +482,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTypeOfObject(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTypeOfObject(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateTypeOfObject(this,
 			diagnostics, context);
 	}
@@ -478,7 +494,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateMultiplicityOfObject(
 			this, diagnostics, context);
 	}
@@ -488,7 +504,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTypeOfResult(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTypeOfResult(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateTypeOfResult(this,
 			diagnostics, context);
 	}
@@ -499,7 +516,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndActionOperations.validateMultiplicityOfResult(
 			this, diagnostics, context);
 	}
@@ -509,18 +526,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__IN_STRUCTURED_NODE :
@@ -528,26 +546,26 @@
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__RESULT :
@@ -561,6 +579,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__EANNOTATIONS :
@@ -652,15 +671,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__NAME :
 				setName((String) newValue);
@@ -670,7 +693,8 @@
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -686,35 +710,44 @@
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__OBJECT :
 				setObject((InputPin) newValue);
@@ -734,6 +767,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__EANNOTATIONS :
@@ -805,6 +839,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION__EANNOTATIONS :
@@ -892,6 +927,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.READ_LINK_OBJECT_END_ACTION__OBJECT);
@@ -912,6 +948,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_LINK_OBJECT_END_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndQualifierActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndQualifierActionImpl.java
index dec7137..572f252 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndQualifierActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadLinkObjectEndQualifierActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndQualifierActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ReadLinkObjectEndQualifierActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.ReadLinkObjectEndQualifierAction;
@@ -112,6 +121,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_LINK_OBJECT_END_QUALIFIER_ACTION;
 	}
@@ -121,20 +131,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(
+						inputs = new DerivedUnionEObjectEList<InputPin>(
 							InputPin.class,
 							this,
 							UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__INPUT,
@@ -142,7 +153,7 @@
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__INPUT,
 			INPUT_ESUBSETS);
 	}
@@ -152,20 +163,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ACTION__OUTPUT,
-						outputs = new DerivedUnionEObjectEList(
+						outputs = new DerivedUnionEObjectEList<OutputPin>(
 							OutputPin.class,
 							this,
 							UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OUTPUT,
@@ -173,7 +185,7 @@
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OUTPUT,
 			OUTPUT_ESUBSETS);
 	}
@@ -475,7 +487,7 @@
 	 * @generated
 	 */
 	public boolean validateQualifierAttribute(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateQualifierAttribute(this, diagnostics, context);
 	}
@@ -486,7 +498,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationOfAssociation(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateAssociationOfAssociation(this, diagnostics, context);
 	}
@@ -497,7 +509,7 @@
 	 * @generated
 	 */
 	public boolean validateEndsOfAssociation(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateEndsOfAssociation(this, diagnostics, context);
 	}
@@ -507,7 +519,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateTypeOfObject(DiagnosticChain diagnostics, Map context) {
+	public boolean validateTypeOfObject(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations.validateTypeOfObject(
 			this, diagnostics, context);
 	}
@@ -518,7 +531,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfQualifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateMultiplicityOfQualifier(this, diagnostics, context);
 	}
@@ -529,7 +542,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateMultiplicityOfObject(this, diagnostics, context);
 	}
@@ -539,7 +552,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations.validateSameType(
 			this, diagnostics, context);
 	}
@@ -550,7 +564,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadLinkObjectEndQualifierActionOperations
 			.validateMultiplicityOfResult(this, diagnostics, context);
 	}
@@ -560,18 +574,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__IN_STRUCTURED_NODE :
@@ -579,26 +594,26 @@
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__RESULT :
@@ -612,6 +627,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__EANNOTATIONS :
@@ -703,15 +719,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__NAME :
 				setName((String) newValue);
@@ -721,7 +741,8 @@
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -737,35 +758,44 @@
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OBJECT :
 				setObject((InputPin) newValue);
@@ -785,6 +815,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__EANNOTATIONS :
@@ -856,6 +887,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__EANNOTATIONS :
@@ -943,6 +975,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__OBJECT);
@@ -963,6 +996,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadSelfActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadSelfActionImpl.java
index d337535..5f45cb9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadSelfActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadSelfActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadSelfActionImpl.java,v 1.21 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ReadSelfActionImpl.java,v 1.22 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,14 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadSelfAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -87,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_SELF_ACTION;
 	}
@@ -96,22 +106,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.READ_SELF_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.READ_SELF_ACTION__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_SELF_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -220,7 +231,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateContained(DiagnosticChain diagnostics, Map context) {
+	public boolean validateContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadSelfActionOperations.validateContained(this, diagnostics,
 			context);
 	}
@@ -230,7 +242,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotStatic(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadSelfActionOperations.validateNotStatic(this, diagnostics,
 			context);
 	}
@@ -240,7 +253,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadSelfActionOperations
 			.validateType(this, diagnostics, context);
 	}
@@ -250,7 +264,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadSelfActionOperations.validateMultiplicity(this, diagnostics,
 			context);
 	}
@@ -260,18 +275,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_SELF_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_SELF_ACTION__IN_STRUCTURED_NODE :
@@ -279,26 +295,26 @@
 			case UMLPackage.READ_SELF_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_SELF_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_SELF_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_SELF_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -310,6 +326,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_SELF_ACTION__EANNOTATIONS :
@@ -393,15 +410,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_SELF_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__NAME :
 				setName((String) newValue);
@@ -411,7 +432,8 @@
 				return;
 			case UMLPackage.READ_SELF_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -427,35 +449,44 @@
 				return;
 			case UMLPackage.READ_SELF_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_SELF_ACTION__RESULT :
 				setResult((OutputPin) newValue);
@@ -469,6 +500,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_SELF_ACTION__EANNOTATIONS :
@@ -534,6 +566,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_SELF_ACTION__EANNOTATIONS :
@@ -617,6 +650,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_SELF_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadStructuralFeatureActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadStructuralFeatureActionImpl.java
index 2991470..3ceac8d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadStructuralFeatureActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadStructuralFeatureActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadStructuralFeatureActionImpl.java,v 1.21 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ReadStructuralFeatureActionImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadStructuralFeatureAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -89,6 +98,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_STRUCTURAL_FEATURE_ACTION;
 	}
@@ -98,23 +108,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
 						UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -231,7 +242,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadStructuralFeatureActionOperations.validateTypeAndOrdering(
 			this, diagnostics, context);
 	}
@@ -241,7 +252,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReadStructuralFeatureActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -251,18 +263,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__IN_STRUCTURED_NODE :
@@ -270,26 +283,26 @@
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__RESULT :
@@ -303,6 +316,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -394,15 +408,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__NAME :
 				setName((String) newValue);
@@ -412,7 +430,8 @@
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -428,35 +447,44 @@
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__STRUCTURAL_FEATURE :
 				setStructuralFeature((StructuralFeature) newValue);
@@ -476,6 +504,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -547,6 +576,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -634,6 +664,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_STRUCTURAL_FEATURE_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadVariableActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadVariableActionImpl.java
index 69ea49e..7f0e9fa 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadVariableActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReadVariableActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadVariableActionImpl.java,v 1.21 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ReadVariableActionImpl.java,v 1.22 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,14 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReadVariableAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -88,6 +97,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.READ_VARIABLE_ACTION;
 	}
@@ -97,22 +107,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.READ_VARIABLE_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.READ_VARIABLE_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.READ_VARIABLE_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -223,7 +235,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadVariableActionOperations.validateTypeAndOrdering(this,
 			diagnostics, context);
 	}
@@ -234,7 +246,7 @@
 	 * @generated
 	 */
 	public boolean validateCompatibleMultiplicity(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReadVariableActionOperations.validateCompatibleMultiplicity(
 			this, diagnostics, context);
 	}
@@ -244,18 +256,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.READ_VARIABLE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__IN_STRUCTURED_NODE :
@@ -263,26 +276,26 @@
 			case UMLPackage.READ_VARIABLE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.READ_VARIABLE_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 		}
@@ -294,6 +307,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.READ_VARIABLE_ACTION__EANNOTATIONS :
@@ -381,15 +395,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.READ_VARIABLE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__NAME :
 				setName((String) newValue);
@@ -399,7 +417,8 @@
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -415,35 +434,44 @@
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.READ_VARIABLE_ACTION__VARIABLE :
 				setVariable((Variable) newValue);
@@ -460,6 +488,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_VARIABLE_ACTION__EANNOTATIONS :
@@ -528,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.READ_VARIABLE_ACTION__EANNOTATIONS :
@@ -613,6 +643,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.READ_VARIABLE_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RealizationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RealizationImpl.java
index 7d35b69..b12f15c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RealizationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RealizationImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RealizationImpl.java,v 1.2 2005/11/23 20:01:15 khussey Exp $
+ * $Id: RealizationImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REALIZATION;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveOperationEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveOperationEventImpl.java
index f46c7c0..b187859 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveOperationEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveOperationEventImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReceiveOperationEventImpl.java,v 1.6 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ReceiveOperationEventImpl.java,v 1.7 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.ReceiveOperationEvent;
 import org.eclipse.uml2.uml.StringExpression;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RECEIVE_OPERATION_EVENT;
 	}
@@ -121,6 +125,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_OPERATION_EVENT__EANNOTATIONS :
@@ -170,15 +175,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_OPERATION_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.RECEIVE_OPERATION_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.RECEIVE_OPERATION_EVENT__NAME :
 				setName((String) newValue);
@@ -188,7 +197,8 @@
 				return;
 			case UMLPackage.RECEIVE_OPERATION_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.RECEIVE_OPERATION_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -211,6 +221,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_OPERATION_EVENT__EANNOTATIONS :
@@ -249,6 +260,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_OPERATION_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveSignalEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveSignalEventImpl.java
index 5571433..590f141 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveSignalEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceiveSignalEventImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReceiveSignalEventImpl.java,v 1.6 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ReceiveSignalEventImpl.java,v 1.7 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ReceiveSignalEvent;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.StringExpression;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RECEIVE_SIGNAL_EVENT;
 	}
@@ -120,6 +124,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__EANNOTATIONS :
@@ -169,15 +174,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__NAME :
 				setName((String) newValue);
@@ -187,7 +196,8 @@
 				return;
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -210,6 +220,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__EANNOTATIONS :
@@ -248,6 +259,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEIVE_SIGNAL_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceptionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceptionImpl.java
index 94b01ce..caa03de 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceptionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReceptionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReceptionImpl.java,v 1.12 2006/11/14 18:02:19 khussey Exp $
+ * $Id: ReceptionImpl.java,v 1.13 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,15 +19,25 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.CallConcurrencyKind;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
 import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.VisibilityKind;
 
@@ -74,6 +84,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RECEPTION;
 	}
@@ -125,7 +136,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotQuery(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotQuery(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReceptionOperations.validateNotQuery(this, diagnostics, context);
 	}
 
@@ -134,6 +146,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RECEPTION__EANNOTATIONS :
@@ -215,15 +228,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.RECEPTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.RECEPTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.RECEPTION__NAME :
 				setName((String) newValue);
@@ -233,22 +250,26 @@
 				return;
 			case UMLPackage.RECEPTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.RECEPTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.RECEPTION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.RECEPTION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.RECEPTION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.RECEPTION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -258,25 +279,28 @@
 				return;
 			case UMLPackage.RECEPTION__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.RECEPTION__IS_ABSTRACT :
 				setIsAbstract(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.RECEPTION__METHOD :
 				getMethods().clear();
-				getMethods().addAll((Collection) newValue);
+				getMethods().addAll((Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.RECEPTION__CONCURRENCY :
 				setConcurrency((CallConcurrencyKind) newValue);
 				return;
 			case UMLPackage.RECEPTION__RAISED_EXCEPTION :
 				getRaisedExceptions().clear();
-				getRaisedExceptions().addAll((Collection) newValue);
+				getRaisedExceptions().addAll(
+					(Collection<? extends Type>) newValue);
 				return;
 			case UMLPackage.RECEPTION__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.RECEPTION__SIGNAL :
 				setSignal((Signal) newValue);
@@ -290,6 +314,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEPTION__EANNOTATIONS :
@@ -355,6 +380,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECEPTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReclassifyObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReclassifyObjectActionImpl.java
index 853d540..59d2704 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReclassifyObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReclassifyObjectActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReclassifyObjectActionImpl.java,v 1.22 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ReclassifyObjectActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,8 +37,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ReclassifyObjectAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -97,7 +105,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList oldClassifiers = null;
+	protected EList<Classifier> oldClassifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getNewClassifiers() <em>New Classifier</em>}' reference list.
@@ -107,7 +115,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList newClassifiers = null;
+	protected EList<Classifier> newClassifiers = null;
 
 	/**
 	 * The cached value of the '{@link #getObject() <em>Object</em>}' containment reference.
@@ -133,6 +141,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RECLASSIFY_OBJECT_ACTION;
 	}
@@ -142,22 +151,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.RECLASSIFY_OBJECT_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.RECLASSIFY_OBJECT_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -194,9 +205,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOldClassifiers() {
+	public EList<Classifier> getOldClassifiers() {
 		if (oldClassifiers == null) {
-			oldClassifiers = new EObjectResolvingEList(Classifier.class, this,
+			oldClassifiers = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
 				UMLPackage.RECLASSIFY_OBJECT_ACTION__OLD_CLASSIFIER);
 		}
 		return oldClassifiers;
@@ -218,9 +230,7 @@
 	 */
 	public Classifier getOldClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		oldClassifierLoop : for (Iterator i = getOldClassifiers().iterator(); i
-			.hasNext();) {
-			Classifier oldClassifier = (Classifier) i.next();
+		oldClassifierLoop : for (Classifier oldClassifier : getOldClassifiers()) {
 			if (eClass != null && !eClass.isInstance(oldClassifier))
 				continue oldClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -237,9 +247,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNewClassifiers() {
+	public EList<Classifier> getNewClassifiers() {
 		if (newClassifiers == null) {
-			newClassifiers = new EObjectResolvingEList(Classifier.class, this,
+			newClassifiers = new EObjectResolvingEList<Classifier>(
+				Classifier.class, this,
 				UMLPackage.RECLASSIFY_OBJECT_ACTION__NEW_CLASSIFIER);
 		}
 		return newClassifiers;
@@ -261,9 +272,7 @@
 	 */
 	public Classifier getNewClassifier(String name, boolean ignoreCase,
 			EClass eClass) {
-		newClassifierLoop : for (Iterator i = getNewClassifiers().iterator(); i
-			.hasNext();) {
-			Classifier newClassifier = (Classifier) i.next();
+		newClassifierLoop : for (Classifier newClassifier : getNewClassifiers()) {
 			if (eClass != null && !eClass.isInstance(newClassifier))
 				continue newClassifierLoop;
 			if (name != null && !(ignoreCase
@@ -396,7 +405,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifierNotAbstract(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReclassifyObjectActionOperations.validateClassifierNotAbstract(
 			this, diagnostics, context);
 	}
@@ -406,7 +415,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReclassifyObjectActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -416,7 +426,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInputPin(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ReclassifyObjectActionOperations.validateInputPin(this,
 			diagnostics, context);
 	}
@@ -426,18 +437,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -445,26 +457,26 @@
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 		}
@@ -476,6 +488,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__EANNOTATIONS :
@@ -567,15 +580,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -585,7 +602,8 @@
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -601,46 +619,57 @@
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__IS_REPLACE_ALL :
 				setIsReplaceAll(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OLD_CLASSIFIER :
 				getOldClassifiers().clear();
-				getOldClassifiers().addAll((Collection) newValue);
+				getOldClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__NEW_CLASSIFIER :
 				getNewClassifiers().clear();
-				getNewClassifiers().addAll((Collection) newValue);
+				getNewClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__OBJECT :
 				setObject((InputPin) newValue);
@@ -654,6 +683,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__EANNOTATIONS :
@@ -728,6 +758,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION__EANNOTATIONS :
@@ -807,6 +838,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -833,6 +865,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.RECLASSIFY_OBJECT_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableElementImpl.java
index 802c618..383f97b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableElementImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableElementImpl.java,v 1.16 2006/11/14 18:02:17 khussey Exp $
+ * $Id: RedefinableElementImpl.java,v 1.17 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
@@ -32,6 +32,8 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -92,6 +94,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REDEFINABLE_ELEMENT;
 	}
@@ -101,27 +104,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-						redefinedElements = new DerivedUnionEObjectEList(
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
 							RedefinableElement.class, this,
 							UMLPackage.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
 							null));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT, null);
 	}
 
@@ -141,9 +147,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -160,20 +164,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContextsGen() {
+	public EList<Classifier> getRedefinitionContextsGen() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class,
 							this,
 							UMLPackage.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
@@ -181,7 +189,7 @@
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT, null);
 	}
 
@@ -191,19 +199,23 @@
 	 */
 	protected static final int[] REDEFINITION_CONTEXT_ESUBSETS = new int[]{UMLPackage.REDEFINABLE_ELEMENT__OWNER};
 
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedEObjectEList(
+						redefinitionContexts = new DerivedEObjectEList<Classifier>(
 							Classifier.class,
 							this,
 							UMLPackage.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
@@ -211,7 +223,7 @@
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedEObjectEList(Classifier.class, this,
+		return new DerivedEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -232,9 +244,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -279,7 +289,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -290,7 +300,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -310,6 +320,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_ELEMENT__EANNOTATIONS :
@@ -355,15 +366,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_ELEMENT__NAME :
 				setName((String) newValue);
@@ -373,7 +388,8 @@
 				return;
 			case UMLPackage.REDEFINABLE_ELEMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_ELEMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -390,6 +406,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_ELEMENT__EANNOTATIONS :
@@ -422,6 +439,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_ELEMENT__EANNOTATIONS :
@@ -471,6 +489,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableTemplateSignatureImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableTemplateSignatureImpl.java
index a666e6f..aaab867 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableTemplateSignatureImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RedefinableTemplateSignatureImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableTemplateSignatureImpl.java,v 1.22 2006/11/17 15:48:50 khussey Exp $
+ * $Id: RedefinableTemplateSignatureImpl.java,v 1.23 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -40,6 +40,8 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.RedefinableTemplateSignature;
@@ -87,7 +89,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList parameters = null;
+	protected EList<TemplateParameter> parameters = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedParameters() <em>Owned Parameter</em>}' containment reference list.
@@ -97,7 +99,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameters = null;
+	protected EList<TemplateParameter> ownedParameters = null;
 
 	/**
 	 * The cached value of the '{@link #getExtendedSignatures() <em>Extended Signature</em>}' reference list.
@@ -107,7 +109,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList extendedSignatures = null;
+	protected EList<RedefinableTemplateSignature> extendedSignatures = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -123,6 +125,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REDEFINABLE_TEMPLATE_SIGNATURE;
 	}
@@ -132,20 +135,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-						ownedElements = new DerivedUnionEObjectEList(
+						ownedElements = new DerivedUnionEObjectEList<Element>(
 							Element.class,
 							this,
 							UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_ELEMENT,
@@ -153,7 +157,7 @@
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -163,9 +167,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getParameters() {
+	public EList<TemplateParameter> getParameters() {
 		if (parameters == null) {
-			parameters = new SubsetSupersetEObjectResolvingEList(
+			parameters = new SubsetSupersetEObjectResolvingEList<TemplateParameter>(
 				TemplateParameter.class, this,
 				UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__PARAMETER, null,
 				PARAMETER_ESUBSETS);
@@ -242,9 +246,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameters() {
+	public EList<TemplateParameter> getOwnedParameters() {
 		if (ownedParameters == null) {
-			ownedParameters = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedParameters = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<TemplateParameter>(
 				TemplateParameter.class, this,
 				UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER,
 				OWNED_PARAMETER_ESUPERSETS, null,
@@ -278,20 +282,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-						redefinedElements = new DerivedUnionEObjectEList(
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
 							RedefinableElement.class,
 							this,
 							UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINED_ELEMENT,
@@ -299,7 +305,8 @@
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -309,20 +316,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinitionContexts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+			@SuppressWarnings("unchecked")
+			EList<Classifier> redefinitionContexts = (EList<Classifier>) cache
+				.get(
+					eResource,
+					this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 			if (redefinitionContexts == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						redefinitionContexts = new DerivedUnionEObjectEList(
+						redefinitionContexts = new DerivedUnionEObjectEList<Classifier>(
 							Classifier.class,
 							this,
 							UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINITION_CONTEXT,
@@ -330,7 +341,7 @@
 			}
 			return redefinitionContexts;
 		}
-		return new DerivedUnionEObjectEList(Classifier.class, this,
+		return new DerivedUnionEObjectEList<Classifier>(Classifier.class, this,
 			UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINITION_CONTEXT,
 			REDEFINITION_CONTEXT_ESUBSETS);
 	}
@@ -340,9 +351,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtendedSignatures() {
+	public EList<RedefinableTemplateSignature> getExtendedSignatures() {
 		if (extendedSignatures == null) {
-			extendedSignatures = new EObjectResolvingEList(
+			extendedSignatures = new EObjectResolvingEList<RedefinableTemplateSignature>(
 				RedefinableTemplateSignature.class, this,
 				UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EXTENDED_SIGNATURE);
 		}
@@ -365,10 +376,7 @@
 	 */
 	public RedefinableTemplateSignature getExtendedSignature(String name,
 			boolean ignoreCase) {
-		extendedSignatureLoop : for (Iterator i = getExtendedSignatures()
-			.iterator(); i.hasNext();) {
-			RedefinableTemplateSignature extendedSignature = (RedefinableTemplateSignature) i
-				.next();
+		extendedSignatureLoop : for (RedefinableTemplateSignature extendedSignature : getExtendedSignatures()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(extendedSignature.getName())
 				: name.equals(extendedSignature.getName())))
@@ -383,11 +391,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInheritedParameters() {
+	public EList<TemplateParameter> getInheritedParameters() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache
+			@SuppressWarnings("unchecked")
+			EList<TemplateParameter> result = (EList<TemplateParameter>) cache
 				.get(
 					this,
 					UMLPackage.Literals.REDEFINABLE_TEMPLATE_SIGNATURE__INHERITED_PARAMETER);
@@ -435,24 +444,7 @@
 	 * @generated NOT
 	 */
 	public void setClassifier(Classifier newClassifier) {
-		if (newClassifier != eInternalContainer()) {
-			if (EcoreUtil.isAncestor(this, newClassifier))
-				throw new IllegalArgumentException(
-					"Recursive containment not allowed for " + toString()); //$NON-NLS-1$
-			NotificationChain msgs = null;
-			if (eInternalContainer() != null)
-				msgs = eBasicRemoveFromContainer(msgs);
-			if (newClassifier != null)
-				msgs = ((InternalEList) newClassifier
-					.getOwnedTemplateSignature()).basicAdd(this, msgs);
-			msgs = eBasicSetContainer((InternalEObject) newClassifier,
-				UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLASSIFIER, msgs);
-			if (msgs != null)
-				msgs.dispatch();
-		} else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET,
-				UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLASSIFIER,
-				newClassifier, newClassifier));
+		newClassifier.setOwnedTemplateSignature(this);
 	}
 
 	/**
@@ -460,7 +452,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwnElements(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwnElements(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return TemplateSignatureOperations.validateOwnElements(this,
 			diagnostics, context);
 	}
@@ -471,7 +464,7 @@
 	 * @generated
 	 */
 	public boolean validateInheritedParameters(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableTemplateSignatureOperations
 			.validateInheritedParameters(this, diagnostics, context);
 	}
@@ -491,18 +484,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedParameters())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -516,22 +511,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE :
 				return basicSetTemplate(null, msgs);
@@ -544,6 +540,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -560,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -621,15 +619,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__NAME :
 				setName((String) newValue);
@@ -639,7 +641,8 @@
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -649,23 +652,28 @@
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__PARAMETER :
 				getParameters().clear();
-				getParameters().addAll((Collection) newValue);
+				getParameters().addAll(
+					(Collection<? extends TemplateParameter>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends TemplateParameter>) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE :
 				setTemplate((TemplateableElement) newValue);
 				return;
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EXTENDED_SIGNATURE :
 				getExtendedSignatures().clear();
-				getExtendedSignatures().addAll((Collection) newValue);
+				getExtendedSignatures()
+					.addAll(
+						(Collection<? extends RedefinableTemplateSignature>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
 	}
 
+	@Override
 	public void eDynamicSet(int featureID, Object newValue) {
 
 		if (featureID == UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLASSIFIER) {
@@ -681,6 +689,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -725,6 +734,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -778,7 +788,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == TemplateSignature.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__PARAMETER :
@@ -799,7 +810,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == TemplateSignature.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.TEMPLATE_SIGNATURE__PARAMETER :
@@ -879,6 +891,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE);
@@ -899,6 +912,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER);
@@ -909,6 +923,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__EXTENDED_SIGNATURE);
@@ -939,6 +954,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinitionContexts() {
 		return super.isSetRedefinitionContexts()
 			|| eIsSet(UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE__CLASSIFIER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReduceActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReduceActionImpl.java
index 9578f19..5aaf183 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReduceActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReduceActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReduceActionImpl.java,v 1.17 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ReduceActionImpl.java,v 1.18 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -21,6 +21,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,8 +35,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.ReduceAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -132,6 +141,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REDUCE_ACTION;
 	}
@@ -141,23 +151,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
-				cache
-					.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-						outputs = new DerivedUnionEObjectEList(OutputPin.class,
-							this, UMLPackage.REDUCE_ACTION__OUTPUT,
-							OUTPUT_ESUBSETS));
+				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.REDUCE_ACTION__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.REDUCE_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -166,21 +176,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.REDUCE_ACTION__INPUT, INPUT_ESUBSETS));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.REDUCE_ACTION__INPUT,
+						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.REDUCE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -472,7 +484,7 @@
 	 * @generated
 	 */
 	public boolean validateInputTypeIsCollection(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReduceActionOperations.validateInputTypeIsCollection(this,
 			diagnostics, context);
 	}
@@ -483,7 +495,7 @@
 	 * @generated
 	 */
 	public boolean validateOutputTypesAreCompatible(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ReduceActionOperations.validateOutputTypesAreCompatible(this,
 			diagnostics, context);
 	}
@@ -494,7 +506,7 @@
 	 * @generated
 	 */
 	public boolean validateReducerInputsOutput(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReduceActionOperations.validateReducerInputsOutput(this,
 			diagnostics, context);
 	}
@@ -504,18 +516,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REDUCE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REDUCE_ACTION__IN_STRUCTURED_NODE :
@@ -523,26 +536,26 @@
 			case UMLPackage.REDUCE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.REDUCE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.REDUCE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REDUCE_ACTION__RESULT :
 				return basicSetResult(null, msgs);
 			case UMLPackage.REDUCE_ACTION__COLLECTION :
@@ -556,6 +569,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REDUCE_ACTION__EANNOTATIONS :
@@ -651,15 +665,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REDUCE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__NAME :
 				setName((String) newValue);
@@ -669,7 +687,8 @@
 				return;
 			case UMLPackage.REDUCE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -685,35 +704,44 @@
 				return;
 			case UMLPackage.REDUCE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REDUCE_ACTION__REDUCER :
 				setReducer((Behavior) newValue);
@@ -736,6 +764,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDUCE_ACTION__EANNOTATIONS :
@@ -810,6 +839,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REDUCE_ACTION__EANNOTATIONS :
@@ -889,6 +919,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -915,6 +946,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs() || eIsSet(UMLPackage.REDUCE_ACTION__RESULT);
 	}
@@ -934,6 +966,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.REDUCE_ACTION__COLLECTION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RegionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RegionImpl.java
index b215a05..c326100 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RegionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RegionImpl.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RegionImpl.java,v 1.24 2006/11/14 18:02:16 khussey Exp $
+ * $Id: RegionImpl.java,v 1.25 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -24,6 +23,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -40,8 +40,13 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.State;
@@ -109,7 +114,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList subvertices = null;
+	protected EList<Vertex> subvertices = null;
 
 	/**
 	 * The cached value of the '{@link #getTransitions() <em>Transition</em>}' containment reference list.
@@ -119,7 +124,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList transitions = null;
+	protected EList<Transition> transitions = null;
 
 	/**
 	 * The cached value of the '{@link #getExtendedRegion() <em>Extended Region</em>}' reference.
@@ -145,6 +150,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REGION;
 	}
@@ -154,24 +160,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.REGION__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.REGION__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.REGION__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -191,9 +203,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -210,23 +220,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 
 			if (result == null) {
 				Classifier redefinitionContext = redefinitionContext();
-				List redefinitionContexts = redefinitionContext == null
-					? Collections.EMPTY_LIST
+				List<Classifier> redefinitionContexts = redefinitionContext == null
+					? Collections.<Classifier> emptyList()
 					: Collections.singletonList(redefinitionContext);
 				cache
 					.put(
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						result = new EcoreEList.UnmodifiableEList(
+						result = new EcoreEList.UnmodifiableEList<Classifier>(
 							this,
 							UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 							redefinitionContexts.size(), redefinitionContexts
@@ -237,10 +248,10 @@
 		}
 
 		Classifier redefinitionContext = redefinitionContext();
-		List redefinitionContexts = redefinitionContext == null
-			? Collections.EMPTY_LIST
+		List<Classifier> redefinitionContexts = redefinitionContext == null
+			? Collections.<Classifier> emptyList()
 			: Collections.singletonList(redefinitionContext);
-		return new EcoreEList.UnmodifiableEList(this,
+		return new EcoreEList.UnmodifiableEList<Classifier>(this,
 			UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 			redefinitionContexts.size(), redefinitionContexts.toArray());
 	}
@@ -261,9 +272,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -316,26 +325,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache
-					.put(eResource, this,
+					.put(
+						eResource,
+						this,
 						UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-						ownedMembers = new DerivedUnionEObjectEList(
+						ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 							NamedElement.class, this,
 							UMLPackage.REGION__OWNED_MEMBER,
 							OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.REGION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.REGION__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -343,9 +355,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubvertices() {
+	public EList<Vertex> getSubvertices() {
 		if (subvertices == null) {
-			subvertices = new EObjectContainmentWithInverseEList.Resolving(
+			subvertices = new EObjectContainmentWithInverseEList.Resolving<Vertex>(
 				Vertex.class, this, UMLPackage.REGION__SUBVERTEX,
 				UMLPackage.VERTEX__CONTAINER);
 		}
@@ -381,9 +393,7 @@
 	 */
 	public Vertex getSubvertex(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		subvertexLoop : for (Iterator i = getSubvertices().iterator(); i
-			.hasNext();) {
-			Vertex subvertex = (Vertex) i.next();
+		subvertexLoop : for (Vertex subvertex : getSubvertices()) {
 			if (eClass != null && !eClass.isInstance(subvertex))
 				continue subvertexLoop;
 			if (name != null && !(ignoreCase
@@ -402,9 +412,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTransitions() {
+	public EList<Transition> getTransitions() {
 		if (transitions == null) {
-			transitions = new EObjectContainmentWithInverseEList.Resolving(
+			transitions = new EObjectContainmentWithInverseEList.Resolving<Transition>(
 				Transition.class, this, UMLPackage.REGION__TRANSITION,
 				UMLPackage.TRANSITION__CONTAINER);
 		}
@@ -449,9 +459,7 @@
 	 */
 	public Transition getTransition(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		transitionLoop : for (Iterator i = getTransitions().iterator(); i
-			.hasNext();) {
-			Transition transition = (Transition) i.next();
+		transitionLoop : for (Transition transition : getTransitions()) {
 			if (eClass != null && !eClass.isInstance(transition))
 				continue transitionLoop;
 			if (name != null && !(ignoreCase
@@ -640,7 +648,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -651,7 +659,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -685,7 +693,7 @@
 	 * @generated
 	 */
 	public boolean validateInitialVertex(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RegionOperations.validateInitialVertex(this, diagnostics,
 			context);
 	}
@@ -696,7 +704,7 @@
 	 * @generated
 	 */
 	public boolean validateDeepHistoryVertex(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RegionOperations.validateDeepHistoryVertex(this, diagnostics,
 			context);
 	}
@@ -707,7 +715,7 @@
 	 * @generated
 	 */
 	public boolean validateShallowHistoryVertex(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RegionOperations.validateShallowHistoryVertex(this, diagnostics,
 			context);
 	}
@@ -717,7 +725,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return RegionOperations.validateOwned(this, diagnostics, context);
 	}
 
@@ -762,30 +771,32 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__SUBVERTEX :
-				return ((InternalEList) getSubvertices()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubvertices())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__TRANSITION :
-				return ((InternalEList) getTransitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTransitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.REGION__STATE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -803,35 +814,36 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REGION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REGION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REGION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REGION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REGION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REGION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REGION__SUBVERTEX :
-				return ((InternalEList) getSubvertices()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getSubvertices()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REGION__TRANSITION :
-				return ((InternalEList) getTransitions()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getTransitions()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REGION__STATE :
 				return basicSetState(null, msgs);
 			case UMLPackage.REGION__STATE_MACHINE :
@@ -845,6 +857,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -863,6 +876,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
@@ -936,15 +950,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REGION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REGION__NAME :
 				setName((String) newValue);
@@ -954,33 +972,39 @@
 				return;
 			case UMLPackage.REGION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REGION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.REGION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.REGION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.REGION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REGION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.REGION__SUBVERTEX :
 				getSubvertices().clear();
-				getSubvertices().addAll((Collection) newValue);
+				getSubvertices()
+					.addAll((Collection<? extends Vertex>) newValue);
 				return;
 			case UMLPackage.REGION__TRANSITION :
 				getTransitions().clear();
-				getTransitions().addAll((Collection) newValue);
+				getTransitions().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.REGION__STATE :
 				setState((State) newValue);
@@ -1000,6 +1024,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
@@ -1056,6 +1081,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REGION__EANNOTATIONS :
@@ -1118,7 +1144,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.REGION__IS_LEAF :
@@ -1139,7 +1166,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.REDEFINABLE_ELEMENT__IS_LEAF :
@@ -1160,6 +1188,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1219,6 +1248,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.REGION__SUBVERTEX)
@@ -1248,6 +1278,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.REGION__STATE)
 			|| eIsSet(UMLPackage.REGION__STATE_MACHINE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RelationshipImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RelationshipImpl.java
index 03ab085..c6d67ab 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RelationshipImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RelationshipImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RelationshipImpl.java,v 1.11 2006/11/14 18:02:18 khussey Exp $
+ * $Id: RelationshipImpl.java,v 1.12 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -55,6 +55,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.RELATIONSHIP;
 	}
@@ -64,23 +65,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRelatedElements() {
+	public EList<Element> getRelatedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList relatedElements = (EList) cache.get(eResource, this,
+			@SuppressWarnings("unchecked")
+			EList<Element> relatedElements = (EList<Element>) cache.get(
+				eResource, this,
 				UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT);
 			if (relatedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.RELATIONSHIP__RELATED_ELEMENT,
-					relatedElements = new DerivedUnionEObjectEList(
+					relatedElements = new DerivedUnionEObjectEList<Element>(
 						Element.class, this,
 						UMLPackage.RELATIONSHIP__RELATED_ELEMENT, null));
 			}
 			return relatedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.RELATIONSHIP__RELATED_ELEMENT, null);
 	}
 
@@ -89,6 +92,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.RELATIONSHIP__EANNOTATIONS :
@@ -112,6 +116,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.RELATIONSHIP__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveStructuralFeatureValueActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveStructuralFeatureValueActionImpl.java
index baa0877..dedc205 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveStructuralFeatureValueActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveStructuralFeatureValueActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveStructuralFeatureValueActionImpl.java,v 1.22 2006/11/14 18:02:17 khussey Exp $
+ * $Id: RemoveStructuralFeatureValueActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.RemoveStructuralFeatureValueAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuralFeature;
@@ -109,6 +118,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION;
 	}
@@ -118,20 +128,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(
+						inputs = new DerivedUnionEObjectEList<InputPin>(
 							InputPin.class,
 							this,
 							UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__INPUT,
@@ -139,7 +150,7 @@
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__INPUT,
 			INPUT_ESUBSETS);
 	}
@@ -307,7 +318,7 @@
 	 * @generated
 	 */
 	public boolean validateNonUniqueRemoval(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RemoveStructuralFeatureValueActionOperations
 			.validateNonUniqueRemoval(this, diagnostics, context);
 	}
@@ -317,18 +328,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__IN_STRUCTURED_NODE :
@@ -336,26 +348,26 @@
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__VALUE :
@@ -371,6 +383,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -470,15 +483,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__NAME :
 				setName((String) newValue);
@@ -488,7 +505,8 @@
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -504,35 +522,44 @@
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__STRUCTURAL_FEATURE :
 				setStructuralFeature((StructuralFeature) newValue);
@@ -558,6 +585,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -635,6 +663,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__EANNOTATIONS :
@@ -716,6 +745,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -745,6 +775,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION__REMOVE_AT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveVariableValueActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveVariableValueActionImpl.java
index 774ca5b..b7886a4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveVariableValueActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/RemoveVariableValueActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveVariableValueActionImpl.java,v 1.22 2006/11/14 18:02:20 khussey Exp $
+ * $Id: RemoveVariableValueActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.RemoveVariableValueAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -109,6 +118,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REMOVE_VARIABLE_VALUE_ACTION;
 	}
@@ -118,22 +128,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -287,7 +299,7 @@
 	 * @generated
 	 */
 	public boolean validateUnlimitedNatural(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RemoveVariableValueActionOperations.validateUnlimitedNatural(
 			this, diagnostics, context);
 	}
@@ -297,18 +309,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__IN_STRUCTURED_NODE :
@@ -316,26 +329,26 @@
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__VALUE :
 				return basicSetValue(null, msgs);
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__REMOVE_AT :
@@ -349,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -444,15 +458,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__NAME :
 				setName((String) newValue);
@@ -462,7 +480,8 @@
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -478,35 +497,44 @@
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__VARIABLE :
 				setVariable((Variable) newValue);
@@ -529,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -603,6 +632,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__EANNOTATIONS :
@@ -682,6 +712,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -710,6 +741,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.REMOVE_VARIABLE_VALUE_ACTION__REMOVE_AT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReplyActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReplyActionImpl.java
index 271129f..9cac69b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReplyActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ReplyActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReplyActionImpl.java,v 1.22 2006/11/14 18:02:20 khussey Exp $
+ * $Id: ReplyActionImpl.java,v 1.23 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ReplyAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -96,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList replyValues = null;
+	protected EList<InputPin> replyValues = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,6 +120,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.REPLY_ACTION;
 	}
@@ -121,21 +130,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
-						UMLPackage.REPLY_ACTION__INPUT, INPUT_ESUBSETS));
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this, UMLPackage.REPLY_ACTION__INPUT,
+						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.REPLY_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -306,10 +317,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getReplyValues() {
+	public EList<InputPin> getReplyValues() {
 		if (replyValues == null) {
-			replyValues = new EObjectContainmentEList.Resolving(InputPin.class,
-				this, UMLPackage.REPLY_ACTION__REPLY_VALUE);
+			replyValues = new EObjectContainmentEList.Resolving<InputPin>(
+				InputPin.class, this, UMLPackage.REPLY_ACTION__REPLY_VALUE);
 		}
 		return replyValues;
 	}
@@ -354,9 +365,7 @@
 	 */
 	public InputPin getReplyValue(String name, Type type, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		replyValueLoop : for (Iterator i = getReplyValues().iterator(); i
-			.hasNext();) {
-			InputPin replyValue = (InputPin) i.next();
+		replyValueLoop : for (InputPin replyValue : getReplyValues()) {
 			if (eClass != null && !eClass.isInstance(replyValue))
 				continue replyValueLoop;
 			if (name != null && !(ignoreCase
@@ -378,7 +387,7 @@
 	 * @generated
 	 */
 	public boolean validatePinsMatchParameter(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ReplyActionOperations.validatePinsMatchParameter(this,
 			diagnostics, context);
 	}
@@ -389,7 +398,7 @@
 	 * @generated
 	 */
 	public boolean validateEventOnReplyToCallTrigger(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return ReplyActionOperations.validateEventOnReplyToCallTrigger(this,
 			diagnostics, context);
 	}
@@ -399,18 +408,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.REPLY_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.REPLY_ACTION__IN_STRUCTURED_NODE :
@@ -418,31 +428,31 @@
 			case UMLPackage.REPLY_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.REPLY_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.REPLY_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.REPLY_ACTION__RETURN_INFORMATION :
 				return basicSetReturnInformation(null, msgs);
 			case UMLPackage.REPLY_ACTION__REPLY_VALUE :
-				return ((InternalEList) getReplyValues()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getReplyValues()).basicRemove(
+					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -452,6 +462,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.REPLY_ACTION__EANNOTATIONS :
@@ -541,15 +552,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.REPLY_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__NAME :
 				setName((String) newValue);
@@ -559,7 +574,8 @@
 				return;
 			case UMLPackage.REPLY_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -575,35 +591,44 @@
 				return;
 			case UMLPackage.REPLY_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.REPLY_ACTION__REPLY_TO_CALL :
 				setReplyToCall((Trigger) newValue);
@@ -613,7 +638,8 @@
 				return;
 			case UMLPackage.REPLY_ACTION__REPLY_VALUE :
 				getReplyValues().clear();
-				getReplyValues().addAll((Collection) newValue);
+				getReplyValues().addAll(
+					(Collection<? extends InputPin>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -624,6 +650,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REPLY_ACTION__EANNOTATIONS :
@@ -695,6 +722,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.REPLY_ACTION__EANNOTATIONS :
@@ -784,6 +812,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.REPLY_ACTION__RETURN_INFORMATION)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendObjectActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendObjectActionImpl.java
index 8bf3c88..5a5c9da 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendObjectActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendObjectActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendObjectActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: SendObjectActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,6 +19,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,7 +34,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.SendObjectAction;
 import org.eclipse.uml2.uml.StringExpression;
@@ -95,6 +104,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SEND_OBJECT_ACTION;
 	}
@@ -104,21 +114,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.SEND_OBJECT_ACTION__INPUT, INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.SEND_OBJECT_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -356,18 +368,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SEND_OBJECT_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__IN_STRUCTURED_NODE :
@@ -375,29 +388,29 @@
 			case UMLPackage.SEND_OBJECT_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__TARGET :
 				return basicSetTarget(null, msgs);
 			case UMLPackage.SEND_OBJECT_ACTION__REQUEST :
@@ -411,6 +424,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SEND_OBJECT_ACTION__EANNOTATIONS :
@@ -504,15 +518,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SEND_OBJECT_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__NAME :
 				setName((String) newValue);
@@ -522,7 +540,8 @@
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -538,39 +557,49 @@
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.SEND_OBJECT_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -590,6 +619,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_OBJECT_ACTION__EANNOTATIONS :
@@ -664,6 +694,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_OBJECT_ACTION__EANNOTATIONS :
@@ -755,6 +786,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.SEND_OBJECT_ACTION__TARGET);
@@ -765,8 +797,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getArguments() {
-		return new EcoreEList.UnmodifiableEList(this,
+	@Override
+	public EList<InputPin> getArguments() {
+		return new EcoreEList.UnmodifiableEList<InputPin>(this,
 			UMLPackage.Literals.INVOCATION_ACTION__ARGUMENT, 0,
 			Collections.EMPTY_LIST.toArray());
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendOperationEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendOperationEventImpl.java
index f8cb9fa..5fffc17 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendOperationEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendOperationEventImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendOperationEventImpl.java,v 1.11 2006/11/14 18:02:19 khussey Exp $
+ * $Id: SendOperationEventImpl.java,v 1.12 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.SendOperationEvent;
 import org.eclipse.uml2.uml.StringExpression;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SEND_OPERATION_EVENT;
 	}
@@ -121,6 +125,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SEND_OPERATION_EVENT__EANNOTATIONS :
@@ -170,15 +175,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SEND_OPERATION_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SEND_OPERATION_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SEND_OPERATION_EVENT__NAME :
 				setName((String) newValue);
@@ -188,7 +197,8 @@
 				return;
 			case UMLPackage.SEND_OPERATION_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SEND_OPERATION_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -211,6 +221,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_OPERATION_EVENT__EANNOTATIONS :
@@ -249,6 +260,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_OPERATION_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalActionImpl.java
index 9bfc95f..6812b3c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendSignalActionImpl.java,v 1.22 2006/11/14 18:02:19 khussey Exp $
+ * $Id: SendSignalActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.SendSignalAction;
 import org.eclipse.uml2.uml.Signal;
@@ -100,6 +109,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SEND_SIGNAL_ACTION;
 	}
@@ -109,21 +119,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.SEND_SIGNAL_ACTION__INPUT, INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.SEND_SIGNAL_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -285,7 +297,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNumberOrder(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNumberOrder(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return SendSignalActionOperations.validateNumberOrder(this,
 			diagnostics, context);
 	}
@@ -296,7 +309,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeOrderingMultiplicity(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return SendSignalActionOperations.validateTypeOrderingMultiplicity(
 			this, diagnostics, context);
 	}
@@ -306,18 +319,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__IN_STRUCTURED_NODE :
@@ -325,29 +339,29 @@
 			case UMLPackage.SEND_SIGNAL_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__ARGUMENT :
-				return ((InternalEList) getArguments()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getArguments()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEND_SIGNAL_ACTION__TARGET :
 				return basicSetTarget(null, msgs);
 		}
@@ -359,6 +373,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_ACTION__EANNOTATIONS :
@@ -452,15 +467,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__NAME :
 				setName((String) newValue);
@@ -470,7 +489,8 @@
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -486,39 +506,49 @@
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__ARGUMENT :
 				getArguments().clear();
-				getArguments().addAll((Collection) newValue);
+				getArguments()
+					.addAll((Collection<? extends InputPin>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_ACTION__ON_PORT :
 				setOnPort((Port) newValue);
@@ -538,6 +568,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_ACTION__EANNOTATIONS :
@@ -612,6 +643,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_ACTION__EANNOTATIONS :
@@ -703,6 +735,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.SEND_SIGNAL_ACTION__TARGET);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalEventImpl.java
index d07ee53..5150c0c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SendSignalEventImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendSignalEventImpl.java,v 1.11 2006/11/14 18:02:18 khussey Exp $
+ * $Id: SendSignalEventImpl.java,v 1.12 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.SendSignalEvent;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.StringExpression;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SEND_SIGNAL_EVENT;
 	}
@@ -119,6 +123,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_EVENT__EANNOTATIONS :
@@ -168,15 +173,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_EVENT__NAME :
 				setName((String) newValue);
@@ -186,7 +195,8 @@
 				return;
 			case UMLPackage.SEND_SIGNAL_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SEND_SIGNAL_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -209,6 +219,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_EVENT__EANNOTATIONS :
@@ -247,6 +258,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEND_SIGNAL_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SequenceNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SequenceNodeImpl.java
index 5b7d50f..0979ea7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SequenceNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SequenceNodeImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SequenceNodeImpl.java,v 1.19 2006/05/08 17:46:11 khussey Exp $
+ * $Id: SequenceNodeImpl.java,v 1.20 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -25,11 +25,22 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.ExecutableNode;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.SequenceNode;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.Variable;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 /**
@@ -57,7 +68,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList executableNodes = null;
+	protected EList<ExecutableNode> executableNodes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -73,6 +84,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SEQUENCE_NODE;
 	}
@@ -82,9 +94,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExecutableNodes() {
+	public EList<ExecutableNode> getExecutableNodes() {
 		if (executableNodes == null) {
-			executableNodes = new EObjectContainmentEList.Resolving(
+			executableNodes = new EObjectContainmentEList.Resolving<ExecutableNode>(
 				ExecutableNode.class, this,
 				UMLPackage.SEQUENCE_NODE__EXECUTABLE_NODE);
 		}
@@ -120,9 +132,7 @@
 	 */
 	public ExecutableNode getExecutableNode(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		executableNodeLoop : for (Iterator i = getExecutableNodes().iterator(); i
-			.hasNext();) {
-			ExecutableNode executableNode = (ExecutableNode) i.next();
+		executableNodeLoop : for (ExecutableNode executableNode : getExecutableNodes()) {
 			if (eClass != null && !eClass.isInstance(executableNode))
 				continue executableNodeLoop;
 			if (name != null && !(ignoreCase
@@ -150,18 +160,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SEQUENCE_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.SEQUENCE_NODE__IN_STRUCTURED_NODE :
@@ -169,46 +180,48 @@
 			case UMLPackage.SEQUENCE_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.SEQUENCE_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.SEQUENCE_NODE__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.SEQUENCE_NODE__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SEQUENCE_NODE__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.SEQUENCE_NODE__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.SEQUENCE_NODE__EXECUTABLE_NODE :
-				return ((InternalEList) getExecutableNodes()).basicRemove(
+				return ((InternalEList<?>) getExecutableNodes()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -219,6 +232,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SEQUENCE_NODE__EANNOTATIONS :
@@ -336,15 +350,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SEQUENCE_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__NAME :
 				setName((String) newValue);
@@ -354,7 +372,8 @@
 				return;
 			case UMLPackage.SEQUENCE_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -370,69 +389,85 @@
 				return;
 			case UMLPackage.SEQUENCE_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__MUST_ISOLATE :
 				setMustIsolate(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.SEQUENCE_NODE__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.SEQUENCE_NODE__EXECUTABLE_NODE :
 				getExecutableNodes().clear();
-				getExecutableNodes().addAll((Collection) newValue);
+				getExecutableNodes().addAll(
+					(Collection<? extends ExecutableNode>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -443,6 +478,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEQUENCE_NODE__EANNOTATIONS :
@@ -532,6 +568,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SEQUENCE_NODE__EANNOTATIONS :
@@ -635,8 +672,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNodes() {
-		return getExecutableNodes();
+	@Override
+	public EList<ActivityNode> getNodes() {
+		@SuppressWarnings("unchecked")
+		EList<ActivityNode> executableNode = (EList<ActivityNode>) ((EList<?>) getExecutableNodes());
+		return executableNode;
 	}
 
 	/**
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalEventImpl.java
index 8e974fd..43bad1b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalEventImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SignalEventImpl.java,v 1.11 2006/11/14 18:02:18 khussey Exp $
+ * $Id: SignalEventImpl.java,v 1.12 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.SignalEvent;
 import org.eclipse.uml2.uml.StringExpression;
@@ -68,6 +71,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SIGNAL_EVENT;
 	}
@@ -119,6 +123,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL_EVENT__EANNOTATIONS :
@@ -168,15 +173,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SIGNAL_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SIGNAL_EVENT__NAME :
 				setName((String) newValue);
@@ -186,7 +195,8 @@
 				return;
 			case UMLPackage.SIGNAL_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SIGNAL_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -209,6 +219,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL_EVENT__EANNOTATIONS :
@@ -247,6 +258,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL_EVENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalImpl.java
index c9dc34c..2f8ad12 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SignalImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SignalImpl.java,v 1.25 2006/11/14 18:02:20 khussey Exp $
+ * $Id: SignalImpl.java,v 1.26 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -29,15 +29,26 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Signal;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.SignalOperations;
@@ -69,7 +80,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -85,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SIGNAL;
 	}
@@ -94,24 +106,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
-				cache
-					.put(eResource, this,
-						UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-						attributes = new DerivedUnionEObjectEList(
-							Property.class, this, UMLPackage.SIGNAL__ATTRIBUTE,
-							ATTRIBUTE_ESUBSETS));
+				cache.put(eResource, this,
+					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this, UMLPackage.SIGNAL__ATTRIBUTE,
+						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.SIGNAL__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -120,26 +132,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache
-					.put(eResource, this,
+					.put(
+						eResource,
+						this,
 						UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-						ownedMembers = new DerivedUnionEObjectEList(
+						ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 							NamedElement.class, this,
 							UMLPackage.SIGNAL__OWNED_MEMBER,
 							OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.SIGNAL__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.SIGNAL__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -147,9 +162,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this, UMLPackage.SIGNAL__OWNED_ATTRIBUTE);
 		}
 		return ownedAttributes;
@@ -195,9 +210,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -229,58 +242,59 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SIGNAL__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.SIGNAL__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.SIGNAL__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.SIGNAL__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.SIGNAL__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.SIGNAL__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SIGNAL__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.SIGNAL__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -291,6 +305,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL__EANNOTATIONS :
@@ -398,15 +413,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SIGNAL__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SIGNAL__NAME :
 				setName((String) newValue);
@@ -416,22 +435,26 @@
 				return;
 			case UMLPackage.SIGNAL__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SIGNAL__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.SIGNAL__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.SIGNAL__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.SIGNAL__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.SIGNAL__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -447,7 +470,8 @@
 				return;
 			case UMLPackage.SIGNAL__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.SIGNAL__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -457,42 +481,50 @@
 				return;
 			case UMLPackage.SIGNAL__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.SIGNAL__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.SIGNAL__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.SIGNAL__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.SIGNAL__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.SIGNAL__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.SIGNAL__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.SIGNAL__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.SIGNAL__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.SIGNAL__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -503,6 +535,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL__EANNOTATIONS :
@@ -592,6 +625,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SIGNAL__EANNOTATIONS :
@@ -694,6 +728,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.SIGNAL__OWNED_ATTRIBUTE);
@@ -716,6 +751,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.SIGNAL__OWNED_ATTRIBUTE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SlotImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SlotImpl.java
index 2f2a72f..bf814ca 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SlotImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SlotImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SlotImpl.java,v 1.18 2006/11/14 18:02:17 khussey Exp $
+ * $Id: SlotImpl.java,v 1.19 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,6 +33,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InstanceSpecification;
 import org.eclipse.uml2.uml.Slot;
@@ -80,7 +81,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList values = null;
+	protected EList<ValueSpecification> values = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -96,6 +97,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SLOT;
 	}
@@ -105,23 +107,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.SLOT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.SLOT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.SLOT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -238,9 +241,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getValues() {
+	public EList<ValueSpecification> getValues() {
 		if (values == null) {
-			values = new EObjectContainmentEList.Resolving(
+			values = new EObjectContainmentEList.Resolving<ValueSpecification>(
 				ValueSpecification.class, this, UMLPackage.SLOT__VALUE);
 		}
 		return values;
@@ -277,8 +280,7 @@
 	 */
 	public ValueSpecification getValue(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		valueLoop : for (Iterator i = getValues().iterator(); i.hasNext();) {
-			ValueSpecification value = (ValueSpecification) i.next();
+		valueLoop : for (ValueSpecification value : getValues()) {
 			if (eClass != null && !eClass.isInstance(value))
 				continue valueLoop;
 			if (name != null && !(ignoreCase
@@ -299,12 +301,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.SLOT__OWNING_INSTANCE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -319,18 +323,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SLOT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SLOT__VALUE :
-				return ((InternalEList) getValues())
-					.basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getValues()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.SLOT__OWNING_INSTANCE :
 				return basicSetOwningInstance(null, msgs);
 		}
@@ -342,6 +347,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -358,6 +364,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
@@ -389,22 +396,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SLOT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SLOT__DEFINING_FEATURE :
 				setDefiningFeature((StructuralFeature) newValue);
 				return;
 			case UMLPackage.SLOT__VALUE :
 				getValues().clear();
-				getValues().addAll((Collection) newValue);
+				getValues().addAll(
+					(Collection<? extends ValueSpecification>) newValue);
 				return;
 			case UMLPackage.SLOT__OWNING_INSTANCE :
 				setOwningInstance((InstanceSpecification) newValue);
@@ -418,6 +430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
@@ -444,6 +457,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SLOT__EANNOTATIONS :
@@ -506,6 +520,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || eIsSet(UMLPackage.SLOT__OWNING_INSTANCE);
 	}
@@ -515,6 +530,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements() || eIsSet(UMLPackage.SLOT__VALUE);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StartClassifierBehaviorActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StartClassifierBehaviorActionImpl.java
index d72f56b..bf020cd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StartClassifierBehaviorActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StartClassifierBehaviorActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StartClassifierBehaviorActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: StartClassifierBehaviorActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StartClassifierBehaviorAction;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -87,6 +96,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.START_CLASSIFIER_BEHAVIOR_ACTION;
 	}
@@ -96,22 +106,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -236,7 +248,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StartClassifierBehaviorActionOperations.validateMultiplicity(
 			this, diagnostics, context);
 	}
@@ -247,7 +260,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeHasClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StartClassifierBehaviorActionOperations
 			.validateTypeHasClassifier(this, diagnostics, context);
 	}
@@ -257,18 +270,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__IN_STRUCTURED_NODE :
@@ -276,26 +290,26 @@
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 		}
@@ -307,6 +321,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__EANNOTATIONS :
@@ -390,15 +405,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__NAME :
 				setName((String) newValue);
@@ -408,7 +427,8 @@
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -424,35 +444,44 @@
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OBJECT :
 				setObject((InputPin) newValue);
@@ -466,6 +495,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__EANNOTATIONS :
@@ -531,6 +561,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__EANNOTATIONS :
@@ -614,6 +645,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateImpl.java
index f641790..bc4e4cb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateImpl.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateImpl.java,v 1.29 2006/11/14 18:02:20 khussey Exp $
+ * $Id: StateImpl.java,v 1.30 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -24,6 +23,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -43,11 +43,15 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectionPointReference;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Pseudostate;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.Region;
@@ -130,7 +134,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList outgoings = null;
+	protected EList<Transition> outgoings = null;
 
 	/**
 	 * The cached value of the '{@link #getIncomings() <em>Incoming</em>}' reference list.
@@ -140,7 +144,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList incomings = null;
+	protected EList<Transition> incomings = null;
 
 	/**
 	 * The default value of the '{@link #isComposite() <em>Is Composite</em>}' attribute.
@@ -200,7 +204,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList connections = null;
+	protected EList<ConnectionPointReference> connections = null;
 
 	/**
 	 * The cached value of the '{@link #getConnectionPoints() <em>Connection Point</em>}' containment reference list.
@@ -210,7 +214,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList connectionPoints = null;
+	protected EList<Pseudostate> connectionPoints = null;
 
 	/**
 	 * The cached value of the '{@link #getRedefinedState() <em>Redefined State</em>}' reference.
@@ -270,7 +274,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList deferrableTriggers = null;
+	protected EList<Trigger> deferrableTriggers = null;
 
 	/**
 	 * The cached value of the '{@link #getRegions() <em>Region</em>}' containment reference list.
@@ -280,7 +284,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList regions = null;
+	protected EList<Region> regions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -296,6 +300,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STATE;
 	}
@@ -305,24 +310,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.STATE__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.STATE__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.STATE__REDEFINED_ELEMENT, REDEFINED_ELEMENT_ESUBSETS);
 	}
 
@@ -342,9 +353,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -361,23 +370,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 
 			if (result == null) {
 				Classifier redefinitionContext = redefinitionContext();
-				List redefinitionContexts = redefinitionContext == null
-					? Collections.EMPTY_LIST
+				List<Classifier> redefinitionContexts = redefinitionContext == null
+					? Collections.<Classifier> emptyList()
 					: Collections.singletonList(redefinitionContext);
 				cache
 					.put(
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						result = new EcoreEList.UnmodifiableEList(
+						result = new EcoreEList.UnmodifiableEList<Classifier>(
 							this,
 							UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 							redefinitionContexts.size(), redefinitionContexts
@@ -388,10 +398,10 @@
 		}
 
 		Classifier redefinitionContext = redefinitionContext();
-		List redefinitionContexts = redefinitionContext == null
-			? Collections.EMPTY_LIST
+		List<Classifier> redefinitionContexts = redefinitionContext == null
+			? Collections.<Classifier> emptyList()
 			: Collections.singletonList(redefinitionContext);
-		return new EcoreEList.UnmodifiableEList(this,
+		return new EcoreEList.UnmodifiableEList<Classifier>(this,
 			UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 			redefinitionContexts.size(), redefinitionContexts.toArray());
 	}
@@ -412,9 +422,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -479,10 +487,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutgoings() {
+	public EList<Transition> getOutgoings() {
 		if (outgoings == null) {
-			outgoings = new EObjectWithInverseResolvingEList(Transition.class,
-				this, UMLPackage.STATE__OUTGOING, UMLPackage.TRANSITION__SOURCE);
+			outgoings = new EObjectWithInverseResolvingEList<Transition>(
+				Transition.class, this, UMLPackage.STATE__OUTGOING,
+				UMLPackage.TRANSITION__SOURCE);
 		}
 		return outgoings;
 	}
@@ -502,8 +511,7 @@
 	 * @generated
 	 */
 	public Transition getOutgoing(String name, boolean ignoreCase, EClass eClass) {
-		outgoingLoop : for (Iterator i = getOutgoings().iterator(); i.hasNext();) {
-			Transition outgoing = (Transition) i.next();
+		outgoingLoop : for (Transition outgoing : getOutgoings()) {
 			if (eClass != null && !eClass.isInstance(outgoing))
 				continue outgoingLoop;
 			if (name != null && !(ignoreCase
@@ -520,10 +528,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getIncomings() {
+	public EList<Transition> getIncomings() {
 		if (incomings == null) {
-			incomings = new EObjectWithInverseResolvingEList(Transition.class,
-				this, UMLPackage.STATE__INCOMING, UMLPackage.TRANSITION__TARGET);
+			incomings = new EObjectWithInverseResolvingEList<Transition>(
+				Transition.class, this, UMLPackage.STATE__INCOMING,
+				UMLPackage.TRANSITION__TARGET);
 		}
 		return incomings;
 	}
@@ -543,8 +552,7 @@
 	 * @generated
 	 */
 	public Transition getIncoming(String name, boolean ignoreCase, EClass eClass) {
-		incomingLoop : for (Iterator i = getIncomings().iterator(); i.hasNext();) {
-			Transition incoming = (Transition) i.next();
+		incomingLoop : for (Transition incoming : getIncomings()) {
 			if (eClass != null && !eClass.isInstance(incoming))
 				continue incomingLoop;
 			if (name != null && !(ignoreCase
@@ -623,24 +631,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.STATE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STATE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STATE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -648,23 +657,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.STATE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this, UMLPackage.STATE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.STATE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -788,9 +798,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConnections() {
+	public EList<ConnectionPointReference> getConnections() {
 		if (connections == null) {
-			connections = new EObjectContainmentWithInverseEList.Resolving(
+			connections = new EObjectContainmentWithInverseEList.Resolving<ConnectionPointReference>(
 				ConnectionPointReference.class, this,
 				UMLPackage.STATE__CONNECTION,
 				UMLPackage.CONNECTION_POINT_REFERENCE__STATE);
@@ -827,10 +837,7 @@
 	 */
 	public ConnectionPointReference getConnection(String name,
 			boolean ignoreCase, boolean createOnDemand) {
-		connectionLoop : for (Iterator i = getConnections().iterator(); i
-			.hasNext();) {
-			ConnectionPointReference connection = (ConnectionPointReference) i
-				.next();
+		connectionLoop : for (ConnectionPointReference connection : getConnections()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(connection.getName())
 				: name.equals(connection.getName())))
@@ -847,9 +854,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConnectionPoints() {
+	public EList<Pseudostate> getConnectionPoints() {
 		if (connectionPoints == null) {
-			connectionPoints = new EObjectContainmentWithInverseEList.Resolving(
+			connectionPoints = new EObjectContainmentWithInverseEList.Resolving<Pseudostate>(
 				Pseudostate.class, this, UMLPackage.STATE__CONNECTION_POINT,
 				UMLPackage.PSEUDOSTATE__STATE);
 		}
@@ -885,9 +892,7 @@
 	 */
 	public Pseudostate getConnectionPoint(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		connectionPointLoop : for (Iterator i = getConnectionPoints()
-			.iterator(); i.hasNext();) {
-			Pseudostate connectionPoint = (Pseudostate) i.next();
+		connectionPointLoop : for (Pseudostate connectionPoint : getConnectionPoints()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(connectionPoint.getName())
 				: name.equals(connectionPoint.getName())))
@@ -1352,9 +1357,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getDeferrableTriggers() {
+	public EList<Trigger> getDeferrableTriggers() {
 		if (deferrableTriggers == null) {
-			deferrableTriggers = new EObjectContainmentEList.Resolving(
+			deferrableTriggers = new EObjectContainmentEList.Resolving<Trigger>(
 				Trigger.class, this, UMLPackage.STATE__DEFERRABLE_TRIGGER);
 		}
 		return deferrableTriggers;
@@ -1389,9 +1394,7 @@
 	 */
 	public Trigger getDeferrableTrigger(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		deferrableTriggerLoop : for (Iterator i = getDeferrableTriggers()
-			.iterator(); i.hasNext();) {
-			Trigger deferrableTrigger = (Trigger) i.next();
+		deferrableTriggerLoop : for (Trigger deferrableTrigger : getDeferrableTriggers()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(deferrableTrigger.getName())
 				: name.equals(deferrableTrigger.getName())))
@@ -1408,9 +1411,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRegions() {
+	public EList<Region> getRegions() {
 		if (regions == null) {
-			regions = new EObjectContainmentWithInverseEList.Resolving(
+			regions = new EObjectContainmentWithInverseEList.Resolving<Region>(
 				Region.class, this, UMLPackage.STATE__REGION,
 				UMLPackage.REGION__STATE);
 		}
@@ -1446,8 +1449,7 @@
 	 */
 	public Region getRegion(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		regionLoop : for (Iterator i = getRegions().iterator(); i.hasNext();) {
-			Region region = (Region) i.next();
+		regionLoop : for (Region region : getRegions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(region.getName())
 				: name.equals(region.getName())))
@@ -1465,7 +1467,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -1476,7 +1478,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -1510,7 +1512,7 @@
 	 * @generated
 	 */
 	public boolean validateSubmachineStates(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateOperations.validateSubmachineStates(this, diagnostics,
 			context);
 	}
@@ -1521,7 +1523,7 @@
 	 * @generated
 	 */
 	public boolean validateDestinationsOrSourcesOfTransitions(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return StateOperations.validateDestinationsOrSourcesOfTransitions(this,
 			diagnostics, context);
 	}
@@ -1532,7 +1534,7 @@
 	 * @generated
 	 */
 	public boolean validateSubmachineOrRegions(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateOperations.validateSubmachineOrRegions(this, diagnostics,
 			context);
 	}
@@ -1543,7 +1545,7 @@
 	 * @generated
 	 */
 	public boolean validateCompositeStates(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateOperations.validateCompositeStates(this, diagnostics,
 			context);
 	}
@@ -1553,7 +1555,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEntryOrExit(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEntryOrExit(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StateOperations.validateEntryOrExit(this, diagnostics, context);
 	}
 
@@ -1589,29 +1592,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__CONTAINER :
 				if (eInternalContainer() != null)
@@ -1624,13 +1629,14 @@
 						StateMachine.class, msgs);
 				return basicSetSubmachine((StateMachine) otherEnd, msgs);
 			case UMLPackage.STATE__CONNECTION :
-				return ((InternalEList) getConnections()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConnections())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConnectionPoints())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE__REGION :
-				return ((InternalEList) getRegions()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getRegions())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -1640,44 +1646,45 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STATE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STATE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STATE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STATE__CONTAINER :
 				return basicSetContainer(null, msgs);
 			case UMLPackage.STATE__SUBMACHINE :
 				return basicSetSubmachine(null, msgs);
 			case UMLPackage.STATE__CONNECTION :
-				return ((InternalEList) getConnections()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getConnections()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STATE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicRemove(
+				return ((InternalEList<?>) getConnectionPoints()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE__STATE_INVARIANT :
 				return basicSetStateInvariant(null, msgs);
@@ -1688,10 +1695,10 @@
 			case UMLPackage.STATE__DO_ACTIVITY :
 				return basicSetDoActivity(null, msgs);
 			case UMLPackage.STATE__DEFERRABLE_TRIGGER :
-				return ((InternalEList) getDeferrableTriggers()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getDeferrableTriggers())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE__REGION :
-				return ((InternalEList) getRegions()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getRegions()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -1702,6 +1709,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -1717,6 +1725,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
@@ -1830,15 +1839,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STATE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STATE__NAME :
 				setName((String) newValue);
@@ -1848,33 +1861,39 @@
 				return;
 			case UMLPackage.STATE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STATE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.STATE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.STATE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.STATE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STATE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.STATE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.STATE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.STATE__CONTAINER :
 				setContainer((Region) newValue);
@@ -1884,11 +1903,13 @@
 				return;
 			case UMLPackage.STATE__CONNECTION :
 				getConnections().clear();
-				getConnections().addAll((Collection) newValue);
+				getConnections().addAll(
+					(Collection<? extends ConnectionPointReference>) newValue);
 				return;
 			case UMLPackage.STATE__CONNECTION_POINT :
 				getConnectionPoints().clear();
-				getConnectionPoints().addAll((Collection) newValue);
+				getConnectionPoints().addAll(
+					(Collection<? extends Pseudostate>) newValue);
 				return;
 			case UMLPackage.STATE__REDEFINED_STATE :
 				setRedefinedState((State) newValue);
@@ -1907,11 +1928,12 @@
 				return;
 			case UMLPackage.STATE__DEFERRABLE_TRIGGER :
 				getDeferrableTriggers().clear();
-				getDeferrableTriggers().addAll((Collection) newValue);
+				getDeferrableTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.STATE__REGION :
 				getRegions().clear();
-				getRegions().addAll((Collection) newValue);
+				getRegions().addAll((Collection<? extends Region>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1922,6 +1944,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
@@ -2002,6 +2025,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE__EANNOTATIONS :
@@ -2089,7 +2113,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.STATE__IS_LEAF :
@@ -2122,7 +2147,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.REDEFINABLE_ELEMENT__IS_LEAF :
@@ -2155,6 +2181,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -2204,6 +2231,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.STATE__CONTAINER);
 	}
@@ -2225,6 +2253,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.STATE__CONNECTION)
@@ -2251,6 +2280,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.STATE__CONNECTION_POINT)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateInvariantImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateInvariantImpl.java
index c09faf5..712de7c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateInvariantImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateInvariantImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateInvariantImpl.java,v 1.21 2006/11/14 18:02:18 khussey Exp $
+ * $Id: StateInvariantImpl.java,v 1.22 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,8 +32,11 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.GeneralOrdering;
 import org.eclipse.uml2.uml.Interaction;
 import org.eclipse.uml2.uml.InteractionOperand;
 import org.eclipse.uml2.uml.Lifeline;
@@ -85,6 +88,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STATE_INVARIANT;
 	}
@@ -94,23 +98,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.STATE_INVARIANT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.STATE_INVARIANT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.STATE_INVARIANT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -229,9 +235,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getCovereds() {
+	public EList<Lifeline> getCovereds() {
 		if (covereds == null) {
-			covereds = new EObjectWithInverseResolvingEList.ManyInverse(
+			covereds = new EObjectWithInverseResolvingEList.ManyInverse<Lifeline>(
 				Lifeline.class, this, UMLPackage.STATE_INVARIANT__COVERED,
 				UMLPackage.LIFELINE__COVERED_BY);
 		}
@@ -243,6 +249,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Lifeline getCovered(String name) {
 		return getCovered(name, false);
 	}
@@ -252,9 +259,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Lifeline getCovered(String name, boolean ignoreCase) {
-		coveredLoop : for (Iterator i = getCovereds().iterator(); i.hasNext();) {
-			Lifeline covered = (Lifeline) i.next();
+		coveredLoop : for (Lifeline covered : getCovereds()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(covered.getName())
 				: name.equals(covered.getName())))
@@ -278,25 +285,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STATE_INVARIANT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_INVARIANT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_INVARIANT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE_INVARIANT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STATE_INVARIANT__COVERED :
-				return ((InternalEList) getCovereds()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getCovereds()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STATE_INVARIANT__GENERAL_ORDERING :
-				return ((InternalEList) getGeneralOrderings()).basicRemove(
+				return ((InternalEList<?>) getGeneralOrderings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_INVARIANT__ENCLOSING_INTERACTION :
 				return basicSetEnclosingInteraction(null, msgs);
@@ -313,6 +321,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STATE_INVARIANT__EANNOTATIONS :
@@ -366,15 +375,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STATE_INVARIANT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__NAME :
 				setName((String) newValue);
@@ -384,18 +397,20 @@
 				return;
 			case UMLPackage.STATE_INVARIANT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__COVERED :
 				getCovereds().clear();
-				getCovereds().addAll((Collection) newValue);
+				getCovereds().addAll((Collection<? extends Lifeline>) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__GENERAL_ORDERING :
 				getGeneralOrderings().clear();
-				getGeneralOrderings().addAll((Collection) newValue);
+				getGeneralOrderings().addAll(
+					(Collection<? extends GeneralOrdering>) newValue);
 				return;
 			case UMLPackage.STATE_INVARIANT__ENCLOSING_INTERACTION :
 				setEnclosingInteraction((Interaction) newValue);
@@ -415,6 +430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE_INVARIANT__EANNOTATIONS :
@@ -459,6 +475,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE_INVARIANT__EANNOTATIONS :
@@ -517,6 +534,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.STATE_INVARIANT__INVARIANT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateMachineImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateMachineImpl.java
index 80988d4..5ede7c7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateMachineImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StateMachineImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateMachineImpl.java,v 1.26 2006/11/14 18:02:18 khussey Exp $
+ * $Id: StateMachineImpl.java,v 1.27 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,18 +37,38 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterSet;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Pseudostate;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StateMachine;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.StateMachineOperations;
@@ -83,7 +103,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList regions = null;
+	protected EList<Region> regions = null;
 
 	/**
 	 * The cached value of the '{@link #getSubmachineStates() <em>Submachine State</em>}' reference list.
@@ -93,7 +113,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList submachineStates = null;
+	protected EList<State> submachineStates = null;
 
 	/**
 	 * The cached value of the '{@link #getConnectionPoints() <em>Connection Point</em>}' containment reference list.
@@ -103,7 +123,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList connectionPoints = null;
+	protected EList<Pseudostate> connectionPoints = null;
 
 	/**
 	 * The cached value of the '{@link #getExtendedStateMachines() <em>Extended State Machine</em>}' reference list.
@@ -113,7 +133,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList extendedStateMachines = null;
+	protected EList<StateMachine> extendedStateMachines = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -129,6 +149,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STATE_MACHINE;
 	}
@@ -138,25 +159,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.STATE_MACHINE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STATE_MACHINE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STATE_MACHINE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -164,24 +186,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.STATE_MACHINE__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.STATE_MACHINE__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.STATE_MACHINE__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -191,9 +219,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRegions() {
+	public EList<Region> getRegions() {
 		if (regions == null) {
-			regions = new EObjectContainmentWithInverseEList.Resolving(
+			regions = new EObjectContainmentWithInverseEList.Resolving<Region>(
 				Region.class, this, UMLPackage.STATE_MACHINE__REGION,
 				UMLPackage.REGION__STATE_MACHINE);
 		}
@@ -229,8 +257,7 @@
 	 */
 	public Region getRegion(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		regionLoop : for (Iterator i = getRegions().iterator(); i.hasNext();) {
-			Region region = (Region) i.next();
+		regionLoop : for (Region region : getRegions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(region.getName())
 				: name.equals(region.getName())))
@@ -247,9 +274,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubmachineStates() {
+	public EList<State> getSubmachineStates() {
 		if (submachineStates == null) {
-			submachineStates = new EObjectWithInverseResolvingEList(
+			submachineStates = new EObjectWithInverseResolvingEList<State>(
 				State.class, this, UMLPackage.STATE_MACHINE__SUBMACHINE_STATE,
 				UMLPackage.STATE__SUBMACHINE);
 		}
@@ -272,9 +299,7 @@
 	 */
 	public State getSubmachineState(String name, boolean ignoreCase,
 			EClass eClass) {
-		submachineStateLoop : for (Iterator i = getSubmachineStates()
-			.iterator(); i.hasNext();) {
-			State submachineState = (State) i.next();
+		submachineStateLoop : for (State submachineState : getSubmachineStates()) {
 			if (eClass != null && !eClass.isInstance(submachineState))
 				continue submachineStateLoop;
 			if (name != null && !(ignoreCase
@@ -291,9 +316,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getConnectionPoints() {
+	public EList<Pseudostate> getConnectionPoints() {
 		if (connectionPoints == null) {
-			connectionPoints = new EObjectContainmentWithInverseEList.Resolving(
+			connectionPoints = new EObjectContainmentWithInverseEList.Resolving<Pseudostate>(
 				Pseudostate.class, this,
 				UMLPackage.STATE_MACHINE__CONNECTION_POINT,
 				UMLPackage.PSEUDOSTATE__STATE_MACHINE);
@@ -330,9 +355,7 @@
 	 */
 	public Pseudostate getConnectionPoint(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		connectionPointLoop : for (Iterator i = getConnectionPoints()
-			.iterator(); i.hasNext();) {
-			Pseudostate connectionPoint = (Pseudostate) i.next();
+		connectionPointLoop : for (Pseudostate connectionPoint : getConnectionPoints()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(connectionPoint.getName())
 				: name.equals(connectionPoint.getName())))
@@ -349,9 +372,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtendedStateMachines() {
+	public EList<StateMachine> getExtendedStateMachines() {
 		if (extendedStateMachines == null) {
-			extendedStateMachines = new EObjectResolvingEList(
+			extendedStateMachines = new EObjectResolvingEList<StateMachine>(
 				StateMachine.class, this,
 				UMLPackage.STATE_MACHINE__EXTENDED_STATE_MACHINE);
 		}
@@ -374,9 +397,7 @@
 	 */
 	public StateMachine getExtendedStateMachine(String name,
 			boolean ignoreCase, EClass eClass) {
-		extendedStateMachineLoop : for (Iterator i = getExtendedStateMachines()
-			.iterator(); i.hasNext();) {
-			StateMachine extendedStateMachine = (StateMachine) i.next();
+		extendedStateMachineLoop : for (StateMachine extendedStateMachine : getExtendedStateMachines()) {
 			if (eClass != null && !eClass.isInstance(extendedStateMachine))
 				continue extendedStateMachineLoop;
 			if (name != null && !(ignoreCase
@@ -394,7 +415,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifierContext(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateMachineOperations.validateClassifierContext(this,
 			diagnostics, context);
 	}
@@ -405,7 +426,7 @@
 	 * @generated
 	 */
 	public boolean validateContextClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateMachineOperations.validateContextClassifier(this,
 			diagnostics, context);
 	}
@@ -416,7 +437,7 @@
 	 * @generated
 	 */
 	public boolean validateConnectionPoints(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StateMachineOperations.validateConnectionPoints(this,
 			diagnostics, context);
 	}
@@ -426,7 +447,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMethod(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMethod(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StateMachineOperations
 			.validateMethod(this, diagnostics, context);
 	}
@@ -473,24 +495,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -505,8 +529,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.STATE_MACHINE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -518,22 +542,23 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedOperations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__SPECIFICATION :
 				if (specification != null)
 					msgs = ((InternalEObject) specification).eInverseRemove(
@@ -541,13 +566,14 @@
 						BehavioralFeature.class, msgs);
 				return basicSetSpecification((BehavioralFeature) otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__REGION :
-				return ((InternalEList) getRegions()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__SUBMACHINE_STATE :
-				return ((InternalEList) getSubmachineStates()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubmachineStates())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getConnectionPoints())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -557,102 +583,103 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STATE_MACHINE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.STATE_MACHINE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.STATE_MACHINE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.STATE_MACHINE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__PRECONDITION :
-				return ((InternalEList) getPreconditions()).basicRemove(
+				return ((InternalEList<?>) getPreconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__POSTCONDITION :
-				return ((InternalEList) getPostconditions()).basicRemove(
+				return ((InternalEList<?>) getPostconditions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__OWNED_PARAMETER_SET :
-				return ((InternalEList) getOwnedParameterSets()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getOwnedParameterSets())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__SPECIFICATION :
 				return basicSetSpecification(null, msgs);
 			case UMLPackage.STATE_MACHINE__REGION :
-				return ((InternalEList) getRegions()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getRegions()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STATE_MACHINE__SUBMACHINE_STATE :
-				return ((InternalEList) getSubmachineStates()).basicRemove(
+				return ((InternalEList<?>) getSubmachineStates()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STATE_MACHINE__CONNECTION_POINT :
-				return ((InternalEList) getConnectionPoints()).basicRemove(
+				return ((InternalEList<?>) getConnectionPoints()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -663,6 +690,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
@@ -832,15 +860,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__NAME :
 				setName((String) newValue);
@@ -850,22 +882,26 @@
 				return;
 			case UMLPackage.STATE_MACHINE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -881,7 +917,8 @@
 				return;
 			case UMLPackage.STATE_MACHINE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -891,126 +928,151 @@
 				return;
 			case UMLPackage.STATE_MACHINE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__IS_REENTRANT :
 				setIsReentrant(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.STATE_MACHINE__REDEFINED_BEHAVIOR :
 				getRedefinedBehaviors().clear();
-				getRedefinedBehaviors().addAll((Collection) newValue);
+				getRedefinedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends Parameter>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__PRECONDITION :
 				getPreconditions().clear();
-				getPreconditions().addAll((Collection) newValue);
+				getPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__POSTCONDITION :
 				getPostconditions().clear();
-				getPostconditions().addAll((Collection) newValue);
+				getPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__OWNED_PARAMETER_SET :
 				getOwnedParameterSets().clear();
-				getOwnedParameterSets().addAll((Collection) newValue);
+				getOwnedParameterSets().addAll(
+					(Collection<? extends ParameterSet>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__SPECIFICATION :
 				setSpecification((BehavioralFeature) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__REGION :
 				getRegions().clear();
-				getRegions().addAll((Collection) newValue);
+				getRegions().addAll((Collection<? extends Region>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__SUBMACHINE_STATE :
 				getSubmachineStates().clear();
-				getSubmachineStates().addAll((Collection) newValue);
+				getSubmachineStates().addAll(
+					(Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__CONNECTION_POINT :
 				getConnectionPoints().clear();
-				getConnectionPoints().addAll((Collection) newValue);
+				getConnectionPoints().addAll(
+					(Collection<? extends Pseudostate>) newValue);
 				return;
 			case UMLPackage.STATE_MACHINE__EXTENDED_STATE_MACHINE :
 				getExtendedStateMachines().clear();
-				getExtendedStateMachines().addAll((Collection) newValue);
+				getExtendedStateMachines().addAll(
+					(Collection<? extends StateMachine>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1021,6 +1083,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
@@ -1176,6 +1239,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STATE_MACHINE__EANNOTATIONS :
@@ -1348,6 +1412,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.STATE_MACHINE__REGION)
@@ -1372,6 +1437,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetRedefinedElements() {
 		return super.isSetRedefinedElements()
 			|| eIsSet(UMLPackage.STATE_MACHINE__EXTENDED_STATE_MACHINE);
@@ -1386,6 +1452,7 @@
 		return isRedefinitionContextValid(redefined);
 	}
 
+	@Override
 	public boolean isRedefinitionContextValid(RedefinableElement redefined) {
 		return redefined instanceof StateMachine
 			&& isRedefinitionContextValid((StateMachine) redefined);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StereotypeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StereotypeImpl.java
index 1a2ba68..abaa6da 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StereotypeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StereotypeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StereotypeImpl.java,v 1.21 2006/04/10 19:16:21 khussey Exp $
+ * $Id: StereotypeImpl.java,v 1.22 2006/12/14 15:49:32 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -21,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -30,15 +31,33 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Extension;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Image;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Reception;
 import org.eclipse.uml2.uml.Stereotype;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.StereotypeOperations;
@@ -68,7 +87,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList icons = null;
+	protected EList<Image> icons = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -84,6 +103,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STEREOTYPE;
 	}
@@ -93,10 +113,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getIcons() {
+	public EList<Image> getIcons() {
 		if (icons == null) {
-			icons = new EObjectContainmentEList.Resolving(Image.class, this,
-				UMLPackage.STEREOTYPE__ICON);
+			icons = new EObjectContainmentEList.Resolving<Image>(Image.class,
+				this, UMLPackage.STEREOTYPE__ICON);
 		}
 		return icons;
 	}
@@ -117,7 +137,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNameNotClash(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNameNotClash(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StereotypeOperations.validateNameNotClash(this, diagnostics,
 			context);
 	}
@@ -127,7 +148,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGeneralize(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGeneralize(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StereotypeOperations.validateGeneralize(this, diagnostics,
 			context);
 	}
@@ -175,11 +197,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtendedMetaclasses() {
+	public EList<org.eclipse.uml2.uml.Class> getExtendedMetaclasses() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.STEREOTYPE.getEOperations().get(6));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Class> result = (EList<org.eclipse.uml2.uml.Class>) cache
+				.get(this, UMLPackage.Literals.STEREOTYPE.getEOperations().get(
+					6));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.STEREOTYPE.getEOperations()
 					.get(6), result = StereotypeOperations
@@ -195,11 +219,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAllExtendedMetaclasses() {
+	public EList<org.eclipse.uml2.uml.Class> getAllExtendedMetaclasses() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.STEREOTYPE.getEOperations().get(7));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Class> result = (EList<org.eclipse.uml2.uml.Class>) cache
+				.get(this, UMLPackage.Literals.STEREOTYPE.getEOperations().get(
+					7));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.STEREOTYPE.getEOperations()
 					.get(7), result = StereotypeOperations
@@ -242,82 +268,84 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STEREOTYPE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STEREOTYPE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.STEREOTYPE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.STEREOTYPE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.STEREOTYPE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STEREOTYPE__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__NESTED_CLASSIFIER :
-				return ((InternalEList) getNestedClassifiers()).basicRemove(
+				return ((InternalEList<?>) getNestedClassifiers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_OPERATION :
-				return ((InternalEList) getOwnedOperations()).basicRemove(
+				return ((InternalEList<?>) getOwnedOperations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__OWNED_RECEPTION :
-				return ((InternalEList) getOwnedReceptions()).basicRemove(
+				return ((InternalEList<?>) getOwnedReceptions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STEREOTYPE__ICON :
-				return ((InternalEList) getIcons()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getIcons()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -327,6 +355,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STEREOTYPE__EANNOTATIONS :
@@ -468,15 +497,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STEREOTYPE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__NAME :
 				setName((String) newValue);
@@ -486,22 +519,26 @@
 				return;
 			case UMLPackage.STEREOTYPE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -517,7 +554,8 @@
 				return;
 			case UMLPackage.STEREOTYPE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -527,88 +565,105 @@
 				return;
 			case UMLPackage.STEREOTYPE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_PORT :
 				getOwnedPorts().clear();
-				getOwnedPorts().addAll((Collection) newValue);
+				getOwnedPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__NESTED_CLASSIFIER :
 				getNestedClassifiers().clear();
-				getNestedClassifiers().addAll((Collection) newValue);
+				getNestedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_OPERATION :
 				getOwnedOperations().clear();
-				getOwnedOperations().addAll((Collection) newValue);
+				getOwnedOperations().addAll(
+					(Collection<? extends Operation>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__SUPER_CLASS :
 				getSuperClasses().clear();
-				getSuperClasses().addAll((Collection) newValue);
+				getSuperClasses()
+					.addAll(
+						(Collection<? extends org.eclipse.uml2.uml.Class>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__IS_ACTIVE :
 				setIsActive(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.STEREOTYPE__OWNED_RECEPTION :
 				getOwnedReceptions().clear();
-				getOwnedReceptions().addAll((Collection) newValue);
+				getOwnedReceptions().addAll(
+					(Collection<? extends Reception>) newValue);
 				return;
 			case UMLPackage.STEREOTYPE__ICON :
 				getIcons().clear();
-				getIcons().addAll((Collection) newValue);
+				getIcons().addAll((Collection<? extends Image>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -619,6 +674,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STEREOTYPE__EANNOTATIONS :
@@ -744,6 +800,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STEREOTYPE__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StringExpressionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StringExpressionImpl.java
index 7594717..683e70c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StringExpressionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StringExpressionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StringExpressionImpl.java,v 1.20 2006/11/14 18:02:16 khussey Exp $
+ * $Id: StringExpressionImpl.java,v 1.21 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,7 +37,10 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -45,6 +48,7 @@
 import org.eclipse.uml2.uml.TemplateableElement;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.StringExpressionOperations;
@@ -80,7 +84,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -100,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList subExpressions = null;
+	protected EList<StringExpression> subExpressions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -116,6 +120,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STRING_EXPRESSION;
 	}
@@ -125,23 +130,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.STRING_EXPRESSION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.STRING_EXPRESSION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.STRING_EXPRESSION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -150,9 +157,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -189,9 +196,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -332,9 +337,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubExpressions() {
+	public EList<StringExpression> getSubExpressions() {
 		if (subExpressions == null) {
-			subExpressions = new EObjectContainmentWithInverseEList.Resolving(
+			subExpressions = new EObjectContainmentWithInverseEList.Resolving<StringExpression>(
 				StringExpression.class, this,
 				UMLPackage.STRING_EXPRESSION__SUB_EXPRESSION,
 				UMLPackage.STRING_EXPRESSION__OWNING_EXPRESSION);
@@ -373,9 +378,7 @@
 	 */
 	public StringExpression getSubExpression(String name, Type type,
 			boolean ignoreCase, boolean createOnDemand) {
-		subExpressionLoop : for (Iterator i = getSubExpressions().iterator(); i
-			.hasNext();) {
-			StringExpression subExpression = (StringExpression) i.next();
+		subExpressionLoop : for (StringExpression subExpression : getSubExpressions()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(subExpression.getName())
 				: name.equals(subExpression.getName())))
@@ -458,12 +461,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -489,7 +493,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOperands(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOperands(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StringExpressionOperations.validateOperands(this, diagnostics,
 			context);
 	}
@@ -500,7 +505,7 @@
 	 * @generated
 	 */
 	public boolean validateSubexpressions(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StringExpressionOperations.validateSubexpressions(this,
 			diagnostics, context);
 	}
@@ -519,15 +524,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -542,8 +549,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -555,8 +562,8 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__SUB_EXPRESSION :
-				return ((InternalEList) getSubExpressions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubExpressions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNING_EXPRESSION :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -571,18 +578,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNING_TEMPLATE_PARAMETER :
@@ -590,15 +598,15 @@
 			case UMLPackage.STRING_EXPRESSION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.STRING_EXPRESSION__OPERAND :
-				return ((InternalEList) getOperands()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getOperands()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.STRING_EXPRESSION__SUB_EXPRESSION :
-				return ((InternalEList) getSubExpressions()).basicRemove(
+				return ((InternalEList<?>) getSubExpressions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRING_EXPRESSION__OWNING_EXPRESSION :
 				return basicSetOwningExpression(null, msgs);
@@ -611,6 +619,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -631,6 +640,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
@@ -696,15 +706,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__NAME :
 				setName((String) newValue);
@@ -714,7 +728,8 @@
 				return;
 			case UMLPackage.STRING_EXPRESSION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -733,18 +748,21 @@
 				return;
 			case UMLPackage.STRING_EXPRESSION__OPERAND :
 				getOperands().clear();
-				getOperands().addAll((Collection) newValue);
+				getOperands().addAll(
+					(Collection<? extends ValueSpecification>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__SUB_EXPRESSION :
 				getSubExpressions().clear();
-				getSubExpressions().addAll((Collection) newValue);
+				getSubExpressions().addAll(
+					(Collection<? extends StringExpression>) newValue);
 				return;
 			case UMLPackage.STRING_EXPRESSION__OWNING_EXPRESSION :
 				setOwningExpression((StringExpression) newValue);
@@ -758,6 +776,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
@@ -814,6 +833,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRING_EXPRESSION__EANNOTATIONS :
@@ -866,7 +886,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == TemplateableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING :
@@ -885,7 +906,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == TemplateableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING :
@@ -920,6 +942,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.STRING_EXPRESSION__TEMPLATE_BINDING)
@@ -946,6 +969,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.STRING_EXPRESSION__OWNING_EXPRESSION);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureActionImpl.java
index 08757f8..66ab2ad 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuralFeatureActionImpl.java,v 1.22 2006/11/14 18:02:20 khussey Exp $
+ * $Id: StructuralFeatureActionImpl.java,v 1.23 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuralFeature;
 import org.eclipse.uml2.uml.StructuralFeatureAction;
@@ -99,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STRUCTURAL_FEATURE_ACTION;
 	}
@@ -108,22 +118,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.STRUCTURAL_FEATURE_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.STRUCTURAL_FEATURE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -293,7 +305,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotStatic(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotStatic(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StructuralFeatureActionOperations.validateNotStatic(this,
 			diagnostics, context);
 	}
@@ -303,7 +316,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StructuralFeatureActionOperations.validateSameType(this,
 			diagnostics, context);
 	}
@@ -313,7 +327,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StructuralFeatureActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -323,7 +338,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateVisibility(DiagnosticChain diagnostics, Map context) {
+	public boolean validateVisibility(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StructuralFeatureActionOperations.validateVisibility(this,
 			diagnostics, context);
 	}
@@ -334,7 +350,7 @@
 	 * @generated
 	 */
 	public boolean validateOneFeaturingClassifier(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StructuralFeatureActionOperations
 			.validateOneFeaturingClassifier(this, diagnostics, context);
 	}
@@ -344,18 +360,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__IN_STRUCTURED_NODE :
@@ -363,26 +380,26 @@
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 		}
@@ -394,6 +411,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -481,15 +499,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__NAME :
 				setName((String) newValue);
@@ -499,7 +521,8 @@
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -515,35 +538,44 @@
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__STRUCTURAL_FEATURE :
 				setStructuralFeature((StructuralFeature) newValue);
@@ -560,6 +592,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -628,6 +661,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -713,6 +747,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.STRUCTURAL_FEATURE_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureImpl.java
index bad4bff..c549564 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuralFeatureImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuralFeatureImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: StructuralFeatureImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,6 +35,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.MultiplicityElement;
 import org.eclipse.uml2.uml.StringExpression;
@@ -196,6 +199,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STRUCTURAL_FEATURE;
 	}
@@ -247,23 +251,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.STRUCTURAL_FEATURE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.STRUCTURAL_FEATURE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.STRUCTURAL_FEATURE__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -613,7 +619,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGt0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGt0(this,
 			diagnostics, context);
 	}
@@ -623,7 +630,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateLowerGe0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateLowerGe0(this,
 			diagnostics, context);
 	}
@@ -633,7 +641,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGeLower(this,
 			diagnostics, context);
 	}
@@ -644,7 +653,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationNoSideEffects(this, diagnostics, context);
 	}
@@ -655,7 +664,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationConstant(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationConstant(this, diagnostics, context);
 	}
@@ -728,18 +737,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STRUCTURAL_FEATURE__UPPER_VALUE :
@@ -755,6 +765,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE__EANNOTATIONS :
@@ -834,15 +845,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE__NAME :
 				setName((String) newValue);
@@ -852,7 +867,8 @@
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STRUCTURAL_FEATURE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -896,6 +912,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE__EANNOTATIONS :
@@ -955,6 +972,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURAL_FEATURE__EANNOTATIONS :
@@ -1015,7 +1033,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.STRUCTURAL_FEATURE__TYPE :
@@ -1050,7 +1069,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.TYPED_ELEMENT__TYPE :
@@ -1085,6 +1105,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1119,6 +1140,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.STRUCTURAL_FEATURE__UPPER_VALUE)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java
index bb16f06..843bced 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredActivityNodeImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredActivityNodeImpl.java,v 1.30 2006/11/14 18:02:15 khussey Exp $
+ * $Id: StructuredActivityNodeImpl.java,v 1.31 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -40,9 +40,14 @@
 import org.eclipse.uml2.uml.ActivityEdge;
 import org.eclipse.uml2.uml.ActivityGroup;
 import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ElementImport;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.PackageImport;
@@ -99,7 +104,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList elementImports = null;
+	protected EList<ElementImport> elementImports = null;
 
 	/**
 	 * The cached value of the '{@link #getPackageImports() <em>Package Import</em>}' containment reference list.
@@ -109,7 +114,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList packageImports = null;
+	protected EList<PackageImport> packageImports = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedRules() <em>Owned Rule</em>}' containment reference list.
@@ -119,7 +124,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedRules = null;
+	protected EList<Constraint> ownedRules = null;
 
 	/**
 	 * The cached value of the '{@link #getVariables() <em>Variable</em>}' containment reference list.
@@ -129,7 +134,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList variables = null;
+	protected EList<Variable> variables = null;
 
 	/**
 	 * The cached value of the '{@link #getEdges() <em>Edge</em>}' containment reference list.
@@ -139,7 +144,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList edges = null;
+	protected EList<ActivityEdge> edges = null;
 
 	/**
 	 * The default value of the '{@link #isMustIsolate() <em>Must Isolate</em>}' attribute.
@@ -169,7 +174,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList nodes = null;
+	protected EList<ActivityNode> nodes = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -185,6 +190,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STRUCTURED_ACTIVITY_NODE;
 	}
@@ -194,24 +200,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -221,25 +228,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_MEMBER,
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_MEMBER,
 			OWNED_MEMBER_ESUBSETS);
 	}
 
@@ -259,9 +267,7 @@
 	 */
 	public NamedElement getOwnedMember(String name, boolean ignoreCase,
 			EClass eClass) {
-		ownedMemberLoop : for (Iterator i = getOwnedMembers().iterator(); i
-			.hasNext();) {
-			NamedElement ownedMember = (NamedElement) i.next();
+		ownedMemberLoop : for (NamedElement ownedMember : getOwnedMembers()) {
 			if (eClass != null && !eClass.isInstance(ownedMember))
 				continue ownedMemberLoop;
 			if (name != null && !(ignoreCase
@@ -278,24 +284,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.STRUCTURED_ACTIVITY_NODE__MEMBER,
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.STRUCTURED_ACTIVITY_NODE__MEMBER,
 						MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STRUCTURED_ACTIVITY_NODE__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STRUCTURED_ACTIVITY_NODE__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -313,8 +321,7 @@
 	 * @generated
 	 */
 	public NamedElement getMember(String name, boolean ignoreCase, EClass eClass) {
-		memberLoop : for (Iterator i = getMembers().iterator(); i.hasNext();) {
-			NamedElement member = (NamedElement) i.next();
+		memberLoop : for (NamedElement member : getMembers()) {
 			if (eClass != null && !eClass.isInstance(member))
 				continue memberLoop;
 			if (name != null && !(ignoreCase
@@ -331,9 +338,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getElementImports() {
+	public EList<ElementImport> getElementImports() {
 		if (elementImports == null) {
-			elementImports = new EObjectContainmentWithInverseEList.Resolving(
+			elementImports = new EObjectContainmentWithInverseEList.Resolving<ElementImport>(
 				ElementImport.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT,
 				UMLPackage.ELEMENT_IMPORT__IMPORTING_NAMESPACE);
@@ -370,9 +377,7 @@
 	 */
 	public ElementImport getElementImport(PackageableElement importedElement,
 			boolean createOnDemand) {
-		elementImportLoop : for (Iterator i = getElementImports().iterator(); i
-			.hasNext();) {
-			ElementImport elementImport = (ElementImport) i.next();
+		elementImportLoop : for (ElementImport elementImport : getElementImports()) {
 			if (importedElement != null
 				&& !importedElement.equals(elementImport.getImportedElement()))
 				continue elementImportLoop;
@@ -388,9 +393,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPackageImports() {
+	public EList<PackageImport> getPackageImports() {
 		if (packageImports == null) {
-			packageImports = new EObjectContainmentWithInverseEList.Resolving(
+			packageImports = new EObjectContainmentWithInverseEList.Resolving<PackageImport>(
 				PackageImport.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT,
 				UMLPackage.PACKAGE_IMPORT__IMPORTING_NAMESPACE);
@@ -429,9 +434,7 @@
 	 */
 	public PackageImport getPackageImport(
 			org.eclipse.uml2.uml.Package importedPackage, boolean createOnDemand) {
-		packageImportLoop : for (Iterator i = getPackageImports().iterator(); i
-			.hasNext();) {
-			PackageImport packageImport = (PackageImport) i.next();
+		packageImportLoop : for (PackageImport packageImport : getPackageImports()) {
 			if (importedPackage != null
 				&& !importedPackage.equals(packageImport.getImportedPackage()))
 				continue packageImportLoop;
@@ -447,9 +450,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedRules() {
+	public EList<Constraint> getOwnedRules() {
 		if (ownedRules == null) {
-			ownedRules = new EObjectContainmentWithInverseEList.Resolving(
+			ownedRules = new EObjectContainmentWithInverseEList.Resolving<Constraint>(
 				Constraint.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE,
 				UMLPackage.CONSTRAINT__CONTEXT);
@@ -495,9 +498,7 @@
 	 */
 	public Constraint getOwnedRule(String name, boolean ignoreCase,
 			EClass eClass, boolean createOnDemand) {
-		ownedRuleLoop : for (Iterator i = getOwnedRules().iterator(); i
-			.hasNext();) {
-			Constraint ownedRule = (Constraint) i.next();
+		ownedRuleLoop : for (Constraint ownedRule : getOwnedRules()) {
 			if (eClass != null && !eClass.isInstance(ownedRule))
 				continue ownedRuleLoop;
 			if (name != null && !(ignoreCase
@@ -516,12 +517,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedMembers() {
+	public EList<PackageableElement> getImportedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER);
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER,
 					result = NamespaceOperations.getImportedMembers(this));
@@ -547,9 +549,7 @@
 	 */
 	public PackageableElement getImportedMember(String name,
 			boolean ignoreCase, EClass eClass) {
-		importedMemberLoop : for (Iterator i = getImportedMembers().iterator(); i
-			.hasNext();) {
-			PackageableElement importedMember = (PackageableElement) i.next();
+		importedMemberLoop : for (PackageableElement importedMember : getImportedMembers()) {
 			if (eClass != null && !eClass.isInstance(importedMember))
 				continue importedMemberLoop;
 			if (name != null && !(ignoreCase
@@ -566,24 +566,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubgroups() {
+	public EList<ActivityGroup> getSubgroups() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList subgroups = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
+			@SuppressWarnings("unchecked")
+			EList<ActivityGroup> subgroups = (EList<ActivityGroup>) cache.get(
+				eResource, this, UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP);
 			if (subgroups == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ACTIVITY_GROUP__SUBGROUP,
-					subgroups = new DerivedUnionEObjectEList(
+					subgroups = new DerivedUnionEObjectEList<ActivityGroup>(
 						ActivityGroup.class, this,
 						UMLPackage.STRUCTURED_ACTIVITY_NODE__SUBGROUP, null));
 			}
 			return subgroups;
 		}
-		return new DerivedUnionEObjectEList(ActivityGroup.class, this,
-			UMLPackage.STRUCTURED_ACTIVITY_NODE__SUBGROUP, null);
+		return new DerivedUnionEObjectEList<ActivityGroup>(ActivityGroup.class,
+			this, UMLPackage.STRUCTURED_ACTIVITY_NODE__SUBGROUP, null);
 	}
 
 	/**
@@ -591,25 +592,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedNodes() {
+	public EList<ActivityNode> getContainedNodes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedNodes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityNode> containedNodes = (EList<ActivityNode>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE);
 			if (containedNodes == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
-					containedNodes = new DerivedUnionEObjectEList(
-						ActivityNode.class, this,
-						UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE,
-						CONTAINED_NODE_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_NODE,
+						containedNodes = new DerivedUnionEObjectEList<ActivityNode>(
+							ActivityNode.class,
+							this,
+							UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE,
+							CONTAINED_NODE_ESUBSETS));
 			}
 			return containedNodes;
 		}
-		return new DerivedUnionEObjectEList(ActivityNode.class, this,
-			UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE,
+		return new DerivedUnionEObjectEList<ActivityNode>(ActivityNode.class,
+			this, UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE,
 			CONTAINED_NODE_ESUBSETS);
 	}
 
@@ -629,9 +636,7 @@
 	 */
 	public ActivityNode getContainedNode(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedNodeLoop : for (Iterator i = getContainedNodes().iterator(); i
-			.hasNext();) {
-			ActivityNode containedNode = (ActivityNode) i.next();
+		containedNodeLoop : for (ActivityNode containedNode : getContainedNodes()) {
 			if (eClass != null && !eClass.isInstance(containedNode))
 				continue containedNodeLoop;
 			if (name != null && !(ignoreCase
@@ -648,25 +653,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getContainedEdges() {
+	public EList<ActivityEdge> getContainedEdges() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList containedEdges = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
+			@SuppressWarnings("unchecked")
+			EList<ActivityEdge> containedEdges = (EList<ActivityEdge>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE);
 			if (containedEdges == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
-					containedEdges = new DerivedUnionEObjectEList(
-						ActivityEdge.class, this,
-						UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE,
-						CONTAINED_EDGE_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.ACTIVITY_GROUP__CONTAINED_EDGE,
+						containedEdges = new DerivedUnionEObjectEList<ActivityEdge>(
+							ActivityEdge.class,
+							this,
+							UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE,
+							CONTAINED_EDGE_ESUBSETS));
 			}
 			return containedEdges;
 		}
-		return new DerivedUnionEObjectEList(ActivityEdge.class, this,
-			UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE,
+		return new DerivedUnionEObjectEList<ActivityEdge>(ActivityEdge.class,
+			this, UMLPackage.STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE,
 			CONTAINED_EDGE_ESUBSETS);
 	}
 
@@ -686,9 +697,7 @@
 	 */
 	public ActivityEdge getContainedEdge(String name, boolean ignoreCase,
 			EClass eClass) {
-		containedEdgeLoop : for (Iterator i = getContainedEdges().iterator(); i
-			.hasNext();) {
-			ActivityEdge containedEdge = (ActivityEdge) i.next();
+		containedEdgeLoop : for (ActivityEdge containedEdge : getContainedEdges()) {
 			if (eClass != null && !eClass.isInstance(containedEdge))
 				continue containedEdgeLoop;
 			if (name != null && !(ignoreCase
@@ -705,9 +714,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getVariables() {
+	public EList<Variable> getVariables() {
 		if (variables == null) {
-			variables = new EObjectContainmentWithInverseEList.Resolving(
+			variables = new EObjectContainmentWithInverseEList.Resolving<Variable>(
 				Variable.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__VARIABLE,
 				UMLPackage.VARIABLE__SCOPE);
@@ -746,8 +755,7 @@
 	 */
 	public Variable getVariable(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		variableLoop : for (Iterator i = getVariables().iterator(); i.hasNext();) {
-			Variable variable = (Variable) i.next();
+		variableLoop : for (Variable variable : getVariables()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(variable.getName())
 				: name.equals(variable.getName())))
@@ -766,9 +774,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNodes() {
+	public EList<ActivityNode> getNodes() {
 		if (nodes == null) {
-			nodes = new EObjectContainmentWithInverseEList.Resolving(
+			nodes = new EObjectContainmentWithInverseEList.Resolving<ActivityNode>(
 				ActivityNode.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__NODE,
 				UMLPackage.ACTIVITY_NODE__IN_STRUCTURED_NODE);
@@ -805,8 +813,7 @@
 	 */
 	public ActivityNode getNode(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		nodeLoop : for (Iterator i = getNodes().iterator(); i.hasNext();) {
-			ActivityNode node = (ActivityNode) i.next();
+		nodeLoop : for (ActivityNode node : getNodes()) {
 			if (eClass != null && !eClass.isInstance(node))
 				continue nodeLoop;
 			if (name != null && !(ignoreCase
@@ -853,9 +860,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getEdges() {
+	public EList<ActivityEdge> getEdges() {
 		if (edges == null) {
-			edges = new EObjectContainmentWithInverseEList.Resolving(
+			edges = new EObjectContainmentWithInverseEList.Resolving<ActivityEdge>(
 				ActivityEdge.class, this,
 				UMLPackage.STRUCTURED_ACTIVITY_NODE__EDGE,
 				UMLPackage.ACTIVITY_EDGE__IN_STRUCTURED_NODE);
@@ -892,8 +899,7 @@
 	 */
 	public ActivityEdge getEdge(String name, boolean ignoreCase, EClass eClass,
 			boolean createOnDemand) {
-		edgeLoop : for (Iterator i = getEdges().iterator(); i.hasNext();) {
-			ActivityEdge edge = (ActivityEdge) i.next();
+		edgeLoop : for (ActivityEdge edge : getEdges()) {
 			if (eClass != null && !eClass.isInstance(edge))
 				continue edgeLoop;
 			if (name != null && !(ignoreCase
@@ -955,7 +961,7 @@
 	 * @generated
 	 */
 	public boolean validateMembersDistinguishable(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return NamespaceOperations.validateMembersDistinguishable(this,
 			diagnostics, context);
 	}
@@ -987,11 +993,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedElements() {
+	public EList<PackageableElement> getImportedElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE.getEOperations().get(3));
+			@SuppressWarnings("unchecked")
+			EList<PackageableElement> result = (EList<PackageableElement>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE.getEOperations()
+					.get(3));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE.getEOperations()
 					.get(3), result = NamespaceOperations
@@ -1007,11 +1015,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getImportedPackages() {
+	public EList<org.eclipse.uml2.uml.Package> getImportedPackages() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.NAMESPACE.getEOperations().get(4));
+			@SuppressWarnings("unchecked")
+			EList<org.eclipse.uml2.uml.Package> result = (EList<org.eclipse.uml2.uml.Package>) cache
+				.get(this, UMLPackage.Literals.NAMESPACE.getEOperations()
+					.get(4));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.NAMESPACE.getEOperations()
 					.get(4), result = NamespaceOperations
@@ -1027,7 +1037,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getNamesOfMember(NamedElement element) {
+	public EList<String> getNamesOfMember(NamedElement element) {
 		return NamespaceOperations.getNamesOfMember(this, element);
 	}
 
@@ -1045,7 +1055,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList importMembers(EList imps) {
+	public EList<PackageableElement> importMembers(
+			EList<PackageableElement> imps) {
 		return NamespaceOperations.importMembers(this, imps);
 	}
 
@@ -1054,7 +1065,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList excludeCollisions(EList imps) {
+	public EList<PackageableElement> excludeCollisions(
+			EList<PackageableElement> imps) {
 		return NamespaceOperations.excludeCollisions(this, imps);
 	}
 
@@ -1064,7 +1076,7 @@
 	 * @generated
 	 */
 	public boolean validateNodesAndEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNodesAndEdges(this, diagnostics,
 			context);
 	}
@@ -1074,7 +1086,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNotContained(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNotContained(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateNotContained(this, diagnostics,
 			context);
 	}
@@ -1084,7 +1097,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateGroupOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateGroupOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ActivityGroupOperations.validateGroupOwned(this, diagnostics,
 			context);
 	}
@@ -1094,7 +1108,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateEdges(DiagnosticChain diagnostics, Map context) {
+	public boolean validateEdges(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return StructuredActivityNodeOperations.validateEdges(this,
 			diagnostics, context);
 	}
@@ -1104,15 +1119,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1123,39 +1140,42 @@
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetActivity((Activity) otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInPartitions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInInterruptibleRegions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getHandlers())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_ACTIVITY :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
 				return basicSetInActivity((Activity) otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__VARIABLE :
-				return ((InternalEList) getVariables())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getVariables())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EDGE :
-				return ((InternalEList) getEdges()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEdges())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NODE :
-				return ((InternalEList) getNodes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getNodes())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -1165,18 +1185,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE :
@@ -1184,44 +1205,46 @@
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_ACTIVITY :
 				return basicSetInActivity(null, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__VARIABLE :
-				return ((InternalEList) getVariables()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getVariables()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EDGE :
-				return ((InternalEList) getEdges()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEdges()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NODE :
-				return ((InternalEList) getNodes()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getNodes()).basicRemove(otherEnd,
+					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -1231,6 +1254,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
@@ -1346,15 +1370,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NAME :
 				setName((String) newValue);
@@ -1364,7 +1392,8 @@
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -1380,65 +1409,80 @@
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__IN_ACTIVITY :
 				setInActivity((Activity) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__VARIABLE :
 				getVariables().clear();
-				getVariables().addAll((Collection) newValue);
+				getVariables()
+					.addAll((Collection<? extends Variable>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EDGE :
 				getEdges().clear();
-				getEdges().addAll((Collection) newValue);
+				getEdges()
+					.addAll((Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE :
 				setMustIsolate(((Boolean) newValue).booleanValue());
 				return;
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__NODE :
 				getNodes().clear();
-				getNodes().addAll((Collection) newValue);
+				getNodes()
+					.addAll((Collection<? extends ActivityNode>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -1449,6 +1493,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
@@ -1535,6 +1580,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE__EANNOTATIONS :
@@ -1636,7 +1682,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == Namespace.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT :
@@ -1679,7 +1726,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == Namespace.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.NAMESPACE__ELEMENT_IMPORT :
@@ -1722,6 +1770,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1759,6 +1808,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT)
@@ -1883,6 +1933,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner() || isSetSuperGroup() || isSetInActivity();
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredClassifierImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredClassifierImpl.java
index 0179904..60bf369 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredClassifierImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/StructuredClassifierImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredClassifierImpl.java,v 1.27 2006/11/14 18:02:20 khussey Exp $
+ * $Id: StructuredClassifierImpl.java,v 1.28 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -24,6 +23,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
@@ -37,18 +37,29 @@
 import org.eclipse.uml2.common.util.DerivedEObjectEList;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.ConnectableElement;
 import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredClassifier;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
 
 import org.eclipse.uml2.uml.internal.operations.StructuredClassifierOperations;
@@ -85,7 +96,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedAttributes = null;
+	protected EList<Property> ownedAttributes = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedConnectors() <em>Owned Connector</em>}' containment reference list.
@@ -95,7 +106,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedConnectors = null;
+	protected EList<Connector> ownedConnectors = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -111,6 +122,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.STRUCTURED_CLASSIFIER;
 	}
@@ -120,23 +132,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRoles() {
+	public EList<ConnectableElement> getRoles() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList roles = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE);
+			@SuppressWarnings("unchecked")
+			EList<ConnectableElement> roles = (EList<ConnectableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE);
 			if (roles == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.STRUCTURED_CLASSIFIER__ROLE,
-					roles = new DerivedUnionEObjectEList(
+					roles = new DerivedUnionEObjectEList<ConnectableElement>(
 						ConnectableElement.class, this,
 						UMLPackage.STRUCTURED_CLASSIFIER__ROLE, ROLE_ESUBSETS));
 			}
 			return roles;
 		}
-		return new DerivedUnionEObjectEList(ConnectableElement.class, this,
+		return new DerivedUnionEObjectEList<ConnectableElement>(
+			ConnectableElement.class, this,
 			UMLPackage.STRUCTURED_CLASSIFIER__ROLE, ROLE_ESUBSETS);
 	}
 
@@ -156,8 +171,7 @@
 	 */
 	public ConnectableElement getRole(String name, Type type,
 			boolean ignoreCase, EClass eClass) {
-		roleLoop : for (Iterator i = getRoles().iterator(); i.hasNext();) {
-			ConnectableElement role = (ConnectableElement) i.next();
+		roleLoop : for (ConnectableElement role : getRoles()) {
 			if (eClass != null && !eClass.isInstance(role))
 				continue roleLoop;
 			if (name != null && !(ignoreCase
@@ -176,25 +190,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.STRUCTURED_CLASSIFIER__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STRUCTURED_CLASSIFIER__OWNED_MEMBER,
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STRUCTURED_CLASSIFIER__OWNED_MEMBER,
 			OWNED_MEMBER_ESUBSETS);
 	}
 
@@ -203,23 +218,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAttributes() {
+	public EList<Property> getAttributes() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList attributes = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
+			@SuppressWarnings("unchecked")
+			EList<Property> attributes = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__ATTRIBUTE);
 			if (attributes == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__ATTRIBUTE,
-					attributes = new DerivedUnionEObjectEList(Property.class,
-						this, UMLPackage.STRUCTURED_CLASSIFIER__ATTRIBUTE,
+					attributes = new DerivedUnionEObjectEList<Property>(
+						Property.class, this,
+						UMLPackage.STRUCTURED_CLASSIFIER__ATTRIBUTE,
 						ATTRIBUTE_ESUBSETS));
 			}
 			return attributes;
 		}
-		return new DerivedUnionEObjectEList(Property.class, this,
+		return new DerivedUnionEObjectEList<Property>(Property.class, this,
 			UMLPackage.STRUCTURED_CLASSIFIER__ATTRIBUTE, ATTRIBUTE_ESUBSETS);
 	}
 
@@ -228,24 +245,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getMembers() {
+	public EList<NamedElement> getMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList members = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> members = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__MEMBER);
 			if (members == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__MEMBER,
-					members = new DerivedUnionEObjectEList(NamedElement.class,
-						this, UMLPackage.STRUCTURED_CLASSIFIER__MEMBER,
+					members = new DerivedUnionEObjectEList<NamedElement>(
+						NamedElement.class, this,
+						UMLPackage.STRUCTURED_CLASSIFIER__MEMBER,
 						MEMBER_ESUBSETS));
 			}
 			return members;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.STRUCTURED_CLASSIFIER__MEMBER, MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.STRUCTURED_CLASSIFIER__MEMBER, MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -253,23 +272,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getFeatures() {
+	public EList<Feature> getFeatures() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList features = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.CLASSIFIER__FEATURE);
+			@SuppressWarnings("unchecked")
+			EList<Feature> features = (EList<Feature>) cache.get(eResource,
+				this, UMLPackage.Literals.CLASSIFIER__FEATURE);
 			if (features == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.CLASSIFIER__FEATURE,
-					features = new DerivedUnionEObjectEList(Feature.class,
-						this, UMLPackage.STRUCTURED_CLASSIFIER__FEATURE,
+					features = new DerivedUnionEObjectEList<Feature>(
+						Feature.class, this,
+						UMLPackage.STRUCTURED_CLASSIFIER__FEATURE,
 						FEATURE_ESUBSETS));
 			}
 			return features;
 		}
-		return new DerivedUnionEObjectEList(Feature.class, this,
+		return new DerivedUnionEObjectEList<Feature>(Feature.class, this,
 			UMLPackage.STRUCTURED_CLASSIFIER__FEATURE, FEATURE_ESUBSETS);
 	}
 
@@ -278,9 +299,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedAttributes() {
+	public EList<Property> getOwnedAttributes() {
 		if (ownedAttributes == null) {
-			ownedAttributes = new EObjectContainmentEList.Resolving(
+			ownedAttributes = new EObjectContainmentEList.Resolving<Property>(
 				Property.class, this,
 				UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE);
 		}
@@ -327,9 +348,7 @@
 	 */
 	public Property getOwnedAttribute(String name, Type type,
 			boolean ignoreCase, EClass eClass, boolean createOnDemand) {
-		ownedAttributeLoop : for (Iterator i = getOwnedAttributes().iterator(); i
-			.hasNext();) {
-			Property ownedAttribute = (Property) i.next();
+		ownedAttributeLoop : for (Property ownedAttribute : getOwnedAttributes()) {
 			if (eClass != null && !eClass.isInstance(ownedAttribute))
 				continue ownedAttributeLoop;
 			if (name != null && !(ignoreCase
@@ -346,26 +365,30 @@
 	}
 
 	protected static class PartEList
-			extends DerivedEObjectEList {
+			extends DerivedEObjectEList<Property> {
 
-		protected PartEList(Class dataClass, InternalEObject owner,
+		protected PartEList(Class<?> dataClass, InternalEObject owner,
 				int featureID, int[] sourceFeatureIDs) {
 			super(dataClass, owner, featureID, sourceFeatureIDs);
 		}
 
-		public List basicList() {
+		@Override
+		public List<Property> basicList() {
 			return new PartEList(dataClass, owner, featureID, sourceFeatureIDs) {
 
-				public ListIterator listIterator(int index) {
+				@Override
+				public ListIterator<Property> listIterator(int index) {
 					return basicListIterator(index);
 				}
 			};
 		}
 
+		@Override
 		protected boolean isIncluded(EStructuralFeature feature) {
 			return false;
 		}
 
+		@Override
 		protected boolean isIncluded(Object object) {
 			return super.isIncluded(object)
 				&& ((Property) object).isComposite();
@@ -384,12 +407,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getParts() {
+	public EList<Property> getParts() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList parts = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.STRUCTURED_CLASSIFIER__PART);
+			@SuppressWarnings("unchecked")
+			EList<Property> parts = (EList<Property>) cache.get(eResource,
+				this, UMLPackage.Literals.STRUCTURED_CLASSIFIER__PART);
 			if (parts == null) {
 				cache
 					.put(eResource, this,
@@ -420,8 +444,7 @@
 	 */
 	public Property getPart(String name, Type type, boolean ignoreCase,
 			EClass eClass) {
-		partLoop : for (Iterator i = getParts().iterator(); i.hasNext();) {
-			Property part = (Property) i.next();
+		partLoop : for (Property part : getParts()) {
 			if (eClass != null && !eClass.isInstance(part))
 				continue partLoop;
 			if (name != null && !(ignoreCase
@@ -440,9 +463,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedConnectors() {
+	public EList<Connector> getOwnedConnectors() {
 		if (ownedConnectors == null) {
-			ownedConnectors = new EObjectContainmentEList.Resolving(
+			ownedConnectors = new EObjectContainmentEList.Resolving<Connector>(
 				Connector.class, this,
 				UMLPackage.STRUCTURED_CLASSIFIER__OWNED_CONNECTOR);
 		}
@@ -478,9 +501,7 @@
 	 */
 	public Connector getOwnedConnector(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		ownedConnectorLoop : for (Iterator i = getOwnedConnectors().iterator(); i
-			.hasNext();) {
-			Connector ownedConnector = (Connector) i.next();
+		ownedConnectorLoop : for (Connector ownedConnector : getOwnedConnectors()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(ownedConnector.getName())
 				: name.equals(ownedConnector.getName())))
@@ -498,7 +519,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicities(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return StructuredClassifierOperations.validateMultiplicities(this,
 			diagnostics, context);
 	}
@@ -519,61 +540,62 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_CLASSIFIER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE :
-				return ((InternalEList) getOwnedAttributes()).basicRemove(
+				return ((InternalEList<?>) getOwnedAttributes()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_CONNECTOR :
-				return ((InternalEList) getOwnedConnectors()).basicRemove(
+				return ((InternalEList<?>) getOwnedConnectors()).basicRemove(
 					otherEnd, msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -584,6 +606,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_CLASSIFIER__EANNOTATIONS :
@@ -697,15 +720,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_CLASSIFIER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__NAME :
 				setName((String) newValue);
@@ -715,22 +742,26 @@
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -746,7 +777,8 @@
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -756,46 +788,55 @@
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE :
 				getOwnedAttributes().clear();
-				getOwnedAttributes().addAll((Collection) newValue);
+				getOwnedAttributes().addAll(
+					(Collection<? extends Property>) newValue);
 				return;
 			case UMLPackage.STRUCTURED_CLASSIFIER__OWNED_CONNECTOR :
 				getOwnedConnectors().clear();
-				getOwnedConnectors().addAll((Collection) newValue);
+				getOwnedConnectors().addAll(
+					(Collection<? extends Connector>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -806,6 +847,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_CLASSIFIER__EANNOTATIONS :
@@ -898,6 +940,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.STRUCTURED_CLASSIFIER__EANNOTATIONS :
@@ -1029,6 +1072,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE)
@@ -1050,6 +1094,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetAttributes() {
 		return super.isSetAttributes()
 			|| eIsSet(UMLPackage.STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE);
@@ -1075,6 +1120,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetMembers() {
 		return super.isSetMembers() || isSetRoles();
 	}
@@ -1096,6 +1142,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetFeatures() {
 		return super.isSetFeatures()
 			|| eIsSet(UMLPackage.STRUCTURED_CLASSIFIER__OWNED_CONNECTOR);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SubstitutionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SubstitutionImpl.java
index 98ee45d..47dbbaa 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SubstitutionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/SubstitutionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SubstitutionImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: SubstitutionImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -18,6 +18,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -32,6 +33,8 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectWithInverseResolvingEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.OpaqueExpression;
 import org.eclipse.uml2.uml.StringExpression;
@@ -84,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.SUBSTITUTION;
 	}
@@ -93,9 +97,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSuppliers() {
+	public EList<NamedElement> getSuppliers() {
 		if (suppliers == null) {
-			suppliers = new SubsetSupersetEObjectResolvingEList(
+			suppliers = new SubsetSupersetEObjectResolvingEList<NamedElement>(
 				NamedElement.class, this, UMLPackage.SUBSTITUTION__SUPPLIER,
 				null, SUPPLIER_ESUBSETS);
 		}
@@ -117,9 +121,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getClients() {
+	public EList<NamedElement> getClients() {
 		if (clients == null) {
-			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse(
+			clients = new SubsetSupersetEObjectWithInverseResolvingEList.ManyInverse<NamedElement>(
 				NamedElement.class, this, UMLPackage.SUBSTITUTION__CLIENT,
 				null, CLIENT_ESUBSETS,
 				UMLPackage.NAMED_ELEMENT__CLIENT_DEPENDENCY);
@@ -181,7 +185,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newContract != null) {
-				EList suppliers = getSuppliers();
+				EList<NamedElement> suppliers = getSuppliers();
 				if (!suppliers.contains(newContract)) {
 					suppliers.add(newContract);
 				}
@@ -224,7 +228,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newSubstitutingClassifier != null) {
-				EList clients = getClients();
+				EList<NamedElement> clients = getClients();
 				if (!clients.contains(newSubstitutingClassifier)) {
 					clients.add(newSubstitutingClassifier);
 				}
@@ -268,15 +272,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -291,7 +297,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.SUBSTITUTION__CLIENT :
-				return ((InternalEList) getClients()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClients())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__SUBSTITUTING_CLASSIFIER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -306,18 +313,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.SUBSTITUTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.SUBSTITUTION__OWNING_TEMPLATE_PARAMETER :
@@ -325,7 +333,7 @@
 			case UMLPackage.SUBSTITUTION__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.SUBSTITUTION__CLIENT :
-				return ((InternalEList) getClients()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getClients()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.SUBSTITUTION__MAPPING :
 				return basicSetMapping(null, msgs);
@@ -340,6 +348,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -360,6 +369,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
@@ -427,15 +437,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.SUBSTITUTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.SUBSTITUTION__NAME :
 				setName((String) newValue);
@@ -445,7 +459,8 @@
 				return;
 			case UMLPackage.SUBSTITUTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.SUBSTITUTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -458,11 +473,13 @@
 				return;
 			case UMLPackage.SUBSTITUTION__SUPPLIER :
 				getSuppliers().clear();
-				getSuppliers().addAll((Collection) newValue);
+				getSuppliers().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.SUBSTITUTION__CLIENT :
 				getClients().clear();
-				getClients().addAll((Collection) newValue);
+				getClients().addAll(
+					(Collection<? extends NamedElement>) newValue);
 				return;
 			case UMLPackage.SUBSTITUTION__MAPPING :
 				setMapping((OpaqueExpression) newValue);
@@ -482,6 +499,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
@@ -532,6 +550,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.SUBSTITUTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateBindingImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateBindingImpl.java
index ac993d0..23d0e93 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateBindingImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateBindingImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateBindingImpl.java,v 1.16 2006/11/14 18:02:16 khussey Exp $
+ * $Id: TemplateBindingImpl.java,v 1.17 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -36,6 +37,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameterSubstitution;
@@ -86,7 +88,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList parameterSubstitutions = null;
+	protected EList<TemplateParameterSubstitution> parameterSubstitutions = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -102,6 +104,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEMPLATE_BINDING;
 	}
@@ -111,22 +114,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTargets() {
+	public EList<Element> getTargets() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList targets = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
+			@SuppressWarnings("unchecked")
+			EList<Element> targets = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET);
 			if (targets == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__TARGET,
-					targets = new DerivedUnionEObjectEList(Element.class, this,
+					targets = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.TEMPLATE_BINDING__TARGET, TARGET_ESUBSETS));
 			}
 			return targets;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_BINDING__TARGET, TARGET_ESUBSETS);
 	}
 
@@ -135,23 +140,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TEMPLATE_BINDING__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TEMPLATE_BINDING__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_BINDING__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -160,22 +167,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSources() {
+	public EList<Element> getSources() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList sources = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
+			@SuppressWarnings("unchecked")
+			EList<Element> sources = (EList<Element>) cache.get(eResource,
+				this, UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE);
 			if (sources == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.DIRECTED_RELATIONSHIP__SOURCE,
-					sources = new DerivedUnionEObjectEList(Element.class, this,
+					sources = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
 						UMLPackage.TEMPLATE_BINDING__SOURCE, SOURCE_ESUBSETS));
 			}
 			return sources;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_BINDING__SOURCE, SOURCE_ESUBSETS);
 	}
 
@@ -227,9 +236,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getParameterSubstitutions() {
+	public EList<TemplateParameterSubstitution> getParameterSubstitutions() {
 		if (parameterSubstitutions == null) {
-			parameterSubstitutions = new EObjectContainmentWithInverseEList.Resolving(
+			parameterSubstitutions = new EObjectContainmentWithInverseEList.Resolving<TemplateParameterSubstitution>(
 				TemplateParameterSubstitution.class, this,
 				UMLPackage.TEMPLATE_BINDING__PARAMETER_SUBSTITUTION,
 				UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING);
@@ -318,7 +327,7 @@
 	 * @generated
 	 */
 	public boolean validateParameterSubstitutionFormal(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return TemplateBindingOperations.validateParameterSubstitutionFormal(
 			this, diagnostics, context);
 	}
@@ -329,7 +338,7 @@
 	 * @generated
 	 */
 	public boolean validateOneParameterSubstitution(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return TemplateBindingOperations.validateOneParameterSubstitution(this,
 			diagnostics, context);
 	}
@@ -339,15 +348,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_BINDING__PARAMETER_SUBSTITUTION :
-				return ((InternalEList) getParameterSubstitutions()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getParameterSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -362,17 +373,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_BINDING__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_BINDING__PARAMETER_SUBSTITUTION :
-				return ((InternalEList) getParameterSubstitutions())
+				return ((InternalEList<?>) getParameterSubstitutions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT :
 				return basicSetBoundElement(null, msgs);
@@ -385,6 +397,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -401,6 +414,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
@@ -438,22 +452,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_BINDING__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_BINDING__SIGNATURE :
 				setSignature((TemplateSignature) newValue);
 				return;
 			case UMLPackage.TEMPLATE_BINDING__PARAMETER_SUBSTITUTION :
 				getParameterSubstitutions().clear();
-				getParameterSubstitutions().addAll((Collection) newValue);
+				getParameterSubstitutions()
+					.addAll(
+						(Collection<? extends TemplateParameterSubstitution>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT :
 				setBoundElement((TemplateableElement) newValue);
@@ -467,6 +487,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
@@ -493,6 +514,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_BINDING__EANNOTATIONS :
@@ -535,6 +557,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetTargets() {
 		return super.isSetTargets()
 			|| eIsSet(UMLPackage.TEMPLATE_BINDING__SIGNATURE);
@@ -569,6 +592,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TEMPLATE_BINDING__PARAMETER_SUBSTITUTION);
@@ -593,6 +617,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -613,6 +638,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetSources() {
 		return super.isSetSources()
 			|| eIsSet(UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterImpl.java
index ac53e07..bb62c72 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameterImpl.java,v 1.16 2006/11/14 18:02:18 khussey Exp $
+ * $Id: TemplateParameterImpl.java,v 1.17 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,7 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -120,6 +122,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEMPLATE_PARAMETER;
 	}
@@ -141,23 +144,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TEMPLATE_PARAMETER__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TEMPLATE_PARAMETER__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_PARAMETER__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -599,7 +604,7 @@
 	 * @generated
 	 */
 	public boolean validateMustBeCompatible(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TemplateParameterOperations.validateMustBeCompatible(this,
 			diagnostics, context);
 	}
@@ -609,12 +614,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER__SIGNATURE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -647,14 +654,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER__SIGNATURE :
 				return basicSetSignature(null, msgs);
@@ -673,6 +681,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -689,6 +698,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -730,15 +740,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER__SIGNATURE :
 				setSignature((TemplateSignature) newValue);
@@ -764,6 +778,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -796,6 +811,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER__EANNOTATIONS :
@@ -839,6 +855,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.TEMPLATE_PARAMETER__SIGNATURE);
@@ -862,6 +879,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterSubstitutionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterSubstitutionImpl.java
index dc83111..6d9b57a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterSubstitutionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateParameterSubstitutionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionImpl.java,v 1.17 2006/11/14 18:02:19 khussey Exp $
+ * $Id: TemplateParameterSubstitutionImpl.java,v 1.18 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,6 +38,7 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentEList;
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateBinding;
@@ -76,7 +78,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList actuals = null;
+	protected EList<ParameterableElement> actuals = null;
 
 	/**
 	 * The cached value of the '{@link #getFormal() <em>Formal</em>}' reference.
@@ -96,7 +98,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedActuals = null;
+	protected EList<ParameterableElement> ownedActuals = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -112,6 +114,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEMPLATE_PARAMETER_SUBSTITUTION;
 	}
@@ -121,20 +124,21 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache
 					.put(
 						eResource,
 						this,
 						UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-						ownedElements = new DerivedUnionEObjectEList(
+						ownedElements = new DerivedUnionEObjectEList<Element>(
 							Element.class,
 							this,
 							UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ELEMENT,
@@ -142,7 +146,7 @@
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -152,9 +156,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getActuals() {
+	public EList<ParameterableElement> getActuals() {
 		if (actuals == null) {
-			actuals = new SubsetSupersetEObjectResolvingEList(
+			actuals = new SubsetSupersetEObjectResolvingEList<ParameterableElement>(
 				ParameterableElement.class, this,
 				UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL, null,
 				ACTUAL_ESUBSETS);
@@ -211,9 +215,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedActuals() {
+	public EList<ParameterableElement> getOwnedActuals() {
 		if (ownedActuals == null) {
-			ownedActuals = new SubsetSupersetEObjectContainmentEList.Resolving(
+			ownedActuals = new SubsetSupersetEObjectContainmentEList.Resolving<ParameterableElement>(
 				ParameterableElement.class, this,
 				UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL,
 				OWNED_ACTUAL_ESUPERSETS, null);
@@ -302,7 +306,7 @@
 	 * @generated
 	 */
 	public boolean validateMustBeCompatible(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TemplateParameterSubstitutionOperations
 			.validateMustBeCompatible(this, diagnostics, context);
 	}
@@ -312,12 +316,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -331,17 +337,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL :
-				return ((InternalEList) getOwnedActuals()).basicRemove(
+				return ((InternalEList<?>) getOwnedActuals()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING :
 				return basicSetTemplateBinding(null, msgs);
@@ -354,6 +361,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -370,6 +378,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
@@ -403,26 +412,32 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__FORMAL :
 				setFormal((TemplateParameter) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL :
 				getActuals().clear();
-				getActuals().addAll((Collection) newValue);
+				getActuals().addAll(
+					(Collection<? extends ParameterableElement>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL :
 				getOwnedActuals().clear();
-				getOwnedActuals().addAll((Collection) newValue);
+				getOwnedActuals().addAll(
+					(Collection<? extends ParameterableElement>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING :
 				setTemplateBinding((TemplateBinding) newValue);
@@ -436,6 +451,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
@@ -465,6 +481,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS :
@@ -536,6 +553,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL);
@@ -560,6 +578,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateSignatureImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateSignatureImpl.java
index 7f3bd92..eb99ae3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateSignatureImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateSignatureImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateSignatureImpl.java,v 1.17 2006/11/14 18:02:16 khussey Exp $
+ * $Id: TemplateSignatureImpl.java,v 1.18 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,6 +38,7 @@
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectContainmentWithInverseEList;
 import org.eclipse.uml2.common.util.SubsetSupersetEObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
@@ -74,7 +76,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList parameters = null;
+	protected EList<TemplateParameter> parameters = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedParameters() <em>Owned Parameter</em>}' containment reference list.
@@ -84,7 +86,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ownedParameters = null;
+	protected EList<TemplateParameter> ownedParameters = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -100,6 +102,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEMPLATE_SIGNATURE;
 	}
@@ -109,23 +112,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TEMPLATE_SIGNATURE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TEMPLATE_SIGNATURE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATE_SIGNATURE__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -135,9 +140,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getParameters() {
+	public EList<TemplateParameter> getParameters() {
 		if (parameters == null) {
-			parameters = new SubsetSupersetEObjectResolvingEList(
+			parameters = new SubsetSupersetEObjectResolvingEList<TemplateParameter>(
 				TemplateParameter.class, this,
 				UMLPackage.TEMPLATE_SIGNATURE__PARAMETER, null,
 				PARAMETER_ESUBSETS);
@@ -214,9 +219,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedParameters() {
+	public EList<TemplateParameter> getOwnedParameters() {
 		if (ownedParameters == null) {
-			ownedParameters = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedParameters = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<TemplateParameter>(
 				TemplateParameter.class, this,
 				UMLPackage.TEMPLATE_SIGNATURE__OWNED_PARAMETER,
 				OWNED_PARAMETER_ESUPERSETS, null,
@@ -250,7 +255,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwnElements(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwnElements(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return TemplateSignatureOperations.validateOwnElements(this,
 			diagnostics, context);
 	}
@@ -260,15 +266,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_SIGNATURE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedParameters())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -282,17 +290,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_SIGNATURE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_SIGNATURE__OWNED_PARAMETER :
-				return ((InternalEList) getOwnedParameters()).basicRemove(
+				return ((InternalEList<?>) getOwnedParameters()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE :
 				return basicSetTemplate(null, msgs);
@@ -305,6 +314,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -321,6 +331,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -350,23 +361,29 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_SIGNATURE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_SIGNATURE__PARAMETER :
 				getParameters().clear();
-				getParameters().addAll((Collection) newValue);
+				getParameters().addAll(
+					(Collection<? extends TemplateParameter>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_SIGNATURE__OWNED_PARAMETER :
 				getOwnedParameters().clear();
-				getOwnedParameters().addAll((Collection) newValue);
+				getOwnedParameters().addAll(
+					(Collection<? extends TemplateParameter>) newValue);
 				return;
 			case UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE :
 				setTemplate((TemplateableElement) newValue);
@@ -380,6 +397,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -406,6 +424,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATE_SIGNATURE__EANNOTATIONS :
@@ -489,6 +508,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwner() {
 		return super.isSetOwner()
 			|| eIsSet(UMLPackage.TEMPLATE_SIGNATURE__TEMPLATE);
@@ -499,6 +519,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TEMPLATE_SIGNATURE__OWNED_PARAMETER);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateableElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateableElementImpl.java
index 8d19543..e679554 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateableElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TemplateableElementImpl.java
@@ -8,18 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateableElementImpl.java,v 1.17 2006/11/14 18:02:17 khussey Exp $
+ * $Id: TemplateableElementImpl.java,v 1.18 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
-
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -33,7 +32,9 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateSignature;
 import org.eclipse.uml2.uml.TemplateableElement;
@@ -68,7 +69,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList templateBindings = null;
+	protected EList<TemplateBinding> templateBindings = null;
 
 	/**
 	 * The cached value of the '{@link #getOwnedTemplateSignature() <em>Owned Template Signature</em>}' containment reference.
@@ -94,6 +95,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEMPLATEABLE_ELEMENT;
 	}
@@ -103,23 +105,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_ELEMENT,
 			OWNED_ELEMENT_ESUBSETS);
 	}
@@ -129,9 +133,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTemplateBindings() {
+	public EList<TemplateBinding> getTemplateBindings() {
 		if (templateBindings == null) {
-			templateBindings = new EObjectContainmentWithInverseEList.Resolving(
+			templateBindings = new EObjectContainmentWithInverseEList.Resolving<TemplateBinding>(
 				TemplateBinding.class, this,
 				UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING,
 				UMLPackage.TEMPLATE_BINDING__BOUND_ELEMENT);
@@ -168,9 +172,7 @@
 	 */
 	public TemplateBinding getTemplateBinding(TemplateSignature signature,
 			boolean createOnDemand) {
-		templateBindingLoop : for (Iterator i = getTemplateBindings()
-			.iterator(); i.hasNext();) {
-			TemplateBinding templateBinding = (TemplateBinding) i.next();
+		templateBindingLoop : for (TemplateBinding templateBinding : getTemplateBindings()) {
 			if (signature != null
 				&& !signature.equals(templateBinding.getSignature()))
 				continue templateBindingLoop;
@@ -301,12 +303,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList parameterableElements() {
+	public EList<ParameterableElement> parameterableElements() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
-				UMLPackage.Literals.TEMPLATEABLE_ELEMENT.getEOperations()
-					.get(0));
+			@SuppressWarnings("unchecked")
+			EList<ParameterableElement> result = (EList<ParameterableElement>) cache
+				.get(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
+					.getEOperations().get(0));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TEMPLATEABLE_ELEMENT
 					.getEOperations().get(0),
@@ -332,15 +335,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -360,17 +365,18 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
@@ -383,6 +389,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
@@ -410,19 +417,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -436,6 +448,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
@@ -459,6 +472,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEMPLATEABLE_ELEMENT__EANNOTATIONS :
@@ -495,6 +509,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TestIdentityActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TestIdentityActionImpl.java
index 3d19930..1c7d3d5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TestIdentityActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TestIdentityActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TestIdentityActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: TestIdentityActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -111,6 +120,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TEST_IDENTITY_ACTION;
 	}
@@ -120,23 +130,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(InputPin.class,
-							this, UMLPackage.TEST_IDENTITY_ACTION__INPUT,
+						inputs = new DerivedUnionEObjectEList<InputPin>(
+							InputPin.class, this,
+							UMLPackage.TEST_IDENTITY_ACTION__INPUT,
 							INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.TEST_IDENTITY_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -145,22 +157,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.TEST_IDENTITY_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.TEST_IDENTITY_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.TEST_IDENTITY_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -489,7 +503,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateNoType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateNoType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return TestIdentityActionOperations.validateNoType(this, diagnostics,
 			context);
 	}
@@ -499,7 +514,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return TestIdentityActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -510,7 +526,7 @@
 	 * @generated
 	 */
 	public boolean validateResultIsBoolean(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TestIdentityActionOperations.validateResultIsBoolean(this,
 			diagnostics, context);
 	}
@@ -520,18 +536,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TEST_IDENTITY_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__IN_STRUCTURED_NODE :
@@ -539,26 +556,26 @@
 			case UMLPackage.TEST_IDENTITY_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__FIRST :
 				return basicSetFirst(null, msgs);
 			case UMLPackage.TEST_IDENTITY_ACTION__SECOND :
@@ -574,6 +591,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TEST_IDENTITY_ACTION__EANNOTATIONS :
@@ -665,15 +683,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TEST_IDENTITY_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__NAME :
 				setName((String) newValue);
@@ -683,7 +705,8 @@
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -699,35 +722,44 @@
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.TEST_IDENTITY_ACTION__FIRST :
 				setFirst((InputPin) newValue);
@@ -747,6 +779,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEST_IDENTITY_ACTION__EANNOTATIONS :
@@ -818,6 +851,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TEST_IDENTITY_ACTION__EANNOTATIONS :
@@ -907,6 +941,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.TEST_IDENTITY_ACTION__FIRST)
@@ -928,6 +963,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.TEST_IDENTITY_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeConstraintImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeConstraintImpl.java
index c512961..c0268f3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeConstraintImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeConstraintImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeConstraintImpl.java,v 1.20 2006/11/14 18:02:16 khussey Exp $
+ * $Id: TimeConstraintImpl.java,v 1.21 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -17,11 +17,15 @@
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -86,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TIME_CONSTRAINT;
 	}
@@ -180,6 +185,7 @@
 		return msgs;
 	}
 
+	@Override
 	public NotificationChain basicSetSpecification(
 			ValueSpecification newSpecification, NotificationChain msgs) {
 
@@ -224,6 +230,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public ValueSpecification createSpecification(String name, Type type,
 			EClass eClass) {
 		ValueSpecification newSpecification = (ValueSpecification) create(eClass);
@@ -249,6 +256,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TIME_CONSTRAINT__EANNOTATIONS :
@@ -308,15 +316,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TIME_CONSTRAINT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TIME_CONSTRAINT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TIME_CONSTRAINT__NAME :
 				setName((String) newValue);
@@ -326,7 +338,8 @@
 				return;
 			case UMLPackage.TIME_CONSTRAINT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TIME_CONSTRAINT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -339,7 +352,8 @@
 				return;
 			case UMLPackage.TIME_CONSTRAINT__CONSTRAINED_ELEMENT :
 				getConstrainedElements().clear();
-				getConstrainedElements().addAll((Collection) newValue);
+				getConstrainedElements().addAll(
+					(Collection<? extends Element>) newValue);
 				return;
 			case UMLPackage.TIME_CONSTRAINT__SPECIFICATION :
 				setSpecification((ValueSpecification) newValue);
@@ -359,6 +373,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_CONSTRAINT__EANNOTATIONS :
@@ -406,6 +421,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_CONSTRAINT__EANNOTATIONS :
@@ -453,6 +469,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeEventImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeEventImpl.java
index 88ab16b..69ad98a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeEventImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeEventImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeEventImpl.java,v 1.19 2006/11/14 18:02:19 khussey Exp $
+ * $Id: TimeEventImpl.java,v 1.20 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -34,6 +35,8 @@
 import org.eclipse.uml2.common.util.CacheAdapter;
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -108,6 +111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TIME_EVENT;
 	}
@@ -117,23 +121,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TIME_EVENT__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TIME_EVENT__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TIME_EVENT__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -270,7 +276,7 @@
 	 * @generated
 	 */
 	public boolean validateWhenNonNegative(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TimeEventOperations.validateWhenNonNegative(this, diagnostics,
 			context);
 	}
@@ -280,7 +286,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateStartingTime(DiagnosticChain diagnostics, Map context) {
+	public boolean validateStartingTime(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return TimeEventOperations.validateStartingTime(this, diagnostics,
 			context);
 	}
@@ -290,18 +297,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TIME_EVENT__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TIME_EVENT__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TIME_EVENT__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TIME_EVENT__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.TIME_EVENT__OWNING_TEMPLATE_PARAMETER :
@@ -319,6 +327,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TIME_EVENT__EANNOTATIONS :
@@ -372,15 +381,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TIME_EVENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TIME_EVENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TIME_EVENT__NAME :
 				setName((String) newValue);
@@ -390,7 +403,8 @@
 				return;
 			case UMLPackage.TIME_EVENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TIME_EVENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -416,6 +430,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_EVENT__EANNOTATIONS :
@@ -457,6 +472,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_EVENT__EANNOTATIONS :
@@ -499,6 +515,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -527,6 +544,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TIME_EVENT__WHEN);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeExpressionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeExpressionImpl.java
index a55b486..7972d67 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeExpressionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeExpressionImpl.java
@@ -8,17 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeExpressionImpl.java,v 1.14 2006/11/14 18:02:17 khussey Exp $
+ * $Id: TimeExpressionImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
-
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -26,6 +25,8 @@
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Observation;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -73,7 +74,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList observations = null;
+	protected EList<Observation> observations = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -89,6 +90,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TIME_EXPRESSION;
 	}
@@ -140,9 +142,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getObservations() {
+	public EList<Observation> getObservations() {
 		if (observations == null) {
-			observations = new EObjectResolvingEList(Observation.class, this,
+			observations = new EObjectResolvingEList<Observation>(
+				Observation.class, this,
 				UMLPackage.TIME_EXPRESSION__OBSERVATION);
 		}
 		return observations;
@@ -164,9 +167,7 @@
 	 */
 	public Observation getObservation(String name, boolean ignoreCase,
 			EClass eClass) {
-		observationLoop : for (Iterator i = getObservations().iterator(); i
-			.hasNext();) {
-			Observation observation = (Observation) i.next();
+		observationLoop : for (Observation observation : getObservations()) {
 			if (eClass != null && !eClass.isInstance(observation))
 				continue observationLoop;
 			if (name != null && !(ignoreCase
@@ -192,6 +193,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TIME_EXPRESSION__EANNOTATIONS :
@@ -247,15 +249,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TIME_EXPRESSION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TIME_EXPRESSION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TIME_EXPRESSION__NAME :
 				setName((String) newValue);
@@ -265,7 +271,8 @@
 				return;
 			case UMLPackage.TIME_EXPRESSION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TIME_EXPRESSION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -284,7 +291,8 @@
 				return;
 			case UMLPackage.TIME_EXPRESSION__OBSERVATION :
 				getObservations().clear();
-				getObservations().addAll((Collection) newValue);
+				getObservations().addAll(
+					(Collection<? extends Observation>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -295,6 +303,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_EXPRESSION__EANNOTATIONS :
@@ -339,6 +348,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_EXPRESSION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeIntervalImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeIntervalImpl.java
index 02854b5..b3a325d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeIntervalImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeIntervalImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeIntervalImpl.java,v 1.12 2006/11/14 18:02:18 khussey Exp $
+ * $Id: TimeIntervalImpl.java,v 1.13 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -56,6 +56,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TIME_INTERVAL;
 	}
@@ -102,6 +103,7 @@
 
 	}
 
+	@Override
 	public void setMax(ValueSpecification newMax) {
 
 		if (newMax != null && !(newMax instanceof TimeExpression)) {
@@ -162,6 +164,7 @@
 
 	}
 
+	@Override
 	public void setMin(ValueSpecification newMin) {
 
 		if (newMin != null && !(newMin instanceof TimeExpression)) {
@@ -185,6 +188,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TIME_INTERVAL__EANNOTATIONS :
@@ -242,6 +246,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_INTERVAL__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeObservationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeObservationImpl.java
index c67a70d..233becf 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeObservationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TimeObservationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeObservationImpl.java,v 1.6 2006/11/14 18:02:15 khussey Exp $
+ * $Id: TimeObservationImpl.java,v 1.7 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -16,11 +16,14 @@
 
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -91,6 +94,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TIME_OBSERVATION;
 	}
@@ -170,6 +174,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TIME_OBSERVATION__EANNOTATIONS :
@@ -223,15 +228,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TIME_OBSERVATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TIME_OBSERVATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TIME_OBSERVATION__NAME :
 				setName((String) newValue);
@@ -241,7 +250,8 @@
 				return;
 			case UMLPackage.TIME_OBSERVATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TIME_OBSERVATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -267,6 +277,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_OBSERVATION__EANNOTATIONS :
@@ -308,6 +319,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TIME_OBSERVATION__EANNOTATIONS :
@@ -350,6 +362,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TransitionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TransitionImpl.java
index 16983b3..25f7cb3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TransitionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TransitionImpl.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TransitionImpl.java,v 1.23 2006/11/14 18:02:16 khussey Exp $
+ * $Id: TransitionImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -24,6 +23,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -43,9 +43,13 @@
 
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.StateMachine;
@@ -178,7 +182,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList triggers = null;
+	protected EList<Trigger> triggers = null;
 
 	/**
 	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
@@ -204,6 +208,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TRANSITION;
 	}
@@ -213,24 +218,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getRedefinedElements() {
+	public EList<RedefinableElement> getRedefinedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList redefinedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<RedefinableElement> redefinedElements = (EList<RedefinableElement>) cache
+				.get(eResource, this,
+					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT);
 			if (redefinedElements == null) {
-				cache.put(eResource, this,
-					UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
-					redefinedElements = new DerivedUnionEObjectEList(
-						RedefinableElement.class, this,
-						UMLPackage.TRANSITION__REDEFINED_ELEMENT,
-						REDEFINED_ELEMENT_ESUBSETS));
+				cache
+					.put(
+						eResource,
+						this,
+						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINED_ELEMENT,
+						redefinedElements = new DerivedUnionEObjectEList<RedefinableElement>(
+							RedefinableElement.class, this,
+							UMLPackage.TRANSITION__REDEFINED_ELEMENT,
+							REDEFINED_ELEMENT_ESUBSETS));
 			}
 			return redefinedElements;
 		}
-		return new DerivedUnionEObjectEList(RedefinableElement.class, this,
+		return new DerivedUnionEObjectEList<RedefinableElement>(
+			RedefinableElement.class, this,
 			UMLPackage.TRANSITION__REDEFINED_ELEMENT,
 			REDEFINED_ELEMENT_ESUBSETS);
 	}
@@ -251,9 +262,7 @@
 	 */
 	public RedefinableElement getRedefinedElement(String name,
 			boolean ignoreCase, EClass eClass) {
-		redefinedElementLoop : for (Iterator i = getRedefinedElements()
-			.iterator(); i.hasNext();) {
-			RedefinableElement redefinedElement = (RedefinableElement) i.next();
+		redefinedElementLoop : for (RedefinableElement redefinedElement : getRedefinedElements()) {
 			if (eClass != null && !eClass.isInstance(redefinedElement))
 				continue redefinedElementLoop;
 			if (name != null && !(ignoreCase
@@ -270,23 +279,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.TRANSITION__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.TRANSITION__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.TRANSITION__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -295,9 +306,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedRules() {
+	public EList<Constraint> getOwnedRules() {
 		if (ownedRules == null) {
-			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving(
+			ownedRules = new SubsetSupersetEObjectContainmentWithInverseEList.Resolving<Constraint>(
 				Constraint.class, this, UMLPackage.TRANSITION__OWNED_RULE,
 				null, OWNED_RULE_ESUBSETS, UMLPackage.CONSTRAINT__CONTEXT);
 		}
@@ -309,23 +320,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public EList getRedefinitionContexts() {
+	public EList<Classifier> getRedefinitionContexts() {
 		CacheAdapter cache = getCacheAdapter();
 
 		if (cache != null) {
-			EList result = (EList) cache.get(this,
+			@SuppressWarnings("unchecked")
+			EList<Classifier> result = (EList<Classifier>) cache.get(this,
 				UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
 
 			if (result == null) {
 				Classifier redefinitionContext = redefinitionContext();
-				List redefinitionContexts = redefinitionContext == null
-					? Collections.EMPTY_LIST
-					: Collections.singletonList(redefinitionContext);
+				List<Classifier> redefinitionContexts = redefinitionContext == null
+					? Collections.<Classifier> emptyList()
+					: Collections
+						.<Classifier> singletonList(redefinitionContext);
 				cache
 					.put(
 						this,
 						UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
-						result = new EcoreEList.UnmodifiableEList(
+						result = new EcoreEList.UnmodifiableEList<Classifier>(
 							this,
 							UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 							redefinitionContexts.size(), redefinitionContexts
@@ -336,10 +349,10 @@
 		}
 
 		Classifier redefinitionContext = redefinitionContext();
-		List redefinitionContexts = redefinitionContext == null
-			? Collections.EMPTY_LIST
+		List<Classifier> redefinitionContexts = redefinitionContext == null
+			? Collections.<Classifier> emptyList()
 			: Collections.singletonList(redefinitionContext);
-		return new EcoreEList.UnmodifiableEList(this,
+		return new EcoreEList.UnmodifiableEList<Classifier>(this,
 			UMLPackage.Literals.REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT,
 			redefinitionContexts.size(), redefinitionContexts.toArray());
 	}
@@ -360,9 +373,7 @@
 	 */
 	public Classifier getRedefinitionContext(String name, boolean ignoreCase,
 			EClass eClass) {
-		redefinitionContextLoop : for (Iterator i = getRedefinitionContexts()
-			.iterator(); i.hasNext();) {
-			Classifier redefinitionContext = (Classifier) i.next();
+		redefinitionContextLoop : for (Classifier redefinitionContext : getRedefinitionContexts()) {
 			if (eClass != null && !eClass.isInstance(redefinitionContext))
 				continue redefinitionContextLoop;
 			if (name != null && !(ignoreCase
@@ -670,7 +681,7 @@
 		Resource.Internal eInternalResource = eInternalResource();
 		if (eInternalResource == null || !eInternalResource.isLoading()) {
 			if (newGuard != null) {
-				EList ownedRules = getOwnedRules();
+				EList<Constraint> ownedRules = getOwnedRules();
 				if (!ownedRules.contains(newGuard)) {
 					ownedRules.add(newGuard);
 				}
@@ -803,10 +814,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getTriggers() {
+	public EList<Trigger> getTriggers() {
 		if (triggers == null) {
-			triggers = new EObjectContainmentEList.Resolving(Trigger.class,
-				this, UMLPackage.TRANSITION__TRIGGER);
+			triggers = new EObjectContainmentEList.Resolving<Trigger>(
+				Trigger.class, this, UMLPackage.TRANSITION__TRIGGER);
 		}
 		return triggers;
 	}
@@ -840,8 +851,7 @@
 	 */
 	public Trigger getTrigger(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		triggerLoop : for (Iterator i = getTriggers().iterator(); i.hasNext();) {
-			Trigger trigger = (Trigger) i.next();
+		triggerLoop : for (Trigger trigger : getTriggers()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(trigger.getName())
 				: name.equals(trigger.getName())))
@@ -932,7 +942,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionContextValid(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionContextValid(
 			this, diagnostics, context);
 	}
@@ -943,7 +953,7 @@
 	 * @generated
 	 */
 	public boolean validateRedefinitionConsistent(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return RedefinableElementOperations.validateRedefinitionConsistent(
 			this, diagnostics, context);
 	}
@@ -954,7 +964,7 @@
 	 * @generated
 	 */
 	public boolean validateForkSegmentGuards(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateForkSegmentGuards(this,
 			diagnostics, context);
 	}
@@ -965,7 +975,7 @@
 	 * @generated
 	 */
 	public boolean validateJoinSegmentGuards(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateJoinSegmentGuards(this,
 			diagnostics, context);
 	}
@@ -976,7 +986,7 @@
 	 * @generated
 	 */
 	public boolean validateForkSegmentState(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateForkSegmentState(this, diagnostics,
 			context);
 	}
@@ -987,7 +997,7 @@
 	 * @generated
 	 */
 	public boolean validateJoinSegmentState(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateJoinSegmentState(this, diagnostics,
 			context);
 	}
@@ -998,7 +1008,7 @@
 	 * @generated
 	 */
 	public boolean validateOutgoingPseudostates(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateOutgoingPseudostates(this,
 			diagnostics, context);
 	}
@@ -1009,7 +1019,7 @@
 	 * @generated
 	 */
 	public boolean validateInitialTransition(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateInitialTransition(this,
 			diagnostics, context);
 	}
@@ -1020,7 +1030,7 @@
 	 * @generated
 	 */
 	public boolean validateSignaturesCompatible(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return TransitionOperations.validateSignaturesCompatible(this,
 			diagnostics, context);
 	}
@@ -1067,24 +1077,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TRANSITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TRANSITION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TRANSITION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TRANSITION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.TRANSITION__CONTAINER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -1108,29 +1120,30 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TRANSITION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TRANSITION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.TRANSITION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.TRANSITION__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TRANSITION__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.TRANSITION__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.TRANSITION__CONTAINER :
 				return basicSetContainer(null, msgs);
 			case UMLPackage.TRANSITION__TARGET :
@@ -1138,7 +1151,7 @@
 			case UMLPackage.TRANSITION__EFFECT :
 				return basicSetEffect(null, msgs);
 			case UMLPackage.TRANSITION__TRIGGER :
-				return ((InternalEList) getTriggers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getTriggers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.TRANSITION__SOURCE :
 				return basicSetSource(null, msgs);
@@ -1151,6 +1164,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -1166,6 +1180,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
@@ -1251,15 +1266,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TRANSITION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TRANSITION__NAME :
 				setName((String) newValue);
@@ -1269,22 +1288,26 @@
 				return;
 			case UMLPackage.TRANSITION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TRANSITION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.TRANSITION__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.TRANSITION__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.TRANSITION__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.TRANSITION__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -1309,7 +1332,7 @@
 				return;
 			case UMLPackage.TRANSITION__TRIGGER :
 				getTriggers().clear();
-				getTriggers().addAll((Collection) newValue);
+				getTriggers().addAll((Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.TRANSITION__SOURCE :
 				setSource((Vertex) newValue);
@@ -1323,6 +1346,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
@@ -1388,6 +1412,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TRANSITION__EANNOTATIONS :
@@ -1456,7 +1481,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.TRANSITION__IS_LEAF :
@@ -1477,7 +1503,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == RedefinableElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.REDEFINABLE_ELEMENT__IS_LEAF :
@@ -1498,6 +1525,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1540,6 +1568,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace()
 			|| eIsSet(UMLPackage.TRANSITION__CONTAINER);
@@ -1584,6 +1613,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.TRANSITION__EFFECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TriggerImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TriggerImpl.java
index e84085a..6990fe7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TriggerImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TriggerImpl.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TriggerImpl.java,v 1.12 2006/11/14 18:02:17 khussey Exp $
+ * $Id: TriggerImpl.java,v 1.13 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -25,6 +25,8 @@
 
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Event;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.StringExpression;
@@ -69,7 +71,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList ports = null;
+	protected EList<Port> ports = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -85,6 +87,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TRIGGER;
 	}
@@ -136,9 +139,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getPorts() {
+	public EList<Port> getPorts() {
 		if (ports == null) {
-			ports = new EObjectResolvingEList(Port.class, this,
+			ports = new EObjectResolvingEList<Port>(Port.class, this,
 				UMLPackage.TRIGGER__PORT);
 		}
 		return ports;
@@ -159,8 +162,7 @@
 	 * @generated
 	 */
 	public Port getPort(String name, Type type, boolean ignoreCase) {
-		portLoop : for (Iterator i = getPorts().iterator(); i.hasNext();) {
-			Port port = (Port) i.next();
+		portLoop : for (Port port : getPorts()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(port.getName())
 				: name.equals(port.getName())))
@@ -177,6 +179,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TRIGGER__EANNOTATIONS :
@@ -220,15 +223,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TRIGGER__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TRIGGER__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TRIGGER__NAME :
 				setName((String) newValue);
@@ -238,7 +245,8 @@
 				return;
 			case UMLPackage.TRIGGER__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TRIGGER__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -248,7 +256,7 @@
 				return;
 			case UMLPackage.TRIGGER__PORT :
 				getPorts().clear();
-				getPorts().addAll((Collection) newValue);
+				getPorts().addAll((Collection<? extends Port>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -259,6 +267,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TRIGGER__EANNOTATIONS :
@@ -294,6 +303,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TRIGGER__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypeImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypeImpl.java
index 615c7b4..0fd1653 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypeImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypeImpl.java
@@ -8,13 +8,14 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TypeImpl.java,v 1.19 2006/11/17 15:48:50 khussey Exp $
+ * $Id: TypeImpl.java,v 1.20 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.ecore.EClass;
@@ -23,6 +24,8 @@
 
 import org.eclipse.uml2.uml.AggregationKind;
 import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
@@ -67,6 +70,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TYPE;
 	}
@@ -121,8 +125,8 @@
 			if (eInternalContainer() != null)
 				msgs = eBasicRemoveFromContainer(msgs);
 			if (newPackage != null)
-				msgs = ((InternalEList) newPackage.getOwnedTypes()).basicAdd(
-					this, msgs);
+				msgs = ((InternalEList<Type>) newPackage.getOwnedTypes())
+					.basicAdd(this, msgs);
 			msgs = eBasicSetContainer((InternalEObject) newPackage,
 				UMLPackage.TYPE__PACKAGE, msgs);
 			if (msgs != null)
@@ -152,11 +156,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getAssociations() {
+	public EList<Association> getAssociations() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.TYPE
-				.getEOperations().get(1));
+			@SuppressWarnings("unchecked")
+			EList<Association> result = (EList<Association>) cache.get(this,
+				UMLPackage.Literals.TYPE.getEOperations().get(1));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.TYPE.getEOperations()
 					.get(1), result = TypeOperations.getAssociations(this));
@@ -180,6 +185,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TYPE__EANNOTATIONS :
@@ -229,15 +235,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TYPE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TYPE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TYPE__NAME :
 				setName((String) newValue);
@@ -247,7 +257,8 @@
 				return;
 			case UMLPackage.TYPE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TYPE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -270,6 +281,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TYPE__EANNOTATIONS :
@@ -308,6 +320,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TYPE__EANNOTATIONS :
@@ -362,6 +375,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.TYPE__PACKAGE);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypedElementImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypedElementImpl.java
index 57a4611..007ee9e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypedElementImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/TypedElementImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TypedElementImpl.java,v 1.11 2006/11/14 18:02:15 khussey Exp $
+ * $Id: TypedElementImpl.java,v 1.12 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.TypedElement;
@@ -67,6 +70,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.TYPED_ELEMENT;
 	}
@@ -118,6 +122,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.TYPED_ELEMENT__EANNOTATIONS :
@@ -159,15 +164,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.TYPED_ELEMENT__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.TYPED_ELEMENT__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.TYPED_ELEMENT__NAME :
 				setName((String) newValue);
@@ -177,7 +186,8 @@
 				return;
 			case UMLPackage.TYPED_ELEMENT__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.TYPED_ELEMENT__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -194,6 +204,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TYPED_ELEMENT__EANNOTATIONS :
@@ -226,6 +237,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.TYPED_ELEMENT__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLFactoryImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLFactoryImpl.java
index 06fd340..c1e7614 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLFactoryImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLFactoryImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLFactoryImpl.java,v 1.15 2006/10/10 20:41:28 khussey Exp $
+ * $Id: UMLFactoryImpl.java,v 1.16 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -277,6 +277,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
 			case UMLPackage.COMMENT :
@@ -686,6 +687,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object createFromString(EDataType eDataType, String initialValue) {
 		switch (eDataType.getClassifierID()) {
 			case UMLPackage.VISIBILITY_KIND :
@@ -738,6 +740,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String convertToString(EDataType eDataType, Object instanceValue) {
 		switch (eDataType.getClassifierID()) {
 			case UMLPackage.VISIBILITY_KIND :
@@ -3217,6 +3220,7 @@
 	 * @deprecated
 	 * @generated
 	 */
+	@Deprecated
 	public static UMLPackage getPackage() {
 		return UMLPackage.eINSTANCE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
index dfda6ce..7496bb7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UMLPackageImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLPackageImpl.java,v 1.17 2006/05/16 15:07:26 khussey Exp $
+ * $Id: UMLPackageImpl.java,v 1.18 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -10939,6 +10939,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected void fixInstanceClass(EClassifier eClassifier) {
 		if (eClassifier.getInstanceClassName() == null) {
 			eClassifier
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UnmarshallActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UnmarshallActionImpl.java
index de4a448..c3ffa87 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UnmarshallActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UnmarshallActionImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UnmarshallActionImpl.java,v 1.23 2006/11/14 18:02:17 khussey Exp $
+ * $Id: UnmarshallActionImpl.java,v 1.24 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -23,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,8 +37,16 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -78,7 +86,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList results = null;
+	protected EList<OutputPin> results = null;
 
 	/**
 	 * The cached value of the '{@link #getUnmarshallType() <em>Unmarshall Type</em>}' reference.
@@ -114,6 +122,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.UNMARSHALL_ACTION;
 	}
@@ -123,22 +132,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.UNMARSHALL_ACTION__OUTPUT,
-						OUTPUT_ESUBSETS));
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.UNMARSHALL_ACTION__OUTPUT, OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.UNMARSHALL_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -147,21 +157,23 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.UNMARSHALL_ACTION__INPUT, INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.UNMARSHALL_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -170,10 +182,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getResults() {
+	public EList<OutputPin> getResults() {
 		if (results == null) {
-			results = new EObjectContainmentEList.Resolving(OutputPin.class,
-				this, UMLPackage.UNMARSHALL_ACTION__RESULT);
+			results = new EObjectContainmentEList.Resolving<OutputPin>(
+				OutputPin.class, this, UMLPackage.UNMARSHALL_ACTION__RESULT);
 		}
 		return results;
 	}
@@ -209,8 +221,7 @@
 	 */
 	public OutputPin getResult(String name, Type type, boolean ignoreCase,
 			boolean createOnDemand) {
-		resultLoop : for (Iterator i = getResults().iterator(); i.hasNext();) {
-			OutputPin result = (OutputPin) i.next();
+		resultLoop : for (OutputPin result : getResults()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(result.getName())
 				: name.equals(result.getName())))
@@ -391,7 +402,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateSameType(this, diagnostics,
 			context);
 	}
@@ -402,7 +414,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfObject(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateMultiplicityOfObject(this,
 			diagnostics, context);
 	}
@@ -413,7 +425,7 @@
 	 * @generated
 	 */
 	public boolean validateNumberOfResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateNumberOfResult(this,
 			diagnostics, context);
 	}
@@ -424,7 +436,7 @@
 	 * @generated
 	 */
 	public boolean validateTypeAndOrdering(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateTypeAndOrdering(this,
 			diagnostics, context);
 	}
@@ -435,7 +447,7 @@
 	 * @generated
 	 */
 	public boolean validateMultiplicityOfResult(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateMultiplicityOfResult(this,
 			diagnostics, context);
 	}
@@ -446,7 +458,7 @@
 	 * @generated
 	 */
 	public boolean validateStructuralFeature(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateStructuralFeature(this,
 			diagnostics, context);
 	}
@@ -457,7 +469,7 @@
 	 * @generated
 	 */
 	public boolean validateUnmarshallTypeIsClassifier(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return UnmarshallActionOperations.validateUnmarshallTypeIsClassifier(
 			this, diagnostics, context);
 	}
@@ -467,18 +479,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.UNMARSHALL_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__IN_STRUCTURED_NODE :
@@ -486,28 +499,28 @@
 			case UMLPackage.UNMARSHALL_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.UNMARSHALL_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.UNMARSHALL_ACTION__RESULT :
-				return ((InternalEList) getResults()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getResults()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.UNMARSHALL_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
@@ -520,6 +533,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.UNMARSHALL_ACTION__EANNOTATIONS :
@@ -609,15 +623,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.UNMARSHALL_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__NAME :
 				setName((String) newValue);
@@ -627,7 +645,8 @@
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -643,39 +662,48 @@
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__RESULT :
 				getResults().clear();
-				getResults().addAll((Collection) newValue);
+				getResults().addAll((Collection<? extends OutputPin>) newValue);
 				return;
 			case UMLPackage.UNMARSHALL_ACTION__UNMARSHALL_TYPE :
 				setUnmarshallType((Classifier) newValue);
@@ -692,6 +720,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.UNMARSHALL_ACTION__EANNOTATIONS :
@@ -763,6 +792,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.UNMARSHALL_ACTION__EANNOTATIONS :
@@ -850,6 +880,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.UNMARSHALL_ACTION__RESULT);
@@ -870,6 +901,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.UNMARSHALL_ACTION__OBJECT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UsageImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UsageImpl.java
index 799db0f..a97e1b9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UsageImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UsageImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UsageImpl.java,v 1.2 2005/11/23 20:01:17 khussey Exp $
+ * $Id: UsageImpl.java,v 1.3 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -44,6 +44,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.USAGE;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UseCaseImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UseCaseImpl.java
index 01dcd5e..84032e3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UseCaseImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/UseCaseImpl.java
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UseCaseImpl.java,v 1.23 2006/11/14 18:02:19 khussey Exp $
+ * $Id: UseCaseImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.NotificationChain;
@@ -22,6 +21,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,13 +37,24 @@
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Extend;
 import org.eclipse.uml2.uml.ExtensionPoint;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.GeneralizationSet;
 import org.eclipse.uml2.uml.Include;
+import org.eclipse.uml2.uml.InterfaceRealization;
 import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageImport;
 import org.eclipse.uml2.uml.StringExpression;
+import org.eclipse.uml2.uml.Substitution;
+import org.eclipse.uml2.uml.TemplateBinding;
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Trigger;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.UseCase;
 import org.eclipse.uml2.uml.VisibilityKind;
@@ -79,7 +90,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList includes = null;
+	protected EList<Include> includes = null;
 
 	/**
 	 * The cached value of the '{@link #getExtends() <em>Extend</em>}' containment reference list.
@@ -89,7 +100,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList extends_ = null;
+	protected EList<Extend> extends_ = null;
 
 	/**
 	 * The cached value of the '{@link #getExtensionPoints() <em>Extension Point</em>}' containment reference list.
@@ -99,7 +110,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList extensionPoints = null;
+	protected EList<ExtensionPoint> extensionPoints = null;
 
 	/**
 	 * The cached value of the '{@link #getSubjects() <em>Subject</em>}' reference list.
@@ -109,7 +120,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList subjects = null;
+	protected EList<Classifier> subjects = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -125,6 +136,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.USE_CASE;
 	}
@@ -134,25 +146,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedMembers() {
+	public EList<NamedElement> getOwnedMembers() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedMembers = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
+			@SuppressWarnings("unchecked")
+			EList<NamedElement> ownedMembers = (EList<NamedElement>) cache.get(
+				eResource, this, UMLPackage.Literals.NAMESPACE__OWNED_MEMBER);
 			if (ownedMembers == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.NAMESPACE__OWNED_MEMBER,
-					ownedMembers = new DerivedUnionEObjectEList(
+					ownedMembers = new DerivedUnionEObjectEList<NamedElement>(
 						NamedElement.class, this,
 						UMLPackage.USE_CASE__OWNED_MEMBER,
 						OWNED_MEMBER_ESUBSETS));
 			}
 			return ownedMembers;
 		}
-		return new DerivedUnionEObjectEList(NamedElement.class, this,
-			UMLPackage.USE_CASE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
+		return new DerivedUnionEObjectEList<NamedElement>(NamedElement.class,
+			this, UMLPackage.USE_CASE__OWNED_MEMBER, OWNED_MEMBER_ESUBSETS);
 	}
 
 	/**
@@ -160,9 +173,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getIncludes() {
+	public EList<Include> getIncludes() {
 		if (includes == null) {
-			includes = new EObjectContainmentWithInverseEList.Resolving(
+			includes = new EObjectContainmentWithInverseEList.Resolving<Include>(
 				Include.class, this, UMLPackage.USE_CASE__INCLUDE,
 				UMLPackage.INCLUDE__INCLUDING_CASE);
 		}
@@ -200,8 +213,7 @@
 	 */
 	public Include getInclude(String name, UseCase addition,
 			boolean ignoreCase, boolean createOnDemand) {
-		includeLoop : for (Iterator i = getIncludes().iterator(); i.hasNext();) {
-			Include include = (Include) i.next();
+		includeLoop : for (Include include : getIncludes()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(include.getName())
 				: name.equals(include.getName())))
@@ -220,9 +232,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtends() {
+	public EList<Extend> getExtends() {
 		if (extends_ == null) {
-			extends_ = new EObjectContainmentWithInverseEList.Resolving(
+			extends_ = new EObjectContainmentWithInverseEList.Resolving<Extend>(
 				Extend.class, this, UMLPackage.USE_CASE__EXTEND,
 				UMLPackage.EXTEND__EXTENSION);
 		}
@@ -260,8 +272,7 @@
 	 */
 	public Extend getExtend(String name, UseCase extendedCase,
 			boolean ignoreCase, boolean createOnDemand) {
-		extendLoop : for (Iterator i = getExtends().iterator(); i.hasNext();) {
-			Extend extend = (Extend) i.next();
+		extendLoop : for (Extend extend : getExtends()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(extend.getName())
 				: name.equals(extend.getName())))
@@ -281,9 +292,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getExtensionPoints() {
+	public EList<ExtensionPoint> getExtensionPoints() {
 		if (extensionPoints == null) {
-			extensionPoints = new EObjectContainmentWithInverseEList.Resolving(
+			extensionPoints = new EObjectContainmentWithInverseEList.Resolving<ExtensionPoint>(
 				ExtensionPoint.class, this,
 				UMLPackage.USE_CASE__EXTENSION_POINT,
 				UMLPackage.EXTENSION_POINT__USE_CASE);
@@ -320,9 +331,7 @@
 	 */
 	public ExtensionPoint getExtensionPoint(String name, boolean ignoreCase,
 			boolean createOnDemand) {
-		extensionPointLoop : for (Iterator i = getExtensionPoints().iterator(); i
-			.hasNext();) {
-			ExtensionPoint extensionPoint = (ExtensionPoint) i.next();
+		extensionPointLoop : for (ExtensionPoint extensionPoint : getExtensionPoints()) {
 			if (name != null && !(ignoreCase
 				? name.equalsIgnoreCase(extensionPoint.getName())
 				: name.equals(extensionPoint.getName())))
@@ -339,9 +348,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getSubjects() {
+	public EList<Classifier> getSubjects() {
 		if (subjects == null) {
-			subjects = new EObjectWithInverseResolvingEList.ManyInverse(
+			subjects = new EObjectWithInverseResolvingEList.ManyInverse<Classifier>(
 				Classifier.class, this, UMLPackage.USE_CASE__SUBJECT,
 				UMLPackage.CLASSIFIER__USE_CASE);
 		}
@@ -363,8 +372,7 @@
 	 * @generated
 	 */
 	public Classifier getSubject(String name, boolean ignoreCase, EClass eClass) {
-		subjectLoop : for (Iterator i = getSubjects().iterator(); i.hasNext();) {
-			Classifier subject = (Classifier) i.next();
+		subjectLoop : for (Classifier subject : getSubjects()) {
 			if (eClass != null && !eClass.isInstance(subject))
 				continue subjectLoop;
 			if (name != null && !(ignoreCase
@@ -381,7 +389,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMustHaveName(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMustHaveName(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return UseCaseOperations.validateMustHaveName(this, diagnostics,
 			context);
 	}
@@ -392,7 +401,7 @@
 	 * @generated
 	 */
 	public boolean validateBinaryAssociations(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UseCaseOperations.validateBinaryAssociations(this, diagnostics,
 			context);
 	}
@@ -403,7 +412,7 @@
 	 * @generated
 	 */
 	public boolean validateNoAssociationToUseCase(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UseCaseOperations.validateNoAssociationToUseCase(this,
 			diagnostics, context);
 	}
@@ -414,7 +423,7 @@
 	 * @generated
 	 */
 	public boolean validateCannotIncludeSelf(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return UseCaseOperations.validateCannotIncludeSelf(this, diagnostics,
 			context);
 	}
@@ -424,11 +433,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList allIncludedUseCases() {
+	public EList<UseCase> allIncludedUseCases() {
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
-			EList result = (EList) cache.get(this, UMLPackage.Literals.USE_CASE
-				.getEOperations().get(4));
+			@SuppressWarnings("unchecked")
+			EList<UseCase> result = (EList<UseCase>) cache.get(this,
+				UMLPackage.Literals.USE_CASE.getEOperations().get(4));
 			if (result == null) {
 				cache.put(this, UMLPackage.Literals.USE_CASE.getEOperations()
 					.get(4), result = UseCaseOperations
@@ -444,24 +454,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getElementImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPackageImports())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOwnedRules())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -476,8 +488,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.USE_CASE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getTemplateBindings())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_TEMPLATE_SIGNATURE :
 				if (ownedTemplateSignature != null)
 					msgs = ((InternalEObject) ownedTemplateSignature)
@@ -487,28 +499,32 @@
 				return basicSetOwnedTemplateSignature(
 					(TemplateSignature) otherEnd, msgs);
 			case UMLPackage.USE_CASE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getGeneralizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getPowertypeExtents())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubstitutions())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getUseCases())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getInterfaceRealizations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__INCLUDE :
-				return ((InternalEList) getIncludes()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncludes())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__EXTEND :
-				return ((InternalEList) getExtends()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getExtends())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__EXTENSION_POINT :
-				return ((InternalEList) getExtensionPoints()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getExtensionPoints())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.USE_CASE__SUBJECT :
-				return ((InternalEList) getSubjects()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getSubjects())
+					.basicAdd(otherEnd, msgs);
 		}
 		return eDynamicInverseAdd(otherEnd, featureID, msgs);
 	}
@@ -518,76 +534,77 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.USE_CASE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.USE_CASE__ELEMENT_IMPORT :
-				return ((InternalEList) getElementImports()).basicRemove(
+				return ((InternalEList<?>) getElementImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__PACKAGE_IMPORT :
-				return ((InternalEList) getPackageImports()).basicRemove(
+				return ((InternalEList<?>) getPackageImports()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_RULE :
-				return ((InternalEList) getOwnedRules()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOwnedRules()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNING_TEMPLATE_PARAMETER :
 				return basicSetOwningTemplateParameter(null, msgs);
 			case UMLPackage.USE_CASE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.USE_CASE__TEMPLATE_BINDING :
-				return ((InternalEList) getTemplateBindings()).basicRemove(
+				return ((InternalEList<?>) getTemplateBindings()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_TEMPLATE_SIGNATURE :
 				return basicSetOwnedTemplateSignature(null, msgs);
 			case UMLPackage.USE_CASE__GENERALIZATION :
-				return ((InternalEList) getGeneralizations()).basicRemove(
+				return ((InternalEList<?>) getGeneralizations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__POWERTYPE_EXTENT :
-				return ((InternalEList) getPowertypeExtents()).basicRemove(
+				return ((InternalEList<?>) getPowertypeExtents()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__SUBSTITUTION :
-				return ((InternalEList) getSubstitutions()).basicRemove(
+				return ((InternalEList<?>) getSubstitutions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__COLLABORATION_USE :
-				return ((InternalEList) getCollaborationUses()).basicRemove(
+				return ((InternalEList<?>) getCollaborationUses()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_USE_CASE :
-				return ((InternalEList) getOwnedUseCases()).basicRemove(
+				return ((InternalEList<?>) getOwnedUseCases()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__USE_CASE :
-				return ((InternalEList) getUseCases()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getUseCases()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.USE_CASE__OWNED_BEHAVIOR :
-				return ((InternalEList) getOwnedBehaviors()).basicRemove(
+				return ((InternalEList<?>) getOwnedBehaviors()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__INTERFACE_REALIZATION :
-				return ((InternalEList) getInterfaceRealizations())
+				return ((InternalEList<?>) getInterfaceRealizations())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.USE_CASE__OWNED_TRIGGER :
-				return ((InternalEList) getOwnedTriggers()).basicRemove(
+				return ((InternalEList<?>) getOwnedTriggers()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__INCLUDE :
-				return ((InternalEList) getIncludes()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getIncludes()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.USE_CASE__EXTEND :
-				return ((InternalEList) getExtends()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getExtends()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.USE_CASE__EXTENSION_POINT :
-				return ((InternalEList) getExtensionPoints()).basicRemove(
+				return ((InternalEList<?>) getExtensionPoints()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.USE_CASE__SUBJECT :
-				return ((InternalEList) getSubjects()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getSubjects()).basicRemove(otherEnd,
 					msgs);
 		}
 		return eDynamicInverseRemove(otherEnd, featureID, msgs);
@@ -598,6 +615,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
@@ -721,15 +739,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.USE_CASE__NAME :
 				setName((String) newValue);
@@ -739,22 +761,26 @@
 				return;
 			case UMLPackage.USE_CASE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.USE_CASE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.USE_CASE__ELEMENT_IMPORT :
 				getElementImports().clear();
-				getElementImports().addAll((Collection) newValue);
+				getElementImports().addAll(
+					(Collection<? extends ElementImport>) newValue);
 				return;
 			case UMLPackage.USE_CASE__PACKAGE_IMPORT :
 				getPackageImports().clear();
-				getPackageImports().addAll((Collection) newValue);
+				getPackageImports().addAll(
+					(Collection<? extends PackageImport>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_RULE :
 				getOwnedRules().clear();
-				getOwnedRules().addAll((Collection) newValue);
+				getOwnedRules().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.USE_CASE__IS_LEAF :
 				setIsLeaf(((Boolean) newValue).booleanValue());
@@ -770,7 +796,8 @@
 				return;
 			case UMLPackage.USE_CASE__TEMPLATE_BINDING :
 				getTemplateBindings().clear();
-				getTemplateBindings().addAll((Collection) newValue);
+				getTemplateBindings().addAll(
+					(Collection<? extends TemplateBinding>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_TEMPLATE_SIGNATURE :
 				setOwnedTemplateSignature((TemplateSignature) newValue);
@@ -780,69 +807,81 @@
 				return;
 			case UMLPackage.USE_CASE__GENERALIZATION :
 				getGeneralizations().clear();
-				getGeneralizations().addAll((Collection) newValue);
+				getGeneralizations().addAll(
+					(Collection<? extends Generalization>) newValue);
 				return;
 			case UMLPackage.USE_CASE__POWERTYPE_EXTENT :
 				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection) newValue);
+				getPowertypeExtents().addAll(
+					(Collection<? extends GeneralizationSet>) newValue);
 				return;
 			case UMLPackage.USE_CASE__REDEFINED_CLASSIFIER :
 				getRedefinedClassifiers().clear();
-				getRedefinedClassifiers().addAll((Collection) newValue);
+				getRedefinedClassifiers().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.USE_CASE__GENERAL :
 				getGenerals().clear();
-				getGenerals().addAll((Collection) newValue);
+				getGenerals().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 			case UMLPackage.USE_CASE__SUBSTITUTION :
 				getSubstitutions().clear();
-				getSubstitutions().addAll((Collection) newValue);
+				getSubstitutions().addAll(
+					(Collection<? extends Substitution>) newValue);
 				return;
 			case UMLPackage.USE_CASE__REPRESENTATION :
 				setRepresentation((CollaborationUse) newValue);
 				return;
 			case UMLPackage.USE_CASE__COLLABORATION_USE :
 				getCollaborationUses().clear();
-				getCollaborationUses().addAll((Collection) newValue);
+				getCollaborationUses().addAll(
+					(Collection<? extends CollaborationUse>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_USE_CASE :
 				getOwnedUseCases().clear();
-				getOwnedUseCases().addAll((Collection) newValue);
+				getOwnedUseCases().addAll(
+					(Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.USE_CASE__USE_CASE :
 				getUseCases().clear();
-				getUseCases().addAll((Collection) newValue);
+				getUseCases().addAll((Collection<? extends UseCase>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_BEHAVIOR :
 				getOwnedBehaviors().clear();
-				getOwnedBehaviors().addAll((Collection) newValue);
+				getOwnedBehaviors().addAll(
+					(Collection<? extends Behavior>) newValue);
 				return;
 			case UMLPackage.USE_CASE__CLASSIFIER_BEHAVIOR :
 				setClassifierBehavior((Behavior) newValue);
 				return;
 			case UMLPackage.USE_CASE__INTERFACE_REALIZATION :
 				getInterfaceRealizations().clear();
-				getInterfaceRealizations().addAll((Collection) newValue);
+				getInterfaceRealizations().addAll(
+					(Collection<? extends InterfaceRealization>) newValue);
 				return;
 			case UMLPackage.USE_CASE__OWNED_TRIGGER :
 				getOwnedTriggers().clear();
-				getOwnedTriggers().addAll((Collection) newValue);
+				getOwnedTriggers().addAll(
+					(Collection<? extends Trigger>) newValue);
 				return;
 			case UMLPackage.USE_CASE__INCLUDE :
 				getIncludes().clear();
-				getIncludes().addAll((Collection) newValue);
+				getIncludes().addAll((Collection<? extends Include>) newValue);
 				return;
 			case UMLPackage.USE_CASE__EXTEND :
 				getExtends().clear();
-				getExtends().addAll((Collection) newValue);
+				getExtends().addAll((Collection<? extends Extend>) newValue);
 				return;
 			case UMLPackage.USE_CASE__EXTENSION_POINT :
 				getExtensionPoints().clear();
-				getExtensionPoints().addAll((Collection) newValue);
+				getExtensionPoints().addAll(
+					(Collection<? extends ExtensionPoint>) newValue);
 				return;
 			case UMLPackage.USE_CASE__SUBJECT :
 				getSubjects().clear();
-				getSubjects().addAll((Collection) newValue);
+				getSubjects().addAll(
+					(Collection<? extends Classifier>) newValue);
 				return;
 		}
 		eDynamicSet(featureID, newValue);
@@ -853,6 +892,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
@@ -963,6 +1003,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.USE_CASE__EANNOTATIONS :
@@ -1070,6 +1111,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedMembers() {
 		return super.isSetOwnedMembers()
 			|| eIsSet(UMLPackage.USE_CASE__INCLUDE)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValuePinImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValuePinImpl.java
index 633d37a..d766fa0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValuePinImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValuePinImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValuePinImpl.java,v 1.23 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ValuePinImpl.java,v 1.24 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -20,6 +20,7 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,8 +29,15 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
 import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.ObjectNodeOrderingKind;
+import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -81,6 +89,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VALUE_PIN;
 	}
@@ -191,7 +200,7 @@
 	 * @generated
 	 */
 	public boolean validateCompatibleType(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ValuePinOperations.validateCompatibleType(this, diagnostics,
 			context);
 	}
@@ -202,7 +211,7 @@
 	 * @generated
 	 */
 	public boolean validateNoIncomingEdges(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ValuePinOperations.validateNoIncomingEdges(this, diagnostics,
 			context);
 	}
@@ -212,18 +221,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VALUE_PIN__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.VALUE_PIN__IN_STRUCTURED_NODE :
@@ -231,16 +241,16 @@
 			case UMLPackage.VALUE_PIN__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.VALUE_PIN__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_PIN__UPPER_BOUND :
 				return basicSetUpperBound(null, msgs);
@@ -259,6 +269,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VALUE_PIN__EANNOTATIONS :
@@ -372,15 +383,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VALUE_PIN__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__NAME :
 				setName((String) newValue);
@@ -390,7 +405,8 @@
 				return;
 			case UMLPackage.VALUE_PIN__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -406,23 +422,29 @@
 				return;
 			case UMLPackage.VALUE_PIN__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__TYPE :
 				setType((Type) newValue);
@@ -438,7 +460,7 @@
 				return;
 			case UMLPackage.VALUE_PIN__IN_STATE :
 				getInStates().clear();
-				getInStates().addAll((Collection) newValue);
+				getInStates().addAll((Collection<? extends State>) newValue);
 				return;
 			case UMLPackage.VALUE_PIN__SELECTION :
 				setSelection((Behavior) newValue);
@@ -476,6 +498,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_PIN__EANNOTATIONS :
@@ -571,6 +594,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_PIN__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationActionImpl.java
index a418bc8..568cdac 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValueSpecificationActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: ValueSpecificationActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,6 +36,14 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -99,6 +108,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VALUE_SPECIFICATION_ACTION;
 	}
@@ -108,22 +118,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutputs() {
+	public EList<OutputPin> getOutputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList outputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__OUTPUT);
+			@SuppressWarnings("unchecked")
+			EList<OutputPin> outputs = (EList<OutputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__OUTPUT);
 			if (outputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__OUTPUT,
-					outputs = new DerivedUnionEObjectEList(OutputPin.class,
-						this, UMLPackage.VALUE_SPECIFICATION_ACTION__OUTPUT,
+					outputs = new DerivedUnionEObjectEList<OutputPin>(
+						OutputPin.class, this,
+						UMLPackage.VALUE_SPECIFICATION_ACTION__OUTPUT,
 						OUTPUT_ESUBSETS));
 			}
 			return outputs;
 		}
-		return new DerivedUnionEObjectEList(OutputPin.class, this,
+		return new DerivedUnionEObjectEList<OutputPin>(OutputPin.class, this,
 			UMLPackage.VALUE_SPECIFICATION_ACTION__OUTPUT, OUTPUT_ESUBSETS);
 	}
 
@@ -346,7 +358,7 @@
 	 * @generated
 	 */
 	public boolean validateCompatibleType(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return ValueSpecificationActionOperations.validateCompatibleType(this,
 			diagnostics, context);
 	}
@@ -356,7 +368,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return ValueSpecificationActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -366,18 +379,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__IN_STRUCTURED_NODE :
@@ -385,26 +399,26 @@
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__VALUE :
 				return basicSetValue(null, msgs);
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__RESULT :
@@ -418,6 +432,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__EANNOTATIONS :
@@ -505,15 +520,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__NAME :
 				setName((String) newValue);
@@ -523,7 +542,8 @@
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -539,35 +559,44 @@
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__VALUE :
 				setValue((ValueSpecification) newValue);
@@ -584,6 +613,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__EANNOTATIONS :
@@ -652,6 +682,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION_ACTION__EANNOTATIONS :
@@ -737,6 +768,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOutputs() {
 		return super.isSetOutputs()
 			|| eIsSet(UMLPackage.VALUE_SPECIFICATION_ACTION__RESULT);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationImpl.java
index 4ffb349..e74d38e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/ValueSpecificationImpl.java
@@ -8,18 +8,21 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValueSpecificationImpl.java,v 1.11 2006/11/14 18:02:16 khussey Exp $
+ * $Id: ValueSpecificationImpl.java,v 1.12 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.TemplateParameter;
@@ -72,6 +75,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VALUE_SPECIFICATION;
 	}
@@ -186,6 +190,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION__EANNOTATIONS :
@@ -235,15 +240,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION__NAME :
 				setName((String) newValue);
@@ -253,7 +262,8 @@
 				return;
 			case UMLPackage.VALUE_SPECIFICATION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VALUE_SPECIFICATION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -276,6 +286,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION__EANNOTATIONS :
@@ -314,6 +325,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VALUE_SPECIFICATION__EANNOTATIONS :
@@ -354,7 +366,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.VALUE_SPECIFICATION__TYPE :
@@ -371,7 +384,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == TypedElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.TYPED_ELEMENT__TYPE :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableActionImpl.java
index d8f3eb6..12335d7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VariableActionImpl.java,v 1.14 2006/11/14 18:02:19 khussey Exp $
+ * $Id: VariableActionImpl.java,v 1.15 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -19,12 +19,21 @@
 
 import org.eclipse.emf.common.util.DiagnosticChain;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -75,6 +84,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VARIABLE_ACTION;
 	}
@@ -128,7 +138,7 @@
 	 * @generated
 	 */
 	public boolean validateScopeOfVariable(DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return VariableActionOperations.validateScopeOfVariable(this,
 			diagnostics, context);
 	}
@@ -138,6 +148,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE_ACTION__EANNOTATIONS :
@@ -221,15 +232,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__NAME :
 				setName((String) newValue);
@@ -239,7 +254,8 @@
 				return;
 			case UMLPackage.VARIABLE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -255,35 +271,44 @@
 				return;
 			case UMLPackage.VARIABLE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.VARIABLE_ACTION__VARIABLE :
 				setVariable((Variable) newValue);
@@ -297,6 +322,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE_ACTION__EANNOTATIONS :
@@ -362,6 +388,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE_ACTION__EANNOTATIONS :
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableImpl.java
index 869b9d7..db5e50e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VariableImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VariableImpl.java,v 1.28 2006/11/14 18:02:17 khussey Exp $
+ * $Id: VariableImpl.java,v 1.29 2006/12/14 15:49:30 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -37,6 +38,9 @@
 
 import org.eclipse.uml2.uml.Action;
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.MultiplicityElement;
 import org.eclipse.uml2.uml.Namespace;
@@ -173,6 +177,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VARIABLE;
 	}
@@ -182,23 +187,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOwnedElements() {
+	public EList<Element> getOwnedElements() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList ownedElements = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
+			@SuppressWarnings("unchecked")
+			EList<Element> ownedElements = (EList<Element>) cache.get(
+				eResource, this, UMLPackage.Literals.ELEMENT__OWNED_ELEMENT);
 			if (ownedElements == null) {
 				cache.put(eResource, this,
 					UMLPackage.Literals.ELEMENT__OWNED_ELEMENT,
-					ownedElements = new DerivedUnionEObjectEList(Element.class,
-						this, UMLPackage.VARIABLE__OWNED_ELEMENT,
+					ownedElements = new DerivedUnionEObjectEList<Element>(
+						Element.class, this,
+						UMLPackage.VARIABLE__OWNED_ELEMENT,
 						OWNED_ELEMENT_ESUBSETS));
 			}
 			return ownedElements;
 		}
-		return new DerivedUnionEObjectEList(Element.class, this,
+		return new DerivedUnionEObjectEList<Element>(Element.class, this,
 			UMLPackage.VARIABLE__OWNED_ELEMENT, OWNED_ELEMENT_ESUBSETS);
 	}
 
@@ -645,7 +652,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGt0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGt0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGt0(this,
 			diagnostics, context);
 	}
@@ -655,7 +663,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateLowerGe0(DiagnosticChain diagnostics, Map context) {
+	public boolean validateLowerGe0(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateLowerGe0(this,
 			diagnostics, context);
 	}
@@ -665,7 +674,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateUpperGeLower(DiagnosticChain diagnostics, Map context) {
+	public boolean validateUpperGeLower(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return MultiplicityElementOperations.validateUpperGeLower(this,
 			diagnostics, context);
 	}
@@ -676,7 +686,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationNoSideEffects(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationNoSideEffects(this, diagnostics, context);
 	}
@@ -687,7 +697,7 @@
 	 * @generated
 	 */
 	public boolean validateValueSpecificationConstant(
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return MultiplicityElementOperations
 			.validateValueSpecificationConstant(this, diagnostics, context);
 	}
@@ -760,7 +770,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateOwned(DiagnosticChain diagnostics, Map context) {
+	public boolean validateOwned(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return VariableOperations.validateOwned(this, diagnostics, context);
 	}
 
@@ -778,15 +789,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VARIABLE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VARIABLE__OWNING_TEMPLATE_PARAMETER :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -801,7 +814,8 @@
 				return basicSetTemplateParameter((TemplateParameter) otherEnd,
 					msgs);
 			case UMLPackage.VARIABLE__END :
-				return ((InternalEList) getEnds()).basicAdd(otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEnds())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VARIABLE__SCOPE :
 				if (eInternalContainer() != null)
 					msgs = eBasicRemoveFromContainer(msgs);
@@ -819,18 +833,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VARIABLE__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VARIABLE__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VARIABLE__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.VARIABLE__OWNING_TEMPLATE_PARAMETER :
@@ -838,7 +853,8 @@
 			case UMLPackage.VARIABLE__TEMPLATE_PARAMETER :
 				return basicSetTemplateParameter(null, msgs);
 			case UMLPackage.VARIABLE__END :
-				return ((InternalEList) getEnds()).basicRemove(otherEnd, msgs);
+				return ((InternalEList<?>) getEnds()).basicRemove(otherEnd,
+					msgs);
 			case UMLPackage.VARIABLE__UPPER_VALUE :
 				return basicSetUpperValue(null, msgs);
 			case UMLPackage.VARIABLE__LOWER_VALUE :
@@ -856,6 +872,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -879,6 +896,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
@@ -958,15 +976,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VARIABLE__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VARIABLE__NAME :
 				setName((String) newValue);
@@ -976,7 +998,8 @@
 				return;
 			case UMLPackage.VARIABLE__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VARIABLE__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -992,7 +1015,7 @@
 				return;
 			case UMLPackage.VARIABLE__END :
 				getEnds().clear();
-				getEnds().addAll((Collection) newValue);
+				getEnds().addAll((Collection<? extends ConnectorEnd>) newValue);
 				return;
 			case UMLPackage.VARIABLE__IS_ORDERED :
 				setIsOrdered(((Boolean) newValue).booleanValue());
@@ -1027,6 +1050,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
@@ -1092,6 +1116,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VARIABLE__EANNOTATIONS :
@@ -1150,7 +1175,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eBaseStructuralFeatureID(int derivedFeatureID, Class baseClass) {
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (derivedFeatureID) {
 				case UMLPackage.VARIABLE__IS_ORDERED :
@@ -1177,7 +1203,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public int eDerivedStructuralFeatureID(int baseFeatureID, Class baseClass) {
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == MultiplicityElement.class) {
 			switch (baseFeatureID) {
 				case UMLPackage.MULTIPLICITY_ELEMENT__IS_ORDERED :
@@ -1204,6 +1231,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public String toString() {
 		if (eIsProxy())
 			return super.toString();
@@ -1235,6 +1263,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetOwnedElements() {
 		return super.isSetOwnedElements()
 			|| eIsSet(UMLPackage.VARIABLE__UPPER_VALUE)
@@ -1264,6 +1293,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.VARIABLE__SCOPE)
 			|| eIsSet(UMLPackage.VARIABLE__ACTIVITY_SCOPE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VertexImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VertexImpl.java
index 80ebd46..c4de2e7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VertexImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/VertexImpl.java
@@ -8,17 +8,17 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VertexImpl.java,v 1.17 2006/11/14 18:02:19 khussey Exp $
+ * $Id: VertexImpl.java,v 1.18 2006/12/14 15:49:31 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
 import java.util.Collection;
-import java.util.Iterator;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -28,6 +28,8 @@
 import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.ecore.util.InternalEList;
 
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.StateMachine;
@@ -67,7 +69,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList outgoings = null;
+	protected EList<Transition> outgoings = null;
 
 	/**
 	 * The cached value of the '{@link #getIncomings() <em>Incoming</em>}' reference list.
@@ -77,7 +79,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	protected EList incomings = null;
+	protected EList<Transition> incomings = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -93,6 +95,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.VERTEX;
 	}
@@ -114,10 +117,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getOutgoings() {
+	public EList<Transition> getOutgoings() {
 		if (outgoings == null) {
-			outgoings = new EObjectWithInverseResolvingEList(Transition.class,
-				this, UMLPackage.VERTEX__OUTGOING,
+			outgoings = new EObjectWithInverseResolvingEList<Transition>(
+				Transition.class, this, UMLPackage.VERTEX__OUTGOING,
 				UMLPackage.TRANSITION__SOURCE);
 		}
 		return outgoings;
@@ -138,8 +141,7 @@
 	 * @generated
 	 */
 	public Transition getOutgoing(String name, boolean ignoreCase, EClass eClass) {
-		outgoingLoop : for (Iterator i = getOutgoings().iterator(); i.hasNext();) {
-			Transition outgoing = (Transition) i.next();
+		outgoingLoop : for (Transition outgoing : getOutgoings()) {
 			if (eClass != null && !eClass.isInstance(outgoing))
 				continue outgoingLoop;
 			if (name != null && !(ignoreCase
@@ -156,10 +158,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getIncomings() {
+	public EList<Transition> getIncomings() {
 		if (incomings == null) {
-			incomings = new EObjectWithInverseResolvingEList(Transition.class,
-				this, UMLPackage.VERTEX__INCOMING,
+			incomings = new EObjectWithInverseResolvingEList<Transition>(
+				Transition.class, this, UMLPackage.VERTEX__INCOMING,
 				UMLPackage.TRANSITION__TARGET);
 		}
 		return incomings;
@@ -180,8 +182,7 @@
 	 * @generated
 	 */
 	public Transition getIncoming(String name, boolean ignoreCase, EClass eClass) {
-		incomingLoop : for (Iterator i = getIncomings().iterator(); i.hasNext();) {
-			Transition incoming = (Transition) i.next();
+		incomingLoop : for (Transition incoming : getIncomings()) {
 			if (eClass != null && !eClass.isInstance(incoming))
 				continue incomingLoop;
 			if (name != null && !(ignoreCase
@@ -269,20 +270,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicAdd(otherEnd,
-					msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getEAnnotations())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VERTEX__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicAdd(
-					otherEnd, msgs);
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getClientDependencies())
+					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VERTEX__OUTGOING :
-				return ((InternalEList) getOutgoings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getOutgoings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VERTEX__INCOMING :
-				return ((InternalEList) getIncomings())
+				return ((InternalEList<InternalEObject>) (InternalEList<?>) getIncomings())
 					.basicAdd(otherEnd, msgs);
 			case UMLPackage.VERTEX__CONTAINER :
 				if (eInternalContainer() != null)
@@ -297,26 +300,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VERTEX__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.VERTEX__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.VERTEX__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.VERTEX__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VERTEX__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.VERTEX__CONTAINER :
 				return basicSetContainer(null, msgs);
 		}
@@ -328,6 +332,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eBasicRemoveFromContainerFeature(
 			NotificationChain msgs) {
 		switch (eContainerFeatureID) {
@@ -343,6 +348,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
@@ -388,15 +394,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.VERTEX__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.VERTEX__NAME :
 				setName((String) newValue);
@@ -406,18 +416,21 @@
 				return;
 			case UMLPackage.VERTEX__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.VERTEX__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
 				return;
 			case UMLPackage.VERTEX__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.VERTEX__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends Transition>) newValue);
 				return;
 			case UMLPackage.VERTEX__CONTAINER :
 				setContainer((Region) newValue);
@@ -431,6 +444,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
@@ -469,6 +483,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.VERTEX__EANNOTATIONS :
@@ -523,6 +538,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetNamespace() {
 		return super.isSetNamespace() || eIsSet(UMLPackage.VERTEX__CONTAINER);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteLinkActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteLinkActionImpl.java
index cf8fd1a..b544c4c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteLinkActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteLinkActionImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteLinkActionImpl.java,v 1.2 2005/11/23 20:01:14 khussey Exp $
+ * $Id: WriteLinkActionImpl.java,v 1.3 2006/12/14 15:49:28 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -50,6 +50,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.WRITE_LINK_ACTION;
 	}
@@ -59,7 +60,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateAllowAccess(DiagnosticChain diagnostics, Map context) {
+	public boolean validateAllowAccess(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return WriteLinkActionOperations.validateAllowAccess(this, diagnostics,
 			context);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteStructuralFeatureActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteStructuralFeatureActionImpl.java
index 45fa4c0..af471a3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteStructuralFeatureActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteStructuralFeatureActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteStructuralFeatureActionImpl.java,v 1.22 2006/11/14 18:02:16 khussey Exp $
+ * $Id: WriteStructuralFeatureActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuralFeature;
 import org.eclipse.uml2.uml.StructuredActivityNode;
@@ -88,6 +97,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.WRITE_STRUCTURAL_FEATURE_ACTION;
 	}
@@ -97,22 +107,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-					inputs = new DerivedUnionEObjectEList(InputPin.class, this,
+					inputs = new DerivedUnionEObjectEList<InputPin>(
+						InputPin.class, this,
 						UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__INPUT,
 						INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -237,7 +249,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateInputPin(DiagnosticChain diagnostics, Map context) {
+	public boolean validateInputPin(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return WriteStructuralFeatureActionOperations.validateInputPin(this,
 			diagnostics, context);
 	}
@@ -247,7 +260,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return WriteStructuralFeatureActionOperations.validateMultiplicity(
 			this, diagnostics, context);
 	}
@@ -257,18 +271,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__IN_STRUCTURED_NODE :
@@ -276,26 +291,26 @@
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__OBJECT :
 				return basicSetObject(null, msgs);
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__VALUE :
@@ -309,6 +324,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -400,15 +416,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__NAME :
 				setName((String) newValue);
@@ -418,7 +438,8 @@
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -434,35 +455,44 @@
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__STRUCTURAL_FEATURE :
 				setStructuralFeature((StructuralFeature) newValue);
@@ -482,6 +512,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -553,6 +584,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__EANNOTATIONS :
@@ -642,6 +674,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION__VALUE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteVariableActionImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteVariableActionImpl.java
index 9988c7b..839e08a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteVariableActionImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/WriteVariableActionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteVariableActionImpl.java,v 1.22 2006/11/14 18:02:18 khussey Exp $
+ * $Id: WriteVariableActionImpl.java,v 1.23 2006/12/14 15:49:29 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.impl;
 
@@ -22,6 +22,7 @@
 
 import org.eclipse.emf.common.util.EList;
 
+import org.eclipse.emf.ecore.EAnnotation;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
@@ -35,7 +36,15 @@
 import org.eclipse.uml2.common.util.DerivedUnionEObjectEList;
 
 import org.eclipse.uml2.uml.Activity;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.ActivityNode;
+import org.eclipse.uml2.uml.ActivityPartition;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.ExceptionHandler;
 import org.eclipse.uml2.uml.InputPin;
+import org.eclipse.uml2.uml.InterruptibleActivityRegion;
 import org.eclipse.uml2.uml.StringExpression;
 import org.eclipse.uml2.uml.StructuredActivityNode;
 import org.eclipse.uml2.uml.Type;
@@ -88,6 +97,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EClass eStaticClass() {
 		return UMLPackage.Literals.WRITE_VARIABLE_ACTION;
 	}
@@ -97,23 +107,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList getInputs() {
+	public EList<InputPin> getInputs() {
 
 		CacheAdapter cache = getCacheAdapter();
 		if (cache != null) {
 			Resource eResource = eResource();
-			EList inputs = (EList) cache.get(eResource, this,
-				UMLPackage.Literals.ACTION__INPUT);
+			@SuppressWarnings("unchecked")
+			EList<InputPin> inputs = (EList<InputPin>) cache.get(eResource,
+				this, UMLPackage.Literals.ACTION__INPUT);
 			if (inputs == null) {
 				cache
 					.put(eResource, this, UMLPackage.Literals.ACTION__INPUT,
-						inputs = new DerivedUnionEObjectEList(InputPin.class,
-							this, UMLPackage.WRITE_VARIABLE_ACTION__INPUT,
+						inputs = new DerivedUnionEObjectEList<InputPin>(
+							InputPin.class, this,
+							UMLPackage.WRITE_VARIABLE_ACTION__INPUT,
 							INPUT_ESUBSETS));
 			}
 			return inputs;
 		}
-		return new DerivedUnionEObjectEList(InputPin.class, this,
+		return new DerivedUnionEObjectEList<InputPin>(InputPin.class, this,
 			UMLPackage.WRITE_VARIABLE_ACTION__INPUT, INPUT_ESUBSETS);
 	}
 
@@ -232,7 +244,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateSameType(DiagnosticChain diagnostics, Map context) {
+	public boolean validateSameType(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return WriteVariableActionOperations.validateSameType(this,
 			diagnostics, context);
 	}
@@ -242,7 +255,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validateMultiplicity(DiagnosticChain diagnostics, Map context) {
+	public boolean validateMultiplicity(DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return WriteVariableActionOperations.validateMultiplicity(this,
 			diagnostics, context);
 	}
@@ -252,18 +266,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd,
 			int featureID, NotificationChain msgs) {
 		switch (featureID) {
 			case UMLPackage.WRITE_VARIABLE_ACTION__EANNOTATIONS :
-				return ((InternalEList) getEAnnotations()).basicRemove(
+				return ((InternalEList<?>) getEAnnotations()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__OWNED_COMMENT :
-				return ((InternalEList) getOwnedComments()).basicRemove(
+				return ((InternalEList<?>) getOwnedComments()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__CLIENT_DEPENDENCY :
-				return ((InternalEList) getClientDependencies()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getClientDependencies())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__NAME_EXPRESSION :
 				return basicSetNameExpression(null, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__IN_STRUCTURED_NODE :
@@ -271,26 +286,26 @@
 			case UMLPackage.WRITE_VARIABLE_ACTION__ACTIVITY :
 				return basicSetActivity(null, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__OUTGOING :
-				return ((InternalEList) getOutgoings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getOutgoings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__INCOMING :
-				return ((InternalEList) getIncomings()).basicRemove(otherEnd,
-					msgs);
+				return ((InternalEList<?>) getIncomings()).basicRemove(
+					otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__IN_PARTITION :
-				return ((InternalEList) getInPartitions()).basicRemove(
+				return ((InternalEList<?>) getInPartitions()).basicRemove(
 					otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__IN_INTERRUPTIBLE_REGION :
-				return ((InternalEList) getInInterruptibleRegions())
+				return ((InternalEList<?>) getInInterruptibleRegions())
 					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__HANDLER :
-				return ((InternalEList) getHandlers()).basicRemove(otherEnd,
+				return ((InternalEList<?>) getHandlers()).basicRemove(otherEnd,
 					msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__LOCAL_PRECONDITION :
-				return ((InternalEList) getLocalPreconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPreconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__LOCAL_POSTCONDITION :
-				return ((InternalEList) getLocalPostconditions()).basicRemove(
-					otherEnd, msgs);
+				return ((InternalEList<?>) getLocalPostconditions())
+					.basicRemove(otherEnd, msgs);
 			case UMLPackage.WRITE_VARIABLE_ACTION__VALUE :
 				return basicSetValue(null, msgs);
 		}
@@ -302,6 +317,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case UMLPackage.WRITE_VARIABLE_ACTION__EANNOTATIONS :
@@ -389,15 +405,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
 			case UMLPackage.WRITE_VARIABLE_ACTION__EANNOTATIONS :
 				getEAnnotations().clear();
-				getEAnnotations().addAll((Collection) newValue);
+				getEAnnotations().addAll(
+					(Collection<? extends EAnnotation>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__OWNED_COMMENT :
 				getOwnedComments().clear();
-				getOwnedComments().addAll((Collection) newValue);
+				getOwnedComments().addAll(
+					(Collection<? extends Comment>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__NAME :
 				setName((String) newValue);
@@ -407,7 +427,8 @@
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__CLIENT_DEPENDENCY :
 				getClientDependencies().clear();
-				getClientDependencies().addAll((Collection) newValue);
+				getClientDependencies().addAll(
+					(Collection<? extends Dependency>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__NAME_EXPRESSION :
 				setNameExpression((StringExpression) newValue);
@@ -423,35 +444,44 @@
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__OUTGOING :
 				getOutgoings().clear();
-				getOutgoings().addAll((Collection) newValue);
+				getOutgoings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__INCOMING :
 				getIncomings().clear();
-				getIncomings().addAll((Collection) newValue);
+				getIncomings().addAll(
+					(Collection<? extends ActivityEdge>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__IN_PARTITION :
 				getInPartitions().clear();
-				getInPartitions().addAll((Collection) newValue);
+				getInPartitions().addAll(
+					(Collection<? extends ActivityPartition>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__IN_INTERRUPTIBLE_REGION :
 				getInInterruptibleRegions().clear();
-				getInInterruptibleRegions().addAll((Collection) newValue);
+				getInInterruptibleRegions()
+					.addAll(
+						(Collection<? extends InterruptibleActivityRegion>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__REDEFINED_NODE :
 				getRedefinedNodes().clear();
-				getRedefinedNodes().addAll((Collection) newValue);
+				getRedefinedNodes().addAll(
+					(Collection<? extends ActivityNode>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__HANDLER :
 				getHandlers().clear();
-				getHandlers().addAll((Collection) newValue);
+				getHandlers().addAll(
+					(Collection<? extends ExceptionHandler>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__LOCAL_PRECONDITION :
 				getLocalPreconditions().clear();
-				getLocalPreconditions().addAll((Collection) newValue);
+				getLocalPreconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__LOCAL_POSTCONDITION :
 				getLocalPostconditions().clear();
-				getLocalPostconditions().addAll((Collection) newValue);
+				getLocalPostconditions().addAll(
+					(Collection<? extends Constraint>) newValue);
 				return;
 			case UMLPackage.WRITE_VARIABLE_ACTION__VARIABLE :
 				setVariable((Variable) newValue);
@@ -468,6 +498,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
 			case UMLPackage.WRITE_VARIABLE_ACTION__EANNOTATIONS :
@@ -536,6 +567,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case UMLPackage.WRITE_VARIABLE_ACTION__EANNOTATIONS :
@@ -621,6 +653,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	public boolean isSetInputs() {
 		return super.isSetInputs()
 			|| eIsSet(UMLPackage.WRITE_VARIABLE_ACTION__VALUE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/uml.ecore b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/uml.ecore
index e6f283d..515b85a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/uml.ecore
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/impl/uml.ecore
@@ -20,11 +20,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true" eSuperTypes="http://www.eclipse.org/emf/2002/Ecore#//EModelElement">
     <eOperations name="not_own_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_owner" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="destroy" ordered="false" lowerBound="1"/>
     <eOperations name="hasKeyword" ordered="false" lowerBound="1" eType="#//Boolean">
@@ -136,7 +146,12 @@
     </eAnnotations>
     <eOperations name="elements_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedClass" ordered="false" lowerBound="1" eType="#//Class">
       <eParameters name="name" ordered="false" lowerBound="1" eType="#//String"/>
@@ -222,15 +237,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
     <eOperations name="has_no_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_qualified_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility_needs_ownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createDependency" ordered="false" lowerBound="1" eType="#//Dependency">
       <eParameters name="supplier" ordered="false" lowerBound="1" eType="#//NamedElement"/>
@@ -307,7 +337,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
     <eOperations name="members_distinguishable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createElementImport" ordered="false" lowerBound="1" eType="#//ElementImport">
       <eParameters name="element" ordered="false" lowerBound="1" eType="#//PackageableElement"/>
@@ -362,11 +397,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ElementImport" eSuperTypes="#//DirectedRelationship">
     <eOperations name="visibility_public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="imported_element_is_public" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getName" ordered="false" lowerBound="1" eType="#//String"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
@@ -385,7 +430,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="PackageImport" eSuperTypes="#//DirectedRelationship">
     <eOperations name="public_or_private" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
         lowerBound="1" eType="#//VisibilityKind" defaultValueLiteral="public"/>
@@ -401,23 +451,48 @@
   <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
     <eOperations name="not_apply_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="boolean_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_applied_to_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
         eType="#//Element"/>
@@ -475,19 +550,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="Association" eSuperTypes="#//Classifier #//Relationship">
     <eOperations name="specialized_end_number" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="specialized_end_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isBinary" ordered="false" lowerBound="1" eType="#//Boolean"/>
     <eOperations name="getEndTypes" upperBound="-1" eType="#//Type"/>
@@ -529,19 +624,39 @@
     </eAnnotations>
     <eOperations name="no_cycles_in_generalization" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="generalization_hierarchies" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="specialize_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getAllAttributes" ordered="false" upperBound="-1" eType="#//Property"/>
     <eOperations name="getOperations" ordered="false" upperBound="-1" eType="#//Operation"/>
@@ -634,11 +749,21 @@
       eSuperTypes="#//NamedElement">
     <eOperations name="redefinition_context_valid" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinition_consistent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isConsistentWith" ordered="false" lowerBound="1" eType="#//Boolean">
       <eParameters name="redefinee" ordered="false" lowerBound="1" eType="#//RedefinableElement"/>
@@ -676,11 +801,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="TemplateBinding" eSuperTypes="#//DirectedRelationship">
     <eOperations name="parameter_substitution_formal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_parameter_substitution" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
         lowerBound="1" eType="#//TemplateSignature">
@@ -699,7 +834,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
     <eOperations name="own_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
         upperBound="-1" eType="#//TemplateParameter"/>
@@ -715,7 +855,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="TemplateParameter" eSuperTypes="#//Element">
     <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
         lowerBound="1" eType="#//TemplateSignature" eOpposite="#//TemplateSignature/ownedParameter">
@@ -750,7 +895,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="TemplateParameterSubstitution" eSuperTypes="#//Element">
     <eOperations name="must_be_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="formal" ordered="false"
         lowerBound="1" eType="#//TemplateParameter"/>
@@ -768,7 +918,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Generalization" eSuperTypes="#//DirectedRelationship">
     <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSubstitutable" ordered="false"
         eType="#//Boolean" unsettable="true"/>
@@ -786,11 +941,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
     <eOperations name="generalization_same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maps_to_generalization_set" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -836,15 +1001,30 @@
     </eAnnotations>
     <eOperations name="language_body_size" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="only_return_result_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_return_result_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getResult" ordered="false" eType="#//Parameter"/>
     <eOperations name="value" ordered="false" lowerBound="1" eType="#//Integer"/>
@@ -867,23 +1047,48 @@
   <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
     <eOperations name="connector_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="stream_and_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_exception" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="reentrant_behaviors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="in_and_out" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefault" ordered="false" eType="#//String"/>
     <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
@@ -929,23 +1134,48 @@
       eSuperTypes="#//Element">
     <eOperations name="upper_gt_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="lower_ge_0" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="upper_ge_lower" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_no_side_effects" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="value_specification_constant" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="setLower" ordered="false" lowerBound="1">
       <eParameters name="newLower" ordered="false" lowerBound="1" eType="#//Integer"/>
@@ -1004,19 +1234,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="part_with_port_empty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="role_and_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="self_part_with_port" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefiningEnd" ordered="false" lowerBound="1" eType="#//Property"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
@@ -1045,43 +1295,93 @@
     </eAnnotations>
     <eOperations name="multiplicity_of_composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetting_context_conforms" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefined_property_inherited" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetting_rules" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="navigable_readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="derived_union_is_derived" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="derived_union_is_read_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subsetted_property_names" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binding_to_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getDefault" ordered="false" eType="#//String"/>
     <eOperations name="isSetDefault" ordered="false" lowerBound="1" eType="#//Boolean"/>
@@ -1193,11 +1493,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
     <eOperations name="deployed_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
         eType="#//String" unsettable="true"/>
@@ -1266,11 +1576,21 @@
     </eAnnotations>
     <eOperations name="at_most_one_return" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="only_body_for_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getLower" ordered="false" lowerBound="1" eType="#//Integer"/>
     <eOperations name="getUpper" ordered="false" lowerBound="1" eType="#//UnlimitedNatural"/>
@@ -1374,19 +1694,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="Behavior" abstract="true" eSuperTypes="#//Class">
     <eOperations name="parameters_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="feature_of_context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_realize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="most_one_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getContext" ordered="false" eType="#//BehavioredClassifier"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReentrant" ordered="false"
@@ -1434,7 +1774,12 @@
     </eAnnotations>
     <eOperations name="passive_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getExtensions" ordered="false" upperBound="-1" eType="#//Extension"/>
     <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
@@ -1470,7 +1815,12 @@
       eSuperTypes="#//Classifier">
     <eOperations name="class_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getImplementedInterfaces" ordered="false" upperBound="-1" eType="#//Interface"/>
     <eOperations name="getAllImplementedInterfaces" ordered="false" upperBound="-1"
@@ -1505,7 +1855,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">
     <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedOperation" ordered="false" lowerBound="1" eType="#//Operation">
       <eParameters name="name" ordered="false" eType="#//String"/>
@@ -1547,7 +1902,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
     <eOperations name="not_query" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
         eType="#//Signal"/>
@@ -1569,24 +1929,49 @@
       <contents xsi:type="ecore:EOperation" name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//StateMachine/classifier_context"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="protocol_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="entry_exit_do" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deep_or_shallow_history" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ports_connected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="conformance" ordered="false"
         upperBound="-1" eType="#//ProtocolConformance" containment="true" eOpposite="#//ProtocolConformance/specificMachine">
@@ -1603,19 +1988,39 @@
     </eAnnotations>
     <eOperations name="classifier_context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="context_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="connection_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="method" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="LCA" ordered="false" lowerBound="1" eType="#//Namespace">
       <eParameters name="s1" ordered="false" lowerBound="1" eType="#//State"/>
@@ -1660,19 +2065,39 @@
     </eAnnotations>
     <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deep_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="shallow_history_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier"/>
     <eOperations name="isRedefinitionContextValid" ordered="false" lowerBound="1"
@@ -1729,31 +2154,66 @@
     </eAnnotations>
     <eOperations name="fork_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_segment_guards" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="fork_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_segment_state" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="outgoing_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="initial_transition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signatures_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="redefinitionContext" ordered="false" lowerBound="1" eType="#//Classifier"/>
     <eOperations name="containingStateMachine" ordered="false" lowerBound="1" eType="#//StateMachine"/>
@@ -1800,19 +2260,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
     <eOperations name="required_interfaces" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="port_aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="port_destroyed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="default_value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getProvideds" ordered="false" upperBound="-1" eType="#//Interface"/>
     <eOperations name="getRequireds" ordered="false" upperBound="-1" eType="#//Interface"/>
@@ -1852,23 +2332,48 @@
     </eAnnotations>
     <eOperations name="submachine_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="destinations_or_sources_of_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="submachine_or_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="composite_states" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="entry_or_exit" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isSimple" ordered="false" lowerBound="1" eType="#//Boolean"/>
     <eOperations name="isComposite" ordered="false" lowerBound="1" eType="#//Boolean"/>
@@ -1932,11 +2437,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ConnectionPointReference" eSuperTypes="#//Vertex">
     <eOperations name="entry_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="exit_pseudostates" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="entry" ordered="false"
         upperBound="-1" eType="#//Pseudostate"/>
@@ -1950,39 +2465,84 @@
   <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" eSuperTypes="#//Vertex">
     <eOperations name="initial_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="history_vertices" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="join_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transitions_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="fork_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transitions_outgoing" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="junction_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="choice_vertex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="outgoing_from_initial" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
         eType="#//PseudostateKind" defaultValueLiteral="initial"/>
@@ -2028,7 +2588,12 @@
       eSuperTypes="#//Classifier">
     <eOperations name="multiplicities" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createOwnedAttribute" ordered="false" lowerBound="1" eType="#//Property">
       <eParameters name="name" ordered="false" eType="#//String"/>
@@ -2056,35 +2621,75 @@
   <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
     <eOperations name="types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="roles" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interfaces_ports" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interface_port_implements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="between_interface_port_signature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="union_signature_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="assembly_connector" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
@@ -2113,11 +2718,21 @@
     </eAnnotations>
     <eOperations name="non_owned_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="is_binary" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getStereotypeEnd" ordered="false" eType="#//Property"/>
     <eOperations name="getStereotype" ordered="false" eType="#//Stereotype"/>
@@ -2155,21 +2770,41 @@
     </eAnnotations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="aggregation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Stereotype" eSuperTypes="#//Class">
     <eOperations name="name_not_clash" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="generalize" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="createExtension" ordered="false" lowerBound="1" eType="#//Extension">
       <eParameters name="metaclass" ordered="false" lowerBound="1" eType="#//Class"/>
@@ -2205,11 +2840,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="Profile" eSuperTypes="#//Package">
     <eOperations name="metaclass_reference_not_specialized" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="references_same_metamodel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="create" ordered="false" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EObject">
       <eParameters name="classifier" ordered="false" lowerBound="1" eType="#//Classifier"/>
@@ -2250,15 +2895,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
     <eOperations name="same_parameterized_entity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="two_parameter_sets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
         lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>
@@ -2342,15 +3002,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="CollaborationUse" eSuperTypes="#//NamedElement">
     <eOperations name="client_elements" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="every_role" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="connectors" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1"
         eType="#//Collaboration"/>
@@ -2368,19 +3043,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="UseCase" eSuperTypes="#//BehavioredClassifier">
     <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="binary_associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_association_to_use_case" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_include_self" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="allIncludedUseCases" ordered="false" upperBound="-1" eType="#//UseCase"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="include" ordered="false"
@@ -2411,7 +3106,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Extend" eSuperTypes="#//NamedElement #//DirectedRelationship">
     <eOperations name="extension_points" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extendedCase" ordered="false"
         lowerBound="1" eType="#//UseCase">
@@ -2431,7 +3131,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="ExtensionPoint" eSuperTypes="#//RedefinableElement">
     <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="useCase" ordered="false"
         lowerBound="1" eType="#//UseCase" eOpposite="#//UseCase/extensionPoint"/>
@@ -2446,7 +3151,12 @@
     </eAnnotations>
     <eOperations name="inherited_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getInheritedParameters" ordered="false" upperBound="-1" eType="#//TemplateParameter"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extendedSignature" ordered="false"
@@ -2472,7 +3182,12 @@
     </eAnnotations>
     <eOperations name="has_constraining_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="allowSubstitutable" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true"/>
@@ -2490,11 +3205,21 @@
     </eAnnotations>
     <eOperations name="operands" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="subexpressions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="subExpression" ordered="false"
         upperBound="-1" eType="#//StringExpression" containment="true" eOpposite="#//StringExpression/owningExpression">
@@ -2554,19 +3279,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//DeploymentTarget #//PackageableElement #//DeployedArtifact">
     <eOperations name="defining_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="deployment_artifact" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
         upperBound="-1" eType="#//Classifier"/>
@@ -2705,11 +3450,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="FunctionBehavior" eSuperTypes="#//OpaqueBehavior">
     <eOperations name="one_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="types_of_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="OpaqueAction" eSuperTypes="#//Action">
@@ -2762,11 +3517,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
     <eOperations name="owned_structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
         eType="#//StructuredActivityNode" eOpposite="#//StructuredActivityNode/node">
@@ -2807,7 +3572,12 @@
     </eAnnotations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
         upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
@@ -2827,15 +3597,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
     <eOperations name="nodes_and_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="group_owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
         upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
@@ -2867,15 +3652,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//Behavior">
     <eOperations name="no_supergroups" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="activity_parameter_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="autonomous" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="structuredNode" ordered="false"
         upperBound="-1" eType="#//StructuredActivityNode" changeable="false" volatile="true"
@@ -2910,7 +3710,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//MultiplicityElement">
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="isAccessibleBy" ordered="false" lowerBound="1" eType="#//Boolean">
       <eParameters name="a" ordered="false" lowerBound="1" eType="#//Action"/>
@@ -2927,15 +3732,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
     <eOperations name="source_and_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="owned" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structured_node" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
         lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing"/>
@@ -2976,19 +3796,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
     <eOperations name="dimension_not_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_part" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="represents_part_and_is_contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -3016,7 +3856,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
     <eOperations name="interrupting_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="node" ordered="false" upperBound="-1"
         eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
@@ -3028,19 +3873,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ExceptionHandler" eSuperTypes="#//Element">
     <eOperations name="exception_body" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edge_source_target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="handlerBody" ordered="false"
         lowerBound="1" eType="#//ExecutableNode"/>
@@ -3056,19 +3921,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
     <eOperations name="object_flow_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_unique" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selection_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
         lowerBound="1" eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO"/>
@@ -3092,13 +3977,23 @@
   <eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin">
     <eOperations name="incoming_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Pin" eSuperTypes="#//ObjectNode #//MultiplicityElement">
     <eOperations name="control_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isControl" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -3106,21 +4001,41 @@
   <eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin">
     <eOperations name="outgoing_edges_structured_only" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CallAction" abstract="true" eSuperTypes="#//InvocationAction">
     <eOperations name="synchronous_call" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isSynchronous" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true"/>
@@ -3132,7 +4047,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="InvocationAction" abstract="true" eSuperTypes="#//Action">
     <eOperations name="on_port_receiver" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
         eType="#//InputPin" containment="true">
@@ -3144,11 +4064,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="SendSignalAction" eSuperTypes="#//InvocationAction">
     <eOperations name="number_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -3162,20 +4092,40 @@
       <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_target_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
         lowerBound="1" eType="#//Operation"/>
@@ -3189,16 +4139,31 @@
       <contents xsi:type="ecore:EOperation" name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//CallAction/type_ordering_multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="argument_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_pin_equal_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
         lowerBound="1" eType="#//Behavior"/>
@@ -3214,39 +4179,79 @@
   <eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge">
     <eOperations name="object_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode">
     <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="control_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
     <eOperations name="has_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
         lowerBound="1" eType="#//Parameter"/>
@@ -3254,11 +4259,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
     <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_incoming_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//ValueSpecification" containment="true"/>
@@ -3266,31 +4281,66 @@
   <eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
     <eOperations name="sending_receiving_message_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_refer_to" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_is_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="signature_is_signal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_cross_boundaries" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="occurrence_specifications" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="getMessageKind" ordered="false" lowerBound="1" eType="#//MessageKind"/>
     <eOperations name="getSignature" ordered="false" eType="#//NamedElement"/>
@@ -3375,15 +4425,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
     <eOperations name="interaction_uses_share_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selector_specified" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
         eType="#//ConnectableElement"/>
@@ -3403,33 +4468,68 @@
   <eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionUse">
     <eOperations name="parts_of_internal_structures" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="assume" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="commutativity_of_decomposition" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InteractionUse" eSuperTypes="#//InteractionFragment">
     <eOperations name="gates_match" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="all_lifelines" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments_correspond_to_parameters" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="arguments_are_constants" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
         lowerBound="1" eType="#//Interaction"/>
@@ -3443,11 +4543,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
     <eOperations name="messages_actual_gate" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="messages_combined_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
@@ -3473,11 +4583,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
     <eOperations name="guard_directly_prior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="guard_contain_references" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
         eType="#//InteractionConstraint" containment="true">
@@ -3491,27 +4611,57 @@
   <eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
     <eOperations name="dynamic_variables" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="global_data" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maxint_positive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="maxint_greater_equal_minint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
         eType="#//ValueSpecification" containment="true">
@@ -3526,7 +4676,12 @@
       eSuperTypes="#//InteractionFragment">
     <eOperations name="same_lifeline" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
         lowerBound="1" eType="#//OccurrenceSpecification"/>
@@ -3548,7 +4703,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActionExecutionSpecification" eSuperTypes="#//ExecutionSpecification">
     <eOperations name="action_referenced" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false"
         lowerBound="1" eType="#//Action"/>
@@ -3561,13 +4721,23 @@
   <eClassifiers xsi:type="ecore:EClass" name="CreationEvent" eSuperTypes="#//Event">
     <eOperations name="no_occurrence_above" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DestructionEvent" eSuperTypes="#//Event">
     <eOperations name="no_occurrence_specifications_below" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="SendOperationEvent" eSuperTypes="#//MessageEvent">
@@ -3601,11 +4771,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="Actor" eSuperTypes="#//BehavioredClassifier">
     <eOperations name="associations" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_have_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CallEvent" eSuperTypes="#//MessageEvent">
@@ -3626,43 +4806,83 @@
   <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode">
     <eOperations name="one_incoming_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>
   <eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode">
     <eOperations name="no_outgoing_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>
   <eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode">
     <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
     <eOperations name="one_incoming_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
         eType="#//Behavior"/>
@@ -3720,7 +4940,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//Class #//DeploymentTarget">
     <eOperations name="internal_structure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="nestedNode" ordered="false"
         upperBound="-1" eType="#//Node" containment="true">
@@ -3734,26 +4959,51 @@
       <contents xsi:type="ecore:EOperation" name="association_ends" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//Association/association_ends"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
     <eOperations name="opt_loop_break_neg" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="minint_and_maxint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="break" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="consider_and_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
         lowerBound="1" eType="#//InteractionOperatorKind" defaultValueLiteral="seq"/>
@@ -3783,15 +5033,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
     <eOperations name="same_name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="global" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="first_or_last_interaction_fragment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true"/>
@@ -3799,11 +5064,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ConsiderIgnoreFragment" eSuperTypes="#//CombinedFragment">
     <eOperations name="consider_or_ignore" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
         upperBound="-1" eType="#//NamedElement"/>
@@ -3811,19 +5086,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
     <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="classifier_not_association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="classifier" ordered="false"
         lowerBound="1" eType="#//Classifier"/>
@@ -3835,11 +5130,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="DestroyObjectAction" eSuperTypes="#//Action">
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyLinks" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -3853,15 +5158,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="TestIdentityAction" eSuperTypes="#//Action">
     <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_is_boolean" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="first" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -3879,19 +5199,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadSelfAction" eSuperTypes="#//Action">
     <eOperations name="contained" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -3902,23 +5242,48 @@
       eSuperTypes="#//Action">
     <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="one_featuring_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeature" ordered="false"
         lowerBound="1" eType="#//StructuralFeature"/>
@@ -3932,12 +5297,22 @@
       <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -3950,12 +5325,22 @@
       <contents xsi:type="ecore:EOperation" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
         <eAnnotations source="redefines" references="#//StructuralFeatureAction/multiplicity"/>
         <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-        <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+        <eParameters name="context">
+          <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+            <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          </eGenericType>
+        </eParameters>
       </contents>
     </eAnnotations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -3967,7 +5352,12 @@
       eSuperTypes="#//WriteStructuralFeatureAction">
     <eOperations name="non_unique_removal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -3979,7 +5369,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="AddStructuralFeatureValueAction" eSuperTypes="#//WriteStructuralFeatureAction">
     <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -3991,15 +5386,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="LinkAction" abstract="true" eSuperTypes="#//Action">
     <eOperations name="same_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_static" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association" ordered="false" lowerBound="1" eType="#//Association"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="endData" ordered="false"
@@ -4012,23 +5422,48 @@
   <eClassifiers xsi:type="ecore:EClass" name="LinkEndData" eSuperTypes="#//Element">
     <eOperations name="property_is_association_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="qualifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="end_object_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         eType="#//InputPin"/>
@@ -4040,15 +5475,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="QualifierValue" eSuperTypes="#//Element">
     <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="qualifier" ordered="false"
         lowerBound="1" eType="#//Property"/>
@@ -4058,23 +5508,48 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadLinkAction" eSuperTypes="#//LinkAction">
     <eOperations name="one_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="navigable_open_end" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="visibility" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -4084,11 +5559,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="LinkEndCreationData" eSuperTypes="#//LinkEndData">
     <eOperations name="create_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4104,13 +5589,23 @@
     </eAnnotations>
     <eOperations name="association_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="WriteLinkAction" abstract="true" eSuperTypes="#//LinkAction">
     <eOperations name="allow_access" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DestroyLinkAction" eSuperTypes="#//WriteLinkAction">
@@ -4124,11 +5619,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="LinkEndDestructionData" eSuperTypes="#//LinkEndData">
     <eOperations name="destroy_link_action" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unlimited_natural_and_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDestroyDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4138,11 +5643,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ClearAssociationAction" eSuperTypes="#//Action">
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -4154,11 +5669,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="BroadcastSignalAction" eSuperTypes="#//InvocationAction">
     <eOperations name="number_and_order" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_ordering_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
         lowerBound="1" eType="#//Signal"/>
@@ -4176,11 +5701,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ValueSpecificationAction" eSuperTypes="#//Action">
     <eOperations name="compatible_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//ValueSpecification" containment="true"/>
@@ -4269,7 +5804,12 @@
     </eAnnotations>
     <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstEvent" ordered="false"
         upperBound="2" eType="#//Boolean" defaultValueLiteral="true"/>
@@ -4283,7 +5823,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="DurationObservation" eSuperTypes="#//Observation">
     <eOperations name="first_event_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="event" ordered="false"
         lowerBound="1" upperBound="2" eType="#//NamedElement"/>
@@ -4293,37 +5838,77 @@
   <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State">
     <eOperations name="no_outgoing_transitions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_regions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="cannot_reference_submachine" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_entry_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_exit_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_state_behavior" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TimeEvent" eSuperTypes="#//Event">
     <eOperations name="when_non_negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="starting_time" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4335,7 +5920,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="VariableAction" abstract="true" eSuperTypes="#//Action">
     <eOperations name="scope_of_variable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
         lowerBound="1" eType="#//Variable"/>
@@ -4343,11 +5933,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadVariableAction" eSuperTypes="#//VariableAction">
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -4358,11 +5958,21 @@
       eSuperTypes="#//VariableAction">
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -4373,7 +5983,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="AddVariableValueAction" eSuperTypes="#//WriteVariableAction">
     <eOperations name="single_input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4385,7 +6000,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="RemoveVariableValueAction" eSuperTypes="#//WriteVariableAction">
     <eOperations name="unlimited_natural" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRemoveDuplicates" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4403,15 +6023,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ActionInputPin" eSuperTypes="#//InputPin">
     <eOperations name="one_output_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_control_or_data_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="fromAction" ordered="false"
         lowerBound="1" eType="#//Action" containment="true">
@@ -4421,15 +6056,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
     <eOperations name="sources_and_targets" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="has_no" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="not_instantiable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
         upperBound="-1" eType="#//Classifier"/>
@@ -4437,15 +6087,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//PackageableElement #//DirectedRelationship">
     <eOperations name="sources_and_targets_kind" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="must_conform" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="convey_classifiers" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
         upperBound="-1" eType="#//Relationship"/>
@@ -4469,11 +6134,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
     <eOperations name="type_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -4485,15 +6160,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReclassifyObjectAction" eSuperTypes="#//Action">
     <eOperations name="classifier_not_abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_pin" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReplaceAll" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4509,19 +6199,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadIsClassifiedObjectAction" eSuperTypes="#//Action">
     <eOperations name="multiplicity_of_input" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="boolean_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDirect" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4539,11 +6249,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="StartClassifierBehaviorAction" eSuperTypes="#//Action">
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_has_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -4553,31 +6273,66 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndAction" eSuperTypes="#//Action">
     <eOperations name="property" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -4593,35 +6348,75 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReadLinkObjectEndQualifierAction" eSuperTypes="#//Action">
     <eOperations name="qualifier_attribute" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="association_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="ends_of_association" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_qualifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="object" ordered="false"
         lowerBound="1" eType="#//InputPin" containment="true">
@@ -4637,15 +6432,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="CreateLinkObjectAction" eSuperTypes="#//CreateLinkAction">
     <eOperations name="association_class" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -4655,19 +6465,39 @@
   <eClassifiers xsi:type="ecore:EClass" name="AcceptEventAction" eSuperTypes="#//Action">
     <eOperations name="no_input_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="no_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="trigger_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshall_signal_events" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnmarshall" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4681,15 +6511,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="AcceptCallAction" eSuperTypes="#//AcceptEventAction">
     <eOperations name="result_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="trigger_call_event" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshall" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="returnInformation" ordered="false"
         lowerBound="1" eType="#//OutputPin" containment="true">
@@ -4699,11 +6544,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReplyAction" eSuperTypes="#//Action">
     <eOperations name="pins_match_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="event_on_reply_to_call_trigger" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="replyToCall" ordered="false"
         lowerBound="1" eType="#//Trigger"/>
@@ -4719,31 +6574,66 @@
   <eClassifiers xsi:type="ecore:EClass" name="UnmarshallAction" eSuperTypes="#//Action">
     <eOperations name="same_type" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_object" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="number_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="type_and_ordering" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="multiplicity_of_result" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="structural_feature" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="unmarshallType_is_classifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="result" ordered="false"
         lowerBound="1" upperBound="-1" eType="#//OutputPin" containment="true">
@@ -4759,15 +6649,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ReduceAction" eSuperTypes="#//Action">
     <eOperations name="input_type_is_collection" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="output_types_are_compatible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="reducer_inputs_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="reducer" ordered="false"
         lowerBound="1" eType="#//Behavior"/>
@@ -4785,11 +6690,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
     <eOperations name="one_outgoing_edge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="incoming_object_flow" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="true"/>
@@ -4802,35 +6717,75 @@
   <eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
     <eOperations name="no_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="compatible_types" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="same_upper_bounds" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="target" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="transformation_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="selection_behaviour" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="input_and_output_parameter" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="is_multicast_or_is_multireceive" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4844,7 +6799,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
     <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4862,11 +6822,21 @@
   <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
     <eOperations name="decider_output" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
         eType="#//ExecutableNode"/>
@@ -4884,15 +6854,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
     <eOperations name="input_edges" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="body_output_pins" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="result_no_incoming" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
         lowerBound="1" eType="#//Boolean" defaultValueLiteral="false"/>
@@ -4926,7 +6911,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="ExpansionRegion" eSuperTypes="#//StructuredActivityNode">
     <eOperations name="expansion_nodes" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" lowerBound="1"
         eType="#//ExpansionKind" defaultValueLiteral="iterative"/>
@@ -4943,15 +6933,30 @@
   <eClassifiers xsi:type="ecore:EClass" name="ProtocolTransition" eSuperTypes="#//Transition">
     <eOperations name="belongs_to_psm" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="associated_actions" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="refers_to_operation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="postCondition" ordered="false"
         eType="#//Constraint">
@@ -4968,7 +6973,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association">
     <eOperations name="cannot_be_defined" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eParameters name="diagnostics" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDiagnosticChain"/>
-      <eParameters name="context" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap"/>
+      <eParameters name="context">
+        <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+          <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
+        </eGenericType>
+      </eParameters>
     </eOperations>
     <eOperations name="allConnections" ordered="false" lowerBound="2" upperBound="-1"
         eType="#//Property"/>
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptCallActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptCallActionOperations.java
index a05d645..c0737b0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptCallActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptCallActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptCallActionOperations.java,v 1.6 2006/01/10 13:10:26 khussey Exp $
+ * $Id: AcceptCallActionOperations.java,v 1.7 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateResultPins(AcceptCallAction acceptCallAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateTriggerCallEvent(
 			AcceptCallAction acceptCallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +125,7 @@
 	 * @generated
 	 */
 	public static boolean validateUnmarshall(AcceptCallAction acceptCallAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptEventActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptEventActionOperations.java
index 59a77c9..ea2aaa8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptEventActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AcceptEventActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AcceptEventActionOperations.java,v 1.5 2006/01/05 22:43:25 khussey Exp $
+ * $Id: AcceptEventActionOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateNoInputPins(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateNoOutputPins(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateTriggerEvents(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -161,7 +161,7 @@
 	 */
 	public static boolean validateUnmarshallSignalEvents(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionExecutionSpecificationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionExecutionSpecificationOperations.java
index c0c1b59..fbe1609 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionExecutionSpecificationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionExecutionSpecificationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionExecutionSpecificationOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ActionExecutionSpecificationOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateActionReferenced(
 			ActionExecutionSpecification actionExecutionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionInputPinOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionInputPinOperations.java
index 1a8bd78..743b416 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionInputPinOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActionInputPinOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActionInputPinOperations.java,v 1.5 2006/05/16 15:07:25 khussey Exp $
+ * $Id: ActionInputPinOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneOutputPin(ActionInputPin actionInputPin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateInputPin(ActionInputPin actionInputPin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +125,7 @@
 	 */
 	public static boolean validateNoControlOrDataFlow(
 			ActionInputPin actionInputPin, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityEdgeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityEdgeOperations.java
index 27ad4f5..c8ef092 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityEdgeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityEdgeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityEdgeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ActivityEdgeOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateSourceAndTarget(ActivityEdge activityEdge,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateOwned(ActivityEdge activityEdge,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,7 @@
 	 * @generated
 	 */
 	public static boolean validateStructuredNode(ActivityEdge activityEdge,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityGroupOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityGroupOperations.java
index 1154252..607c114 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityGroupOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityGroupOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityGroupOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ActivityGroupOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateNodesAndEdges(ActivityGroup activityGroup,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotContained(ActivityGroup activityGroup,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,7 @@
 	 * @generated
 	 */
 	public static boolean validateGroupOwned(ActivityGroup activityGroup,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityNodeOperations.java
index d9fcfb9..0fee7bc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityNodeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ActivityNodeOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateOwned(ActivityNode activityNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,8 @@
 	 * @generated
 	 */
 	public static boolean validateOwnedStructuredNode(
-			ActivityNode activityNode, DiagnosticChain diagnostics, Map context) {
+			ActivityNode activityNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityOperations.java
index f932add..60bc95f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ActivityOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoSupergroups(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateActivityParameterNode(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,7 @@
 	 * @generated
 	 */
 	public static boolean validateAutonomous(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityParameterNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityParameterNodeOperations.java
index 71029f9..23257f3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityParameterNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityParameterNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityParameterNodeOperations.java,v 1.6 2006/04/05 13:50:02 khussey Exp $
+ * $Id: ActivityParameterNodeOperations.java,v 1.7 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 */
 	public static boolean validateHasParameters(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -96,7 +96,7 @@
 	 */
 	public static boolean validateSameType(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -129,7 +129,7 @@
 	 */
 	public static boolean validateNoEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -163,7 +163,7 @@
 	 */
 	public static boolean validateNoIncomingEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -197,7 +197,7 @@
 	 */
 	public static boolean validateNoOutgoingEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityPartitionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityPartitionOperations.java
index 34c6326..4cd837b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityPartitionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActivityPartitionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActivityPartitionOperations.java,v 1.6 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ActivityPartitionOperations.java,v 1.7 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateDimensionNotContained(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateRepresentsPart(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateRepresentsClassifier(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -161,7 +161,7 @@
 	 */
 	public static boolean validateRepresentsPartAndIsContained(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActorOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActorOperations.java
index 958ba09..91ffff7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActorOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ActorOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ActorOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ActorOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -64,7 +64,7 @@
 	 * @generated
 	 */
 	public static boolean validateAssociations(Actor actor,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -96,7 +96,7 @@
 	 * @generated
 	 */
 	public static boolean validateMustHaveName(Actor actor,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddStructuralFeatureValueActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddStructuralFeatureValueActionOperations.java
index b0f4523..9886712 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddStructuralFeatureValueActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddStructuralFeatureValueActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddStructuralFeatureValueActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: AddStructuralFeatureValueActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -67,7 +67,7 @@
 	 */
 	public static boolean validateUnlimitedNaturalAndMultiplicity(
 			AddStructuralFeatureValueAction addStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddVariableValueActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddVariableValueActionOperations.java
index 2cf1258..1464908 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddVariableValueActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AddVariableValueActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AddVariableValueActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: AddVariableValueActionOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -67,7 +67,7 @@
 	 */
 	public static boolean validateSingleInputPin(
 			AddVariableValueAction addVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ArtifactOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ArtifactOperations.java
index b4c6d3c..eebbe1e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ArtifactOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ArtifactOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ArtifactOperations.java,v 1.6 2006/03/07 20:25:17 khussey Exp $
+ * $Id: ArtifactOperations.java,v 1.7 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -52,8 +52,8 @@
 	 * @generated NOT
 	 */
 	public static Operation createOwnedOperation(Artifact artifact,
-			String name, EList parameterNames, EList parameterTypes,
-			Type returnType) {
+			String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType) {
 		return TypeOperations.createOwnedOperation(artifact, name,
 			parameterNames, parameterTypes, returnType);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationClassOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationClassOperations.java
index 256bfad..77dc305 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationClassOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationClassOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AssociationClassOperations.java,v 1.6 2006/01/27 04:55:56 khussey Exp $
+ * $Id: AssociationClassOperations.java,v 1.7 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -24,7 +23,9 @@
 import org.eclipse.emf.common.util.UniqueEList;
 
 import org.eclipse.uml2.uml.AssociationClass;
+import org.eclipse.uml2.uml.Classifier;
 
+import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.util.UMLValidator;
 
 /**
@@ -65,7 +66,7 @@
 	 */
 	public static boolean validateCannotBeDefined(
 			AssociationClass associationClass, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -96,14 +97,12 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allConnections(AssociationClass associationClass) {
-		EList allConnections = new UniqueEList.FastCompare(associationClass
-			.getMemberEnds());
+	public static EList<Property> allConnections(
+			AssociationClass associationClass) {
+		EList<Property> allConnections = new UniqueEList.FastCompare<Property>(
+			associationClass.getMemberEnds());
 
-		for (Iterator allParents = associationClass.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Object parent = allParents.next();
+		for (Classifier parent : associationClass.allParents()) {
 
 			if (parent instanceof AssociationClass) {
 				allConnections.addAll(((AssociationClass) parent)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationOperations.java
index 58cdb21..95b416b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/AssociationOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: AssociationOperations.java,v 1.10 2006/03/08 19:03:02 khussey Exp $
+ * $Id: AssociationOperations.java,v 1.11 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -72,7 +71,7 @@
 	 * @generated
 	 */
 	public static boolean validateSpecializedEndNumber(Association association,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -104,7 +103,7 @@
 	 * @generated
 	 */
 	public static boolean validateSpecializedEndTypes(Association association,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -136,7 +135,7 @@
 	 * @generated
 	 */
 	public static boolean validateBinaryAssociations(Association association,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -168,7 +167,7 @@
 	 * @generated
 	 */
 	public static boolean validateAssociationEnds(Association association,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -208,13 +207,11 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getEndTypes(Association association) {
-		EList endTypes = new UniqueEList.FastCompare();
+	public static EList<Type> getEndTypes(Association association) {
+		EList<Type> endTypes = new UniqueEList.FastCompare<Type>();
 
-		for (Iterator memberEnds = association.getMemberEnds().iterator(); memberEnds
-			.hasNext();) {
-
-			Type endType = (Type) ((Property) memberEnds.next()).eGet(
+		for (Property memberEnd : association.getMemberEnds()) {
+			Type endType = (Type) memberEnd.eGet(
 				UMLPackage.Literals.TYPED_ELEMENT__TYPE, false);
 
 			if (endType != null) {
@@ -222,7 +219,7 @@
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) association,
+		return new UnionEObjectEList<Type>((InternalEObject) association,
 			UMLPackage.Literals.ASSOCIATION__END_TYPE, endTypes.size(),
 			endTypes.toArray());
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehaviorOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehaviorOperations.java
index 6cfcba7..b310119 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehaviorOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehaviorOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehaviorOperations.java,v 1.11 2006/05/05 19:36:07 khussey Exp $
+ * $Id: BehaviorOperations.java,v 1.12 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -70,13 +70,14 @@
 	 * @generated NOT
 	 */
 	public static boolean validateParametersMatch(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 		BehavioralFeature specification = behavior.getSpecification();
 
 		if (specification != null) {
-			EList behaviorOwnedParameters = behavior.getOwnedParameters();
-			EList specificationOwnedParameters = specification
+			EList<Parameter> behaviorOwnedParameters = behavior
+				.getOwnedParameters();
+			EList<Parameter> specificationOwnedParameters = specification
 				.getOwnedParameters();
 
 			if (behaviorOwnedParameters.size() != specificationOwnedParameters
@@ -84,14 +85,13 @@
 
 				result = false;
 			} else {
-				Iterator bop = behaviorOwnedParameters.iterator();
-				Iterator sop = specificationOwnedParameters.iterator();
+				Iterator<Parameter> bop = behaviorOwnedParameters.iterator();
+				Iterator<Parameter> sop = specificationOwnedParameters
+					.iterator();
 
 				while (bop.hasNext() && sop.hasNext()) {
 
-					if (!ParameterOperations.matches((Parameter) bop.next(),
-						(Parameter) sop.next())) {
-
+					if (!ParameterOperations.matches(bop.next(), sop.next())) {
 						result = false;
 						break;
 					}
@@ -121,7 +121,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateFeatureOfContextClassifier(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		BehavioralFeature specification = behavior.getSpecification();
 
 		if (specification != null) {
@@ -160,7 +160,7 @@
 	 * @generated
 	 */
 	public static boolean validateMustRealize(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -192,7 +192,7 @@
 	 * @generated
 	 */
 	public static boolean validateMostOneBehaviour(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioralFeatureOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioralFeatureOperations.java
index b00fad0..bc8d42e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioralFeatureOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioralFeatureOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioralFeatureOperations.java,v 1.6 2006/02/22 20:48:22 khussey Exp $
+ * $Id: BehavioralFeatureOperations.java,v 1.7 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -82,22 +82,20 @@
 			BehavioralFeature behavioralFeature, NamedElement n, Namespace ns) {
 
 		if (n instanceof BehavioralFeature) {
-			EList namesOfMemberN = ns.getNamesOfMember(n);
+			EList<String> namesOfMemberN = ns.getNamesOfMember(n);
 
-			for (Iterator namesOfMemberBF = ns.getNamesOfMember(
-				behavioralFeature).iterator(); namesOfMemberBF.hasNext();) {
+			for (String nameOfMemberBF : ns.getNamesOfMember(behavioralFeature)) {
 
-				if (namesOfMemberN.contains(namesOfMemberBF.next())) {
-					Iterator bfParameters = behavioralFeature
+				if (namesOfMemberN.contains(nameOfMemberBF)) {
+					Iterator<Parameter> bfParameters = behavioralFeature
 						.getOwnedParameters().iterator();
-					Iterator nParameters = ((BehavioralFeature) n)
+					Iterator<Parameter> nParameters = ((BehavioralFeature) n)
 						.getOwnedParameters().iterator();
 
 					while (bfParameters.hasNext() && nParameters.hasNext()) {
 
-						if (!safeEquals(((Parameter) bfParameters.next())
-							.getType(), ((Parameter) nParameters.next())
-							.getType())) {
+						if (!safeEquals(bfParameters.next().getType(),
+							nParameters.next().getType())) {
 
 							return true;
 						}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioredClassifierOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioredClassifierOperations.java
index b77613a..d75e16e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioredClassifierOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BehavioredClassifierOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehavioredClassifierOperations.java,v 1.9 2006/03/08 19:03:02 khussey Exp $
+ * $Id: BehavioredClassifierOperations.java,v 1.10 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -68,7 +67,7 @@
 	 */
 	public static boolean validateClassBehavior(
 			BehavioredClassifier behavioredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,10 +94,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getImplementedInterfaces(
+	public static EList<Interface> getImplementedInterfaces(
 			BehavioredClassifier behavioredClassifier) {
 		return getRealizedInterfaces(behavioredClassifier,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<Interface>());
 	}
 
 	/**
@@ -106,21 +105,20 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllImplementedInterfaces(
+	public static EList<Interface> getAllImplementedInterfaces(
 			BehavioredClassifier behavioredClassifier) {
 		return getAllRealizedInterfaces(behavioredClassifier,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<Interface>());
 	}
 
-	protected static EList getRealizedInterfaces(
-			BehavioredClassifier behavioredClassifier, EList realizedInterfaces) {
+	protected static EList<Interface> getRealizedInterfaces(
+			BehavioredClassifier behavioredClassifier,
+			EList<Interface> realizedInterfaces) {
 
-		for (Iterator interfaceRealizations = behavioredClassifier
-			.getInterfaceRealizations().iterator(); interfaceRealizations
-			.hasNext();) {
+		for (InterfaceRealization interfaceRealization : behavioredClassifier
+			.getInterfaceRealizations()) {
 
-			Interface contract = ((InterfaceRealization) interfaceRealizations
-				.next()).getContract();
+			Interface contract = interfaceRealization.getContract();
 
 			if (contract != null) {
 				realizedInterfaces.add(contract);
@@ -130,15 +128,12 @@
 		return realizedInterfaces;
 	}
 
-	protected static EList getAllRealizedInterfaces(
+	protected static EList<Interface> getAllRealizedInterfaces(
 			BehavioredClassifier behavioredClassifier,
-			EList allRealizedInterfaces) {
+			EList<Interface> allRealizedInterfaces) {
 		getRealizedInterfaces(behavioredClassifier, allRealizedInterfaces);
 
-		for (Iterator allParents = behavioredClassifier.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Classifier parent = (Classifier) allParents.next();
+		for (Classifier parent : behavioredClassifier.allParents()) {
 
 			if (parent instanceof BehavioredClassifier) {
 				getRealizedInterfaces((BehavioredClassifier) parent,
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BroadcastSignalActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BroadcastSignalActionOperations.java
index 4efc8b6..f82f8a2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BroadcastSignalActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/BroadcastSignalActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BroadcastSignalActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: BroadcastSignalActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateNumberAndOrder(
 			BroadcastSignalAction broadcastSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateTypeOrderingMultiplicity(
 			BroadcastSignalAction broadcastSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallActionOperations.java
index 63aa73d..4d05c02 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallActionOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: CallActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateSynchronousCall(CallAction callAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateNumberAndOrder(CallAction callAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,8 @@
 	 * @generated
 	 */
 	public static boolean validateTypeOrderingMultiplicity(
-			CallAction callAction, DiagnosticChain diagnostics, Map context) {
+			CallAction callAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallBehaviorActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallBehaviorActionOperations.java
index 831248c..64d5e81 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallBehaviorActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallBehaviorActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallBehaviorActionOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: CallBehaviorActionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateArgumentPinEqualParameter(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateResultPinEqualParameter(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateTypeOrderingMultiplicity(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallOperationActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallOperationActionOperations.java
index 89c7cc8..f7d6070 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallOperationActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CallOperationActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CallOperationActionOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: CallOperationActionOperations.java,v 1.6 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateArgumentPinEqualParameter(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateResultPinEqualParameter(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateTypeTargetPin(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -162,7 +162,7 @@
 	 */
 	public static boolean validateTypeOrderingMultiplicity(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassOperations.java
index d6d4bcb..64c7a20 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassOperations.java,v 1.19 2006/05/09 17:53:38 khussey Exp $
+ * $Id: ClassOperations.java,v 1.20 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -80,7 +79,7 @@
 	 */
 	public static boolean validatePassiveClass(
 			org.eclipse.uml2.uml.Class class_, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 
 		if (!class_.isActive() && !(class_.getOwnedReceptions().isEmpty())) {
 
@@ -104,34 +103,31 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getExtensions(org.eclipse.uml2.uml.Class class_) {
-		EList extensions = ECollections.EMPTY_ELIST;
+	public static EList<Extension> getExtensions(
+			org.eclipse.uml2.uml.Class class_) {
+		EList<Extension> extensions = ECollections.<Extension> emptyEList();
 
 		if (class_.isMetaclass()) {
-			extensions = new UniqueEList.FastCompare();
+			extensions = new UniqueEList.FastCompare<Extension>();
 
-			for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-				class_).iterator(); nonNavigableInverseReferences.hasNext();) {
+			for (EStructuralFeature.Setting nonNavigableInverseReference : getNonNavigableInverseReferences(class_)) {
 
-				EStructuralFeature.Setting setting = (EStructuralFeature.Setting) nonNavigableInverseReferences
-					.next();
-
-				if (setting.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
-					EObject eObject = setting.getEObject();
+				if (nonNavigableInverseReference.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
+					EObject eObject = nonNavigableInverseReference.getEObject();
 
 					if (eObject instanceof Property) {
 						Association association = ((Property) eObject)
 							.getAssociation();
 
 						if (association instanceof Extension) {
-							extensions.add(association);
+							extensions.add((Extension) association);
 						}
 					}
 				}
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) class_,
+		return new UnionEObjectEList<Extension>((InternalEObject) class_,
 			UMLPackage.Literals.CLASS__EXTENSION, extensions.size(), extensions
 				.toArray());
 	}
@@ -143,7 +139,8 @@
 	 */
 	public static Operation createOwnedOperation(
 			org.eclipse.uml2.uml.Class class_, String name,
-			EList parameterNames, EList parameterTypes, Type returnType) {
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			Type returnType) {
 		return TypeOperations.createOwnedOperation(class_, name,
 			parameterNames, parameterTypes, returnType);
 	}
@@ -167,15 +164,12 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList inherit(org.eclipse.uml2.uml.Class class_, EList inhs) {
-		EList inherit = new UniqueEList.FastCompare();
+	public static EList<NamedElement> inherit(
+			org.eclipse.uml2.uml.Class class_, EList<NamedElement> inhs) {
+		EList<NamedElement> inherit = new UniqueEList.FastCompare<NamedElement>();
+		EList<RedefinableElement> redefinedElements = new UniqueEList.FastCompare<RedefinableElement>();
 
-		EList redefinedElements = new UniqueEList.FastCompare();
-
-		for (Iterator ownedMembers = class_.getOwnedMembers().iterator(); ownedMembers
-			.hasNext();) {
-
-			Object ownedMember = ownedMembers.next();
+		for (NamedElement ownedMember : class_.getOwnedMembers()) {
 
 			if (ownedMember instanceof RedefinableElement) {
 				redefinedElements.addAll(((RedefinableElement) ownedMember)
@@ -183,8 +177,7 @@
 			}
 		}
 
-		for (Iterator i = inhs.iterator(); i.hasNext();) {
-			Object inh = i.next();
+		for (NamedElement inh : inhs) {
 
 			if (!redefinedElements.contains(inh)) {
 				inherit.add(inh);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierOperations.java
index d2a3516..6cf056a7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassifierOperations.java,v 1.18 2006/04/13 03:21:44 khussey Exp $
+ * $Id: ClassifierOperations.java,v 1.19 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 import java.util.Map;
@@ -39,6 +38,7 @@
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.Parameter;
 import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLFactory;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.UMLPlugin;
@@ -104,7 +104,8 @@
 	 * @generated NOT
 	 */
 	public static boolean validateNoCyclesInGeneralization(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		boolean result = true;
 
 		if (classifier.allParents().contains(classifier)) {
@@ -134,13 +135,10 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSpecializeType(Classifier classifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
-		for (Iterator parents = classifier.parents().iterator(); parents
-			.hasNext();) {
-
-			Classifier parent = (Classifier) parents.next();
+		for (Classifier parent : classifier.parents()) {
 
 			if (!classifier.maySpecializeType(parent)) {
 				result = false;
@@ -173,7 +171,8 @@
 	 * @generated
 	 */
 	public static boolean validateGeneralizationHierarchies(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -205,7 +204,8 @@
 	 * @generated
 	 */
 	public static boolean validateMapsToGeneralizationSet(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -232,16 +232,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllAttributes(Classifier classifier) {
-		EList allAttributes = new UniqueEList.FastCompare();
+	public static EList<Property> getAllAttributes(Classifier classifier) {
+		EList<Property> allAttributes = new UniqueEList.FastCompare<Property>();
 
-		for (Iterator allFeatures = classifier.allFeatures().iterator(); allFeatures
-			.hasNext();) {
-
-			Object feature = allFeatures.next();
+		for (Feature feature : classifier.allFeatures()) {
 
 			if (feature instanceof Property) {
-				allAttributes.add(feature);
+				allAttributes.add((Property) feature);
 			}
 		}
 
@@ -253,16 +250,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getOperations(Classifier classifier) {
-		EList operations = new UniqueEList.FastCompare();
+	public static EList<Operation> getOperations(Classifier classifier) {
+		EList<Operation> operations = new UniqueEList.FastCompare<Operation>();
 
-		for (Iterator features = classifier.getFeatures().iterator(); features
-			.hasNext();) {
-
-			Object feature = features.next();
+		for (Feature feature : classifier.getFeatures()) {
 
 			if (feature instanceof Operation) {
-				operations.add(feature);
+				operations.add((Operation) feature);
 			}
 		}
 
@@ -274,16 +268,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllOperations(Classifier classifier) {
-		EList allOperations = new UniqueEList.FastCompare();
+	public static EList<Operation> getAllOperations(Classifier classifier) {
+		EList<Operation> allOperations = new UniqueEList.FastCompare<Operation>();
 
-		for (Iterator allFeatures = classifier.allFeatures().iterator(); allFeatures
-			.hasNext();) {
-
-			Object feature = allFeatures.next();
+		for (Feature feature : classifier.allFeatures()) {
 
 			if (feature instanceof Operation) {
-				allOperations.add(feature);
+				allOperations.add((Operation) feature);
 			}
 		}
 
@@ -296,7 +287,7 @@
 	 * @generated NOT
 	 */
 	public static Operation getOperation(Classifier classifier, String name,
-			EList parameterNames, EList parameterTypes) {
+			EList<String> parameterNames, EList<Type> parameterTypes) {
 		return classifier.getOperation(name, parameterNames, parameterTypes,
 			false);
 	}
@@ -307,19 +298,18 @@
 	 * @generated NOT
 	 */
 	public static Operation getOperation(Classifier classifier, String name,
-			EList parameterNames, EList parameterTypes, boolean ignoreCase) {
-		operationLoop : for (Iterator i = classifier.getOperations().iterator(); i
-			.hasNext();) {
-
-			Operation ownedOperation = (Operation) i.next();
+			EList<String> parameterNames, EList<Type> parameterTypes,
+			boolean ignoreCase) {
+		operationLoop : for (Operation operation : classifier.getOperations()) {
 
 			if (name != null && !(ignoreCase
-				? name.equalsIgnoreCase(ownedOperation.getName())
-				: name.equals(ownedOperation.getName())))
+				? name.equalsIgnoreCase(operation.getName())
+				: name.equals(operation.getName())))
 
 				continue operationLoop;
 
-			EList ownedParameterList = ownedOperation.getOwnedParameters();
+			EList<Parameter> ownedParameterList = operation
+				.getOwnedParameters();
 			int ownedParameterListSize = ownedParameterList.size();
 
 			if (parameterNames != null
@@ -329,13 +319,12 @@
 				continue operationLoop;
 
 			for (int j = 0; j < ownedParameterListSize; j++) {
-				Parameter ownedParameter = (Parameter) ownedParameterList
-					.get(j);
+				Parameter ownedParameter = ownedParameterList.get(j);
 
 				if (parameterNames != null
 					&& !(ignoreCase
-						? ((String) parameterNames.get(j))
-							.equalsIgnoreCase(ownedParameter.getName())
+						? parameterNames.get(j).equalsIgnoreCase(
+							ownedParameter.getName())
 						: parameterNames.get(j)
 							.equals(ownedParameter.getName())))
 
@@ -347,7 +336,7 @@
 					continue operationLoop;
 			}
 
-			return ownedOperation;
+			return operation;
 		}
 
 		return null;
@@ -358,8 +347,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getUsedInterfaces(Classifier classifier) {
-		return getUsedInterfaces(classifier, new UniqueEList.FastCompare());
+	public static EList<Interface> getUsedInterfaces(Classifier classifier) {
+		return getUsedInterfaces(classifier,
+			new UniqueEList.FastCompare<Interface>());
 	}
 
 	/**
@@ -367,8 +357,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllUsedInterfaces(Classifier classifier) {
-		return getAllUsedInterfaces(classifier, new UniqueEList.FastCompare());
+	public static EList<Interface> getAllUsedInterfaces(Classifier classifier) {
+		return getAllUsedInterfaces(classifier,
+			new UniqueEList.FastCompare<Interface>());
 	}
 
 	/**
@@ -385,31 +376,36 @@
 	}
 
 	protected static class GeneralEList
-			extends DerivedSubsetEObjectEList {
+			extends DerivedSubsetEObjectEList<Object> {
 
-		protected GeneralEList(Class dataClass, InternalEObject owner,
+		protected GeneralEList(Class<?> dataClass, InternalEObject owner,
 				int featureID, int[] sourceFeatureIDs) {
 			super(dataClass, owner, featureID, sourceFeatureIDs);
 		}
 
-		public List basicList() {
+		@Override
+		public List<Object> basicList() {
 			return new GeneralEList(dataClass, owner, featureID,
 				sourceFeatureIDs) {
 
-				public ListIterator listIterator(int index) {
+				@Override
+				public ListIterator<Object> listIterator(int index) {
 					return basicListIterator(index);
 				}
 			};
 		}
 
+		@Override
 		protected boolean isIncluded(EStructuralFeature feature) {
 			return false;
 		}
 
+		@Override
 		protected Object derive(Object object) {
 			return ((Generalization) object).getGeneral();
 		}
 
+		@Override
 		protected Object validate(int index, Object object) {
 			Generalization generalization = UMLFactory.eINSTANCE
 				.createGeneralization();
@@ -431,9 +427,11 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getGenerals(Classifier classifier) {
-		return new GeneralEList(Classifier.class, (InternalEObject) classifier,
-			UMLPackage.CLASSIFIER__GENERAL, GENERAL_ESUPERSETS);
+	@SuppressWarnings("unchecked")
+	public static EList<Classifier> getGenerals(Classifier classifier) {
+		return (EList<Classifier>) ((EList<?>) new GeneralEList(
+			Classifier.class, (InternalEObject) classifier,
+			UMLPackage.CLASSIFIER__GENERAL, GENERAL_ESUPERSETS));
 	}
 
 	/**
@@ -445,19 +443,17 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getInheritedMembers(Classifier classifier) {
-		EList inheritedMembers = new UniqueEList.FastCompare();
+	public static EList<NamedElement> getInheritedMembers(Classifier classifier) {
+		EList<NamedElement> inheritedMembers = new UniqueEList.FastCompare<NamedElement>();
 
-		for (Iterator parents = classifier.parents().iterator(); parents
-			.hasNext();) {
-
-			inheritedMembers.addAll(((Classifier) parents.next())
-				.inheritableMembers(classifier));
+		for (Classifier parent : classifier.parents()) {
+			inheritedMembers.addAll(parent.inheritableMembers(classifier));
 		}
 
-		EList inherit = classifier.inherit(inheritedMembers);
+		EList<NamedElement> inherit = classifier.inherit(inheritedMembers);
 
-		return new UnionEObjectEList((InternalEObject) classifier,
+		return new UnionEObjectEList<NamedElement>(
+			(InternalEObject) classifier,
 			UMLPackage.Literals.CLASSIFIER__INHERITED_MEMBER, inherit.size(),
 			inherit.toArray());
 	}
@@ -471,16 +467,13 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allFeatures(Classifier classifier) {
-		EList allFeatures = new UniqueEList.FastCompare();
+	public static EList<Feature> allFeatures(Classifier classifier) {
+		EList<Feature> allFeatures = new UniqueEList.FastCompare<Feature>();
 
-		for (Iterator members = classifier.getMembers().iterator(); members
-			.hasNext();) {
-
-			Object member = members.next();
+		for (NamedElement member : classifier.getMembers()) {
 
 			if (member instanceof Feature) {
-				allFeatures.add(member);
+				allFeatures.add((Feature) member);
 			}
 		}
 
@@ -496,14 +489,11 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList parents(Classifier classifier) {
-		EList parents = new UniqueEList.FastCompare();
+	public static EList<Classifier> parents(Classifier classifier) {
+		EList<Classifier> parents = new UniqueEList.FastCompare<Classifier>();
 
-		for (Iterator generalizations = classifier.getGeneralizations()
-			.iterator(); generalizations.hasNext();) {
-
-			Classifier general = ((Generalization) generalizations.next())
-				.getGeneral();
+		for (Generalization generalization : classifier.getGeneralizations()) {
+			Classifier general = generalization.getGeneral();
 
 			if (general != null) {
 				parents.add(general);
@@ -523,8 +513,9 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList inheritableMembers(Classifier classifier, Classifier c) {
-		EList inheritableMembers = new UniqueEList.FastCompare();
+	public static EList<NamedElement> inheritableMembers(Classifier classifier,
+			Classifier c) {
+		EList<NamedElement> inheritableMembers = new UniqueEList.FastCompare<NamedElement>();
 
 		if (c == classifier || !c.allParents().contains(classifier)
 			|| classifier.allParents().contains(c)) {
@@ -532,10 +523,7 @@
 			return inheritableMembers;
 		}
 
-		for (Iterator members = classifier.getMembers().iterator(); members
-			.hasNext();) {
-
-			NamedElement member = (NamedElement) members.next();
+		for (NamedElement member : classifier.getMembers()) {
 
 			if (c.hasVisibilityOf(member)) {
 				inheritableMembers.add(member);
@@ -557,10 +545,7 @@
 	 */
 	public static boolean hasVisibilityOf(Classifier classifier, NamedElement n) {
 
-		for (Iterator allParents = classifier.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Classifier parent = (Classifier) allParents.next();
+		for (Classifier parent : classifier.allParents()) {
 
 			if (parent != classifier && parent.getMembers().contains(n)) {
 				return n.getVisibility() != VisibilityKind.PRIVATE_LITERAL;
@@ -593,16 +578,15 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList inherit(Classifier classifier, EList inhs) {
+	public static EList<NamedElement> inherit(Classifier classifier,
+			EList<NamedElement> inhs) {
 		return ECollections.unmodifiableEList(inhs);
 	}
 
-	protected static EList allParents(Classifier classifier, EList allParents) {
+	protected static EList<Classifier> allParents(Classifier classifier,
+			EList<Classifier> allParents) {
 
-		for (Iterator parents = classifier.parents().iterator(); parents
-			.hasNext();) {
-
-			Classifier parent = (Classifier) parents.next();
+		for (Classifier parent : classifier.parents()) {
 
 			if (allParents.add(parent)) {
 				allParents(parent, allParents);
@@ -621,9 +605,9 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allParents(Classifier classifier) {
+	public static EList<Classifier> allParents(Classifier classifier) {
 		return ECollections.unmodifiableEList(allParents(classifier,
-			new UniqueEList.FastCompare()));
+			new UniqueEList.FastCompare<Classifier>()));
 	}
 
 	/**
@@ -639,12 +623,9 @@
 
 		if (classifier.getOwnedTemplateSignature() == null) {
 
-			for (Iterator allParents = classifier.allParents().iterator(); allParents
-				.hasNext();) {
+			for (Classifier parent : classifier.allParents()) {
 
-				if (((Classifier) allParents.next())
-					.getOwnedTemplateSignature() != null) {
-
+				if (parent.getOwnedTemplateSignature() != null) {
 					return true;
 				}
 			}
@@ -655,23 +636,17 @@
 		return true;
 	}
 
-	protected static EList getUsedInterfaces(Classifier classifier,
-			EList usedInterfaces) {
+	protected static EList<Interface> getUsedInterfaces(Classifier classifier,
+			EList<Interface> usedInterfaces) {
 
-		for (Iterator clientDependencies = classifier.getClientDependencies()
-			.iterator(); clientDependencies.hasNext();) {
+		for (Dependency clientDependency : classifier.getClientDependencies()) {
 
-			Dependency dependency = (Dependency) clientDependencies.next();
+			if (clientDependency instanceof Usage) {
 
-			if (dependency instanceof Usage) {
-
-				for (Iterator suppliers = dependency.getSuppliers().iterator(); suppliers
-					.hasNext();) {
-
-					Object supplier = suppliers.next();
+				for (NamedElement supplier : clientDependency.getSuppliers()) {
 
 					if (supplier instanceof Interface) {
-						usedInterfaces.add(supplier);
+						usedInterfaces.add((Interface) supplier);
 					}
 				}
 			}
@@ -680,14 +655,12 @@
 		return usedInterfaces;
 	}
 
-	protected static EList getAllUsedInterfaces(Classifier classifier,
-			EList allUsedInterfaces) {
+	protected static EList<Interface> getAllUsedInterfaces(
+			Classifier classifier, EList<Interface> allUsedInterfaces) {
 		getUsedInterfaces(classifier, allUsedInterfaces);
 
-		for (Iterator allParents = classifier.allParents().iterator(); allParents
-			.hasNext();) {
-
-			getUsedInterfaces((Classifier) allParents.next(), allUsedInterfaces);
+		for (Classifier parent : classifier.allParents()) {
+			getUsedInterfaces(parent, allUsedInterfaces);
 		}
 
 		return allUsedInterfaces;
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierTemplateParameterOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierTemplateParameterOperations.java
index b6bbfc0..449eb51 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierTemplateParameterOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClassifierTemplateParameterOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClassifierTemplateParameterOperations.java,v 1.5 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ClassifierTemplateParameterOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateHasConstrainingClassifier(
 			ClassifierTemplateParameter classifierTemplateParameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClauseOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClauseOperations.java
index eb5f016..6a2ae41 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClauseOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClauseOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClauseOperations.java,v 1.5 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ClauseOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateDeciderOutput(Clause clause,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateBodyOutputPins(Clause clause,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClearAssociationActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClearAssociationActionOperations.java
index 398ec66..aca534c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClearAssociationActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ClearAssociationActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ClearAssociationActionOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ClearAssociationActionOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateSameType(
 			ClearAssociationAction clearAssociationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			ClearAssociationAction clearAssociationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CollaborationUseOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CollaborationUseOperations.java
index dc34f2c..4a561a3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CollaborationUseOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CollaborationUseOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CollaborationUseOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: CollaborationUseOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateClientElements(
 			CollaborationUse collaborationUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 * @generated
 	 */
 	public static boolean validateEveryRole(CollaborationUse collaborationUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +125,7 @@
 	 * @generated
 	 */
 	public static boolean validateConnectors(CollaborationUse collaborationUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CombinedFragmentOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CombinedFragmentOperations.java
index 4fff849..fece1a3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CombinedFragmentOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CombinedFragmentOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CombinedFragmentOperations.java,v 1.5 2006/04/05 20:23:13 khussey Exp $
+ * $Id: CombinedFragmentOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -67,7 +66,7 @@
 	 */
 	public static boolean validateOptLoopBreakNeg(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 
 		switch (combinedFragment.getInteractionOperator().getValue()) {
 			case InteractionOperatorKind.OPT :
@@ -109,15 +108,12 @@
 	 */
 	public static boolean validateMinintAndMaxint(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 
 		if (combinedFragment.getInteractionOperator() != InteractionOperatorKind.LOOP_LITERAL) {
 
-			for (Iterator operands = combinedFragment.getOperands().iterator(); operands
-				.hasNext();) {
-
-				InteractionConstraint guard = ((InteractionOperand) operands
-					.next()).getGuard();
+			for (InteractionOperand operand : combinedFragment.getOperands()) {
+				InteractionConstraint guard = operand.getGuard();
 
 				if (guard != null
 					&& (guard.getMinint() != null || guard.getMaxint() != null)) {
@@ -154,7 +150,7 @@
 	 * @generated
 	 */
 	public static boolean validateBreak(CombinedFragment combinedFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -187,7 +183,7 @@
 	 */
 	public static boolean validateConsiderAndIgnore(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CommunicationPathOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CommunicationPathOperations.java
index 157cba7..b5b26eb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CommunicationPathOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CommunicationPathOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CommunicationPathOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: CommunicationPathOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateAssociationEnds(
 			CommunicationPath communicationPath, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ComponentOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ComponentOperations.java
index b3421c7..da3d230 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ComponentOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ComponentOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ComponentOperations.java,v 1.12 2006/10/11 16:30:15 khussey Exp $
+ * $Id: ComponentOperations.java,v 1.13 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -26,6 +26,7 @@
 import org.eclipse.uml2.uml.ComponentRealization;
 import org.eclipse.uml2.uml.Dependency;
 import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.PrimitiveType;
 import org.eclipse.uml2.uml.Realization;
 import org.eclipse.uml2.uml.Port;
@@ -122,37 +123,35 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList realizedInterfaces(Component component,
+	public static EList<Interface> realizedInterfaces(Component component,
 			Classifier classifier) {
 		return ECollections.unmodifiableEList(realizedInterfaces(component,
 			classifier, true));
 	}
 
-	protected static EList realizedInterfaces(Component component,
+	protected static EList<Interface> realizedInterfaces(Component component,
 			Classifier classifier, boolean resolve) {
 		return realizedInterfaces(component, classifier, resolve,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<Interface>());
 	}
 
-	protected static EList realizedInterfaces(Component component,
-			Classifier classifier, boolean resolve, EList realizedInterfaces) {
+	protected static EList<Interface> realizedInterfaces(Component component,
+			Classifier classifier, boolean resolve,
+			EList<Interface> realizedInterfaces) {
 
-		for (Iterator clientDependencies = classifier.getClientDependencies()
-			.iterator(); clientDependencies.hasNext();) {
+		for (Dependency clientDependency : classifier.getClientDependencies()) {
 
-			Dependency dependency = (Dependency) clientDependencies.next();
-
-			if (dependency instanceof Realization) {
-				Iterator suppliers = resolve
-					? dependency.getSuppliers().iterator()
-					: ((InternalEList) dependency.getSuppliers())
-						.basicIterator();
+			if (clientDependency instanceof Realization) {
+				Iterator<NamedElement> suppliers = resolve
+					? clientDependency.getSuppliers().iterator()
+					: ((InternalEList<NamedElement>) clientDependency
+						.getSuppliers()).basicIterator();
 
 				while (suppliers.hasNext()) {
-					Object supplier = suppliers.next();
+					NamedElement supplier = suppliers.next();
 
 					if (supplier instanceof Interface) {
-						realizedInterfaces.add(supplier);
+						realizedInterfaces.add((Interface) supplier);
 					}
 				}
 			}
@@ -172,37 +171,35 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList usedInterfaces(Component component,
+	public static EList<Interface> usedInterfaces(Component component,
 			Classifier classifier) {
 		return ECollections.unmodifiableEList(usedInterfaces(component,
 			classifier, true));
 	}
 
-	protected static EList usedInterfaces(Component component,
+	protected static EList<Interface> usedInterfaces(Component component,
 			Classifier classifier, boolean resolve) {
 		return usedInterfaces(component, classifier, resolve,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<Interface>());
 	}
 
-	protected static EList usedInterfaces(Component component,
-			Classifier classifier, boolean resolve, EList usedInterfaces) {
+	protected static EList<Interface> usedInterfaces(Component component,
+			Classifier classifier, boolean resolve,
+			EList<Interface> usedInterfaces) {
 
-		for (Iterator clientDependencies = classifier.getClientDependencies()
-			.iterator(); clientDependencies.hasNext();) {
+		for (Dependency clientDependency : classifier.getClientDependencies()) {
 
-			Dependency dependency = (Dependency) clientDependencies.next();
-
-			if (dependency instanceof Usage) {
-				Iterator suppliers = resolve
-					? dependency.getSuppliers().iterator()
-					: ((InternalEList) dependency.getSuppliers())
-						.basicIterator();
+			if (clientDependency instanceof Usage) {
+				Iterator<NamedElement> suppliers = resolve
+					? clientDependency.getSuppliers().iterator()
+					: ((InternalEList<NamedElement>) clientDependency
+						.getSuppliers()).basicIterator();
 
 				while (suppliers.hasNext()) {
-					Object supplier = suppliers.next();
+					NamedElement supplier = suppliers.next();
 
 					if (supplier instanceof Interface) {
-						usedInterfaces.add(supplier);
+						usedInterfaces.add((Interface) supplier);
 					}
 				}
 			}
@@ -227,36 +224,29 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getRequireds(Component component) {
-		EList requireds = usedInterfaces(component, component, false,
-			new UniqueEList.FastCompare());
+	public static EList<Interface> getRequireds(Component component) {
+		EList<Interface> requireds = usedInterfaces(component, component,
+			false, new UniqueEList.FastCompare<Interface>());
 
-		for (Iterator realizations = component.getRealizations().iterator(); realizations
-			.hasNext();) {
-
-			Classifier realizingClassifier = ((ComponentRealization) realizations
-				.next()).getRealizingClassifier();
+		for (ComponentRealization realization : component.getRealizations()) {
+			Classifier realizingClassifier = realization
+				.getRealizingClassifier();
 
 			if (realizingClassifier != null) {
 				usedInterfaces(component, realizingClassifier, false, requireds);
 
-				for (Iterator allParents = realizingClassifier.allParents()
-					.iterator(); allParents.hasNext();) {
-
-					usedInterfaces(component, (Classifier) allParents.next(),
-						false, requireds);
+				for (Classifier parent : realizingClassifier.allParents()) {
+					usedInterfaces(component, parent, false, requireds);
 				}
 			}
 		}
 
-		for (Iterator ownedPorts = component.getOwnedPorts().iterator(); ownedPorts
-			.hasNext();) {
-
-			requireds.addAll(((InternalEList) ((Port) ownedPorts.next())
+		for (Port ownedPort : component.getOwnedPorts()) {
+			requireds.addAll(((InternalEList<Interface>) ownedPort
 				.getRequireds()).basicList());
 		}
 
-		return new UnionEObjectEList((InternalEObject) component,
+		return new UnionEObjectEList<Interface>((InternalEObject) component,
 			UMLPackage.Literals.COMPONENT__REQUIRED, requireds.size(),
 			requireds.toArray());
 	}
@@ -279,75 +269,60 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getProvideds(Component component) {
-		EList provideds = realizedInterfaces(component, component, false,
-			new UniqueEList.FastCompare());
+	public static EList<Interface> getProvideds(Component component) {
+		EList<Interface> provideds = realizedInterfaces(component, component,
+			false, new UniqueEList.FastCompare<Interface>());
 
-		for (Iterator realizations = component.getRealizations().iterator(); realizations
-			.hasNext();) {
-
-			Classifier realizingClassifier = ((ComponentRealization) realizations
-				.next()).getRealizingClassifier();
+		for (ComponentRealization realization : component.getRealizations()) {
+			Classifier realizingClassifier = realization
+				.getRealizingClassifier();
 
 			if (realizingClassifier != null) {
 				realizedInterfaces(component, realizingClassifier, false,
 					provideds);
 
-				for (Iterator allParents = realizingClassifier.allParents()
-					.iterator(); allParents.hasNext();) {
-
-					realizedInterfaces(component, (Classifier) allParents
-						.next(), false, provideds);
+				for (Classifier parent : realizingClassifier.allParents()) {
+					realizedInterfaces(component, parent, false, provideds);
 				}
 			}
 		}
 
-		for (Iterator ownedPorts = component.getOwnedPorts().iterator(); ownedPorts
-			.hasNext();) {
-
-			provideds.addAll(((InternalEList) ((Port) ownedPorts.next())
+		for (Port ownedPort : component.getOwnedPorts()) {
+			provideds.addAll(((InternalEList<Interface>) ownedPort
 				.getProvideds()).basicList());
 		}
 
-		return new UnionEObjectEList((InternalEObject) component,
+		return new UnionEObjectEList<Interface>((InternalEObject) component,
 			UMLPackage.Literals.COMPONENT__PROVIDED, provideds.size(),
 			provideds.toArray());
 	}
 
-	protected static EList getAllProvideds(Component component,
-			EList allProvideds) {
+	protected static EList<Interface> getAllProvideds(Component component,
+			EList<Interface> allProvideds) {
 		allProvideds.addAll(component.getProvideds());
 
-		for (Iterator allParents = component.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Object parent = allParents.next();
+		for (Classifier parent : component.allParents()) {
 
 			if (parent instanceof Component) {
 				allProvideds.addAll(((Component) parent).getProvideds());
 			} else {
-				realizedInterfaces(component, (Classifier) parent, true,
-					allProvideds);
+				realizedInterfaces(component, parent, true, allProvideds);
 			}
 		}
 
 		return allProvideds;
 	}
 
-	protected static EList getAllRequireds(Component component,
-			EList allRequireds) {
+	protected static EList<Interface> getAllRequireds(Component component,
+			EList<Interface> allRequireds) {
 		allRequireds.addAll(component.getRequireds());
 
-		for (Iterator allParents = component.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Object parent = allParents.next();
+		for (Classifier parent : component.allParents()) {
 
 			if (parent instanceof Component) {
 				allRequireds.addAll(((Component) parent).getRequireds());
 			} else {
-				usedInterfaces(component, (Classifier) parent, true,
-					allRequireds);
+				usedInterfaces(component, parent, true, allRequireds);
 			}
 		}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConditionalNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConditionalNodeOperations.java
index f160a5f..ac36e92 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConditionalNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConditionalNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConditionalNodeOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ConditionalNodeOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateResultNoIncoming(
 			ConditionalNode conditionalNode, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectableElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectableElementOperations.java
index e38a23f..5c8a029 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectableElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectableElementOperations.java
@@ -8,12 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectableElementOperations.java,v 1.3 2006/10/11 16:30:16 khussey Exp $
+ * $Id: ConnectableElementOperations.java,v 1.4 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
-
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.UniqueEList;
@@ -35,9 +33,9 @@
 		super();
 	}
 
-	protected static EList getRequiredInterfaces(
+	protected static EList<Interface> getRequiredInterfaces(
 			ConnectableElement connectableElement) {
-		EList requiredInterfaces = new UniqueEList.FastCompare();
+		EList<Interface> requiredInterfaces = new UniqueEList.FastCompare<Interface>();
 
 		if (connectableElement instanceof Port) {
 			requiredInterfaces.addAll(((Port) connectableElement)
@@ -53,11 +51,8 @@
 				ComponentOperations.usedInterfaces(null, classifier, true,
 					requiredInterfaces);
 
-				for (Iterator allParents = classifier.allParents().iterator(); allParents
-					.hasNext();) {
-
-					ComponentOperations.usedInterfaces(null,
-						(Classifier) allParents.next(), true,
+				for (Classifier parent : classifier.allParents()) {
+					ComponentOperations.usedInterfaces(null, parent, true,
 						requiredInterfaces);
 				}
 			}
@@ -65,13 +60,10 @@
 
 		for (int i = 0, size = requiredInterfaces.size(); i < size; i++) {
 
-			for (Iterator allParents = ((Interface) requiredInterfaces.get(i))
-				.allParents().iterator(); allParents.hasNext();) {
-
-				Object parent = allParents.next();
+			for (Classifier parent : requiredInterfaces.get(i).allParents()) {
 
 				if (parent instanceof Interface) {
-					requiredInterfaces.add(parent);
+					requiredInterfaces.add((Interface) parent);
 				}
 			}
 		}
@@ -79,9 +71,9 @@
 		return ECollections.unmodifiableEList(requiredInterfaces);
 	}
 
-	protected static EList getProvidedInterfaces(
+	protected static EList<Interface> getProvidedInterfaces(
 			ConnectableElement connectableElement) {
-		EList providedInterfaces = new UniqueEList.FastCompare();
+		EList<Interface> providedInterfaces = new UniqueEList.FastCompare<Interface>();
 
 		if (connectableElement instanceof Port) {
 			providedInterfaces.addAll(((Port) connectableElement)
@@ -93,17 +85,14 @@
 				ComponentOperations.getAllProvideds((Component) type,
 					providedInterfaces);
 			} else if (type instanceof Interface) {
-				providedInterfaces.add(type);
+				providedInterfaces.add((Interface) type);
 			} else if (type instanceof Classifier) {
 				Classifier classifier = (Classifier) type;
 				ComponentOperations.realizedInterfaces(null, classifier, true,
 					providedInterfaces);
 
-				for (Iterator allParents = classifier.allParents().iterator(); allParents
-					.hasNext();) {
-
-					ComponentOperations.realizedInterfaces(null,
-						(Classifier) allParents.next(), true,
+				for (Classifier parent : classifier.allParents()) {
+					ComponentOperations.realizedInterfaces(null, parent, true,
 						providedInterfaces);
 				}
 			}
@@ -111,13 +100,10 @@
 
 		for (int i = 0, size = providedInterfaces.size(); i < size; i++) {
 
-			for (Iterator allParents = ((Interface) providedInterfaces.get(i))
-				.allParents().iterator(); allParents.hasNext();) {
-
-				Object parent = allParents.next();
+			for (Classifier parent : providedInterfaces.get(i).allParents()) {
 
 				if (parent instanceof Interface) {
-					providedInterfaces.add(parent);
+					providedInterfaces.add((Interface) parent);
 				}
 			}
 		}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectionPointReferenceOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectionPointReferenceOperations.java
index 00d18b1..8e73d6a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectionPointReferenceOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectionPointReferenceOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectionPointReferenceOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ConnectionPointReferenceOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateEntryPseudostates(
 			ConnectionPointReference connectionPointReference,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateExitPseudostates(
 			ConnectionPointReference connectionPointReference,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorEndOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorEndOperations.java
index 89cb2b5..e6543bd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorEndOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorEndOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorEndOperations.java,v 1.7 2006/02/23 17:36:26 khussey Exp $
+ * $Id: ConnectorEndOperations.java,v 1.8 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -69,7 +69,7 @@
 	 * @generated
 	 */
 	public static boolean validateMultiplicity(ConnectorEnd connectorEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -101,7 +101,7 @@
 	 * @generated
 	 */
 	public static boolean validatePartWithPortEmpty(ConnectorEnd connectorEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -133,7 +133,8 @@
 	 * @generated
 	 */
 	public static boolean validateRoleAndPartWithPort(
-			ConnectorEnd connectorEnd, DiagnosticChain diagnostics, Map context) {
+			ConnectorEnd connectorEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -165,7 +166,7 @@
 	 * @generated
 	 */
 	public static boolean validateSelfPartWithPort(ConnectorEnd connectorEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -200,13 +201,13 @@
 			Association type = connector.getType();
 
 			if (type != null) {
-				List ends = ((InternalEList) connector.getEnds()).basicList();
-				List memberEnds = ((InternalEList) type.getMemberEnds())
-					.basicList();
+				List<ConnectorEnd> ends = ((InternalEList<ConnectorEnd>) connector
+					.getEnds()).basicList();
+				List<Property> memberEnds = ((InternalEList<Property>) type
+					.getMemberEnds()).basicList();
 
 				if (ends.size() == memberEnds.size()) {
-					return (Property) memberEnds
-						.get(ends.indexOf(connectorEnd));
+					return memberEnds.get(ends.indexOf(connectorEnd));
 				}
 			}
 		}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorOperations.java
index 245a0a2..e313803 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConnectorOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConnectorOperations.java,v 1.9 2006/05/08 18:10:37 khussey Exp $
+ * $Id: ConnectorOperations.java,v 1.10 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
 
@@ -28,6 +27,7 @@
 import org.eclipse.uml2.uml.ConnectorEnd;
 import org.eclipse.uml2.uml.ConnectorKind;
 import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
 import org.eclipse.uml2.uml.Port;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Type;
@@ -78,22 +78,22 @@
 	 * @generated NOT
 	 */
 	public static boolean validateTypes(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 		Association connectorType = connector.getType();
 
 		if (connectorType != null) {
-			Iterator ends = connector.getEnds().iterator();
-			Iterator memberEnds = connectorType.getMemberEnds().iterator();
+			Iterator<ConnectorEnd> ends = connector.getEnds().iterator();
+			Iterator<Property> memberEnds = connectorType.getMemberEnds()
+				.iterator();
 
 			while (ends.hasNext() && memberEnds.hasNext()) {
-				ConnectableElement role = ((ConnectorEnd) ends.next())
-					.getRole();
+				ConnectableElement role = ends.next().getRole();
 				Type type = role == null
 					? null
 					: role.getType();
 
-				Type memberEndType = ((Property) memberEnds.next()).getType();
+				Type memberEndType = memberEnds.next().getType();
 
 				if (type == null
 					? memberEndType != null
@@ -130,7 +130,7 @@
 	 * @generated
 	 */
 	public static boolean validateCompatible(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -162,11 +162,11 @@
 	 * @generated NOT
 	 */
 	public static boolean validateRoles(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
-		Iterator ends = connector.getEnds().iterator();
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
+		Iterator<ConnectorEnd> ends = connector.getEnds().iterator();
 
 		while (ends.hasNext()) {
-			ConnectorEnd end = (ConnectorEnd) ends.next();
+			ConnectorEnd end = ends.next();
 			ConnectableElement role = end.getRole();
 
 			Element owner = null;
@@ -210,22 +210,22 @@
 	 * @generated NOT
 	 */
 	public static boolean validateBetweenInterfacesPorts(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
-		EList ends = connector.getEnds();
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
+		EList<ConnectorEnd> ends = connector.getEnds();
 
 		if (connector.getKind() == ConnectorKind.DELEGATION_LITERAL
 			&& ends.size() == 2) {
 
-			ConnectableElement role1 = ((ConnectorEnd) ends.get(0)).getRole();
-			Collection required1 = ConnectableElementOperations
+			ConnectableElement role1 = ends.get(0).getRole();
+			EList<Interface> required1 = ConnectableElementOperations
 				.getRequiredInterfaces(role1);
-			Collection provided1 = ConnectableElementOperations
+			EList<Interface> provided1 = ConnectableElementOperations
 				.getProvidedInterfaces(role1);
 
-			ConnectableElement role2 = ((ConnectorEnd) ends.get(1)).getRole();
-			Collection required2 = ConnectableElementOperations
+			ConnectableElement role2 = ends.get(1).getRole();
+			EList<Interface> required2 = ConnectableElementOperations
 				.getRequiredInterfaces(role2);
-			Collection provided2 = ConnectableElementOperations
+			EList<Interface> provided2 = ConnectableElementOperations
 				.getProvidedInterfaces(role2);
 
 			if (intersect(provided2, required1)
@@ -258,19 +258,20 @@
 	 * @generated NOT
 	 */
 	public static boolean validateBetweenInterfacePortImplements(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
-		EList ends = connector.getEnds();
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
+		EList<ConnectorEnd> ends = connector.getEnds();
 
 		if (connector.getKind() == ConnectorKind.DELEGATION_LITERAL
 			&& ends.size() == 2) {
 
-			ConnectorEnd end1 = (ConnectorEnd) ends.get(0);
+			ConnectorEnd end1 = ends.get(0);
 			ConnectableElement role1 = end1.getRole();
 
-			ConnectorEnd end2 = (ConnectorEnd) ends.get(1);
+			ConnectorEnd end2 = ends.get(1);
 			ConnectableElement role2 = end2.getRole();
 
-			Collection provided1 = ConnectableElementOperations
+			EList<Interface> provided1 = ConnectableElementOperations
 				.getProvidedInterfaces(role1);
 
 			if (!provided1.isEmpty() && !(role2 instanceof Port)
@@ -315,23 +316,24 @@
 	 */
 
 	public static boolean validateBetweenInterfacePortSignature(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		boolean result = true;
-		EList ends = connector.getEnds();
+		EList<ConnectorEnd> ends = connector.getEnds();
 
 		if (connector.getKind() == ConnectorKind.DELEGATION_LITERAL
 			&& ends.size() == 2) {
 
-			ConnectableElement role1 = ((ConnectorEnd) ends.get(0)).getRole();
-			Collection required1 = ConnectableElementOperations
+			ConnectableElement role1 = ends.get(0).getRole();
+			EList<Interface> required1 = ConnectableElementOperations
 				.getRequiredInterfaces(role1);
-			Collection provided1 = ConnectableElementOperations
+			EList<Interface> provided1 = ConnectableElementOperations
 				.getProvidedInterfaces(role1);
 
-			ConnectableElement role2 = ((ConnectorEnd) ends.get(1)).getRole();
-			Collection required2 = ConnectableElementOperations
+			ConnectableElement role2 = ends.get(1).getRole();
+			EList<Interface> required2 = ConnectableElementOperations
 				.getRequiredInterfaces(role2);
-			Collection provided2 = ConnectableElementOperations
+			EList<Interface> provided2 = ConnectableElementOperations
 				.getProvidedInterfaces(role2);
 
 			if (!provided1.isEmpty() && !provided2.isEmpty()) {
@@ -369,7 +371,7 @@
 	 * @generated
 	 */
 	public static boolean validateUnionSignatureCompatible(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -401,22 +403,22 @@
 	 * @generated NOT
 	 */
 	public static boolean validateAssemblyConnector(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
-		EList ends = connector.getEnds();
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
+		EList<ConnectorEnd> ends = connector.getEnds();
 
 		if (connector.getKind() == ConnectorKind.ASSEMBLY_LITERAL
 			&& ends.size() == 2) {
 
-			ConnectableElement role1 = ((ConnectorEnd) ends.get(0)).getRole();
-			Collection required1 = ConnectableElementOperations
+			ConnectableElement role1 = ends.get(0).getRole();
+			EList<Interface> required1 = ConnectableElementOperations
 				.getRequiredInterfaces(role1);
-			Collection provided1 = ConnectableElementOperations
+			EList<Interface> provided1 = ConnectableElementOperations
 				.getProvidedInterfaces(role1);
 
-			ConnectableElement role2 = ((ConnectorEnd) ends.get(1)).getRole();
-			Collection required2 = ConnectableElementOperations
+			ConnectableElement role2 = ends.get(1).getRole();
+			EList<Interface> required2 = ConnectableElementOperations
 				.getRequiredInterfaces(role2);
-			Collection provided2 = ConnectableElementOperations
+			EList<Interface> provided2 = ConnectableElementOperations
 				.getProvidedInterfaces(role2);
 
 			if (!intersect(provided1, required2)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConsiderIgnoreFragmentOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConsiderIgnoreFragmentOperations.java
index e72be49..62ee4b7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConsiderIgnoreFragmentOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConsiderIgnoreFragmentOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConsiderIgnoreFragmentOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ConsiderIgnoreFragmentOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateConsiderOrIgnore(
 			ConsiderIgnoreFragment considerIgnoreFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateType(
 			ConsiderIgnoreFragment considerIgnoreFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConstraintOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConstraintOperations.java
index b176afa..e764ff5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConstraintOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ConstraintOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ConstraintOperations.java,v 1.5 2006/03/13 20:50:41 khussey Exp $
+ * $Id: ConstraintOperations.java,v 1.6 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateNotApplyToSelf(Constraint constraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (constraint.getConstrainedElements().contains(constraint)) {
@@ -93,7 +93,8 @@
 	 * @generated
 	 */
 	public static boolean validateValueSpecificationBoolean(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +126,7 @@
 	 * @generated
 	 */
 	public static boolean validateBooleanValue(Constraint constraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -157,7 +158,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoSideEffects(Constraint constraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -189,7 +190,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotAppliedToSelf(Constraint constraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ContinuationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ContinuationOperations.java
index 55f1c8d..26d3f0f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ContinuationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ContinuationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ContinuationOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ContinuationOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameName(Continuation continuation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateGlobal(Continuation continuation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,8 @@
 	 * @generated
 	 */
 	public static boolean validateFirstOrLastInteractionFragment(
-			Continuation continuation, DiagnosticChain diagnostics, Map context) {
+			Continuation continuation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ControlFlowOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ControlFlowOperations.java
index e4c935d..8dc1573 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ControlFlowOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ControlFlowOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ControlFlowOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ControlFlowOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateObjectNodes(ControlFlow controlFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkActionOperations.java
index f5127f6..c7904ac 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: CreateLinkActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateAssociationNotAbstract(
 			CreateLinkAction createLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkObjectActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkObjectActionOperations.java
index 67d0f42..20a8162 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkObjectActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateLinkObjectActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateLinkObjectActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: CreateLinkObjectActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateAssociationClass(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateTypeOfResult(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -127,7 +127,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateObjectActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateObjectActionOperations.java
index 3ebe70d..512e6ed 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateObjectActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreateObjectActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreateObjectActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: CreateObjectActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateClassifierNotAbstract(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateClassifierNotAssociationClass(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateSameType(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -161,7 +161,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreationEventOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreationEventOperations.java
index 9360e2c..7a24900 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreationEventOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/CreationEventOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: CreationEventOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: CreationEventOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateNoOccurrenceAbove(
 			CreationEvent creationEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DataTypeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DataTypeOperations.java
index 28899d8..66a9c4b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DataTypeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DataTypeOperations.java
@@ -8,16 +8,16 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DataTypeOperations.java,v 1.10 2006/03/07 20:25:17 khussey Exp $
+ * $Id: DataTypeOperations.java,v 1.11 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 
-import java.util.Iterator;
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Type;
@@ -58,8 +58,8 @@
 	 * @generated NOT
 	 */
 	public static Operation createOwnedOperation(DataType dataType,
-			String name, EList parameterNames, EList parameterTypes,
-			Type returnType) {
+			String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType) {
 		return TypeOperations.createOwnedOperation(dataType, name,
 			parameterNames, parameterTypes, returnType);
 	}
@@ -84,15 +84,12 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList inherit(DataType dataType, EList inhs) {
-		EList inherit = new UniqueEList.FastCompare();
+	public static EList<NamedElement> inherit(DataType dataType,
+			EList<NamedElement> inhs) {
+		EList<NamedElement> inherit = new UniqueEList.FastCompare<NamedElement>();
+		EList<NamedElement> redefinedElements = new UniqueEList.FastCompare<NamedElement>();
 
-		EList redefinedElements = new UniqueEList.FastCompare();
-
-		for (Iterator ownedMembers = dataType.getOwnedMembers().iterator(); ownedMembers
-			.hasNext();) {
-
-			Object ownedMember = ownedMembers.next();
+		for (NamedElement ownedMember : dataType.getOwnedMembers()) {
 
 			if (ownedMember instanceof RedefinableElement) {
 				redefinedElements.addAll(((RedefinableElement) ownedMember)
@@ -100,8 +97,7 @@
 			}
 		}
 
-		for (Iterator i = inhs.iterator(); i.hasNext();) {
-			Object inh = i.next();
+		for (NamedElement inh : inhs) {
 
 			if (!redefinedElements.contains(inh)) {
 				inherit.add(inh);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DecisionNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DecisionNodeOperations.java
index 3ee4c60..7e85b3b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DecisionNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DecisionNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DecisionNodeOperations.java,v 1.5 2006/03/28 18:26:14 khussey Exp $
+ * $Id: DecisionNodeOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateOneIncomingEdge(DecisionNode decisionNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (decisionNode.getIncomings().size() != 1) {
 
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateInputParameter(DecisionNode decisionNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -123,7 +123,7 @@
 	 * @generated
 	 */
 	public static boolean validateEdges(DecisionNode decisionNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentSpecificationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentSpecificationOperations.java
index 5a15972..634fde7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentSpecificationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentSpecificationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentSpecificationOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: DeploymentSpecificationOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateDeployedElements(
 			DeploymentSpecification deploymentSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateDeploymentTarget(
 			DeploymentSpecification deploymentSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentTargetOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentTargetOperations.java
index d9dad71..38b7808 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentTargetOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DeploymentTargetOperations.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DeploymentTargetOperations.java,v 1.7 2006/01/27 04:55:56 khussey Exp $
+ * $Id: DeploymentTargetOperations.java,v 1.8 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
 import org.eclipse.emf.common.util.EList;
 
-import java.util.Iterator;
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.uml2.common.util.UnionEObjectEList;
@@ -60,26 +59,21 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getDeployedElements(DeploymentTarget deploymentTarget) {
-		EList deployedElements = new UniqueEList.FastCompare();
+	public static EList<PackageableElement> getDeployedElements(
+			DeploymentTarget deploymentTarget) {
+		EList<PackageableElement> deployedElements = new UniqueEList.FastCompare<PackageableElement>();
 
-		for (Iterator deployments = deploymentTarget.getDeployments()
-			.iterator(); deployments.hasNext();) {
+		for (Deployment deployment : deploymentTarget.getDeployments()) {
 
-			for (Iterator deployedArtifacts = ((Deployment) deployments.next())
-				.getDeployedArtifacts().iterator(); deployedArtifacts.hasNext();) {
-
-				DeployedArtifact deployedArtifact = (DeployedArtifact) deployedArtifacts
-					.next();
+			for (DeployedArtifact deployedArtifact : deployment
+				.getDeployedArtifacts()) {
 
 				if (deployedArtifact instanceof Artifact) {
 
-					for (Iterator manifestations = ((Artifact) deployedArtifact)
-						.getManifestations().iterator(); manifestations
-						.hasNext();) {
+					for (Manifestation manifestation : ((Artifact) deployedArtifact)
+						.getManifestations()) {
 
-						PackageableElement utilizedElement = (PackageableElement) ((Manifestation) manifestations
-							.next())
+						PackageableElement utilizedElement = (PackageableElement) manifestation
 							.eGet(
 								UMLPackage.Literals.MANIFESTATION__UTILIZED_ELEMENT,
 								false);
@@ -92,7 +86,8 @@
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) deploymentTarget,
+		return new UnionEObjectEList<PackageableElement>(
+			(InternalEObject) deploymentTarget,
 			UMLPackage.Literals.DEPLOYMENT_TARGET__DEPLOYED_ELEMENT,
 			deployedElements.size(), deployedElements.toArray());
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestroyObjectActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestroyObjectActionOperations.java
index a7bd954..1d3a215 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestroyObjectActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestroyObjectActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestroyObjectActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: DestroyObjectActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			DestroyObjectAction destroyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateNoType(
 			DestroyObjectAction destroyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestructionEventOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestructionEventOperations.java
index 96fac3c..059fcea 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestructionEventOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DestructionEventOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DestructionEventOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: DestructionEventOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateNoOccurrenceSpecificationsBelow(
 			DestructionEvent destructionEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationConstraintOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationConstraintOperations.java
index 439dc29..cb54a4c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationConstraintOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationConstraintOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationConstraintOperations.java,v 1.4 2006/04/05 13:50:02 khussey Exp $
+ * $Id: DurationConstraintOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateFirstEventMultiplicity(
 			DurationConstraint durationConstraint, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationObservationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationObservationOperations.java
index 4a1a7c0..7fc713f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationObservationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/DurationObservationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: DurationObservationOperations.java,v 1.4 2006/04/05 13:50:03 khussey Exp $
+ * $Id: DurationObservationOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateFirstEventMultiplicity(
 			DurationObservation durationObservation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementImportOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementImportOperations.java
index de4d54f..a4a0d31 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementImportOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementImportOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ElementImportOperations.java,v 1.7 2006/03/15 19:34:24 khussey Exp $
+ * $Id: ElementImportOperations.java,v 1.8 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -64,7 +64,7 @@
 	 */
 	public static boolean validateVisibilityPublicOrPrivate(
 			ElementImport elementImport, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = true;
 
 		VisibilityKind visibility = elementImport.getVisibility();
@@ -102,7 +102,7 @@
 	 */
 	public static boolean validateImportedElementIsPublic(
 			ElementImport elementImport, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = true;
 
 		PackageableElement importedElement = elementImport.getImportedElement();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
index 5972690..d9c70b3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ElementOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ElementOperations.java,v 1.47 2006/10/25 18:12:15 khussey Exp $
+ * $Id: ElementOperations.java,v 1.48 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -27,6 +27,7 @@
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.UniqueEList;
 
 import org.eclipse.emf.ecore.EAnnotation;
@@ -51,6 +52,7 @@
 import org.eclipse.uml2.uml.EnumerationLiteral;
 import org.eclipse.uml2.uml.Extension;
 import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Relationship;
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Profile;
 import org.eclipse.uml2.uml.ProfileApplication;
@@ -127,7 +129,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateNotOwnSelf(Element element,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (EcoreUtil.isAncestor(element, element.getOwner())) {
@@ -156,7 +158,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateHasOwner(Element element,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (element.mustBeOwned() && element.getOwner() == null) {
@@ -180,14 +182,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getStereotypeApplications(Element element) {
-		EList stereotypeApplications = new UniqueEList.FastCompare();
+	public static EList<EObject> getStereotypeApplications(Element element) {
+		EList<EObject> stereotypeApplications = new UniqueEList.FastCompare<EObject>();
 
-		for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-			element).iterator(); nonNavigableInverseReferences.hasNext();) {
-
-			EStructuralFeature.Setting setting = (EStructuralFeature.Setting) nonNavigableInverseReferences
-				.next();
+		for (EStructuralFeature.Setting setting : getNonNavigableInverseReferences(element)) {
 
 			if (setting.getEStructuralFeature().getName().startsWith(
 				Extension.METACLASS_ROLE_PREFIX)) {
@@ -211,12 +209,8 @@
 	public static EObject getStereotypeApplication(Element element,
 			Stereotype stereotype) {
 
-		for (Iterator stereotypeApplications = element
-			.getStereotypeApplications().iterator(); stereotypeApplications
-			.hasNext();) {
-
-			EObject stereotypeApplication = (EObject) stereotypeApplications
-				.next();
+		for (EObject stereotypeApplication : element
+			.getStereotypeApplications()) {
 
 			if (getStereotype(stereotypeApplication) == stereotype) {
 				return stereotypeApplication;
@@ -231,28 +225,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getRequiredStereotypes(Element element) {
+	public static EList<Stereotype> getRequiredStereotypes(Element element) {
 		org.eclipse.uml2.uml.Package package_ = element.getNearestPackage();
 
 		if (package_ != null) {
-			EList requiredStereotypes = new UniqueEList.FastCompare();
+			EList<Stereotype> requiredStereotypes = new UniqueEList.FastCompare<Stereotype>();
 
-			for (Iterator allProfileApplications = package_
-				.getAllProfileApplications().iterator(); allProfileApplications
-				.hasNext();) {
+			for (ProfileApplication profileApplication : package_
+				.getAllProfileApplications()) {
 
-				ProfileApplication profileApplication = (ProfileApplication) allProfileApplications
-					.next();
 				Profile appliedProfile = profileApplication.getAppliedProfile();
 
 				if (appliedProfile != null) {
 
-					for (Iterator ownedStereotypes = appliedProfile
-						.getOwnedStereotypes().iterator(); ownedStereotypes
-						.hasNext();) {
+					for (Stereotype stereotype : appliedProfile
+						.getOwnedStereotypes()) {
 
-						Stereotype stereotype = (Stereotype) ownedStereotypes
-							.next();
 						ENamedElement appliedDefinition = profileApplication
 							.getAppliedDefinition(stereotype);
 
@@ -273,7 +261,7 @@
 			return ECollections.unmodifiableEList(requiredStereotypes);
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.emptyEList();
 	}
 
 	/**
@@ -284,11 +272,7 @@
 	public static Stereotype getRequiredStereotype(Element element,
 			String qualifiedName) {
 
-		for (Iterator requiredStereotypes = element.getRequiredStereotypes()
-			.iterator(); requiredStereotypes.hasNext();) {
-
-			Stereotype requiredStereotype = (Stereotype) requiredStereotypes
-				.next();
+		for (Stereotype requiredStereotype : element.getRequiredStereotypes()) {
 
 			if (safeEquals(requiredStereotype.getQualifiedName(), qualifiedName)) {
 				return requiredStereotype;
@@ -303,14 +287,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAppliedStereotypes(Element element) {
-		EList appliedStereotypes = new UniqueEList.FastCompare();
+	public static EList<Stereotype> getAppliedStereotypes(Element element) {
+		EList<Stereotype> appliedStereotypes = new UniqueEList.FastCompare<Stereotype>();
 
-		for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-			element).iterator(); nonNavigableInverseReferences.hasNext();) {
-
-			EStructuralFeature.Setting setting = (EStructuralFeature.Setting) nonNavigableInverseReferences
-				.next();
+		for (EStructuralFeature.Setting setting : getNonNavigableInverseReferences(element)) {
 
 			if (setting.getEStructuralFeature().getName().startsWith(
 				Extension.METACLASS_ROLE_PREFIX)) {
@@ -334,11 +314,7 @@
 	public static Stereotype getAppliedStereotype(Element element,
 			String qualifiedName) {
 
-		for (Iterator appliedStereotypes = element.getAppliedStereotypes()
-			.iterator(); appliedStereotypes.hasNext();) {
-
-			Stereotype appliedStereotype = (Stereotype) appliedStereotypes
-				.next();
+		for (Stereotype appliedStereotype : element.getAppliedStereotypes()) {
 
 			if (safeEquals(appliedStereotype.getQualifiedName(), qualifiedName)) {
 				return appliedStereotype;
@@ -353,15 +329,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAppliedSubstereotypes(Element element,
+	public static EList<Stereotype> getAppliedSubstereotypes(Element element,
 			Stereotype stereotype) {
-		EList appliedSubstereotypes = new UniqueEList.FastCompare();
+		EList<Stereotype> appliedSubstereotypes = new UniqueEList.FastCompare<Stereotype>();
 
-		for (Iterator appliedStereotypes = element.getAppliedStereotypes()
-			.iterator(); appliedStereotypes.hasNext();) {
-
-			Stereotype appliedStereotype = (Stereotype) appliedStereotypes
-				.next();
+		for (Stereotype appliedStereotype : element.getAppliedStereotypes()) {
 
 			if (appliedStereotype.allParents().contains(stereotype)) {
 				appliedSubstereotypes.add(appliedStereotype);
@@ -379,11 +351,8 @@
 	public static Stereotype getAppliedSubstereotype(Element element,
 			Stereotype stereotype, String qualifiedName) {
 
-		for (Iterator appliedSubstereotypes = element.getAppliedSubstereotypes(
-			stereotype).iterator(); appliedSubstereotypes.hasNext();) {
-
-			Stereotype appliedSubstereotype = (Stereotype) appliedSubstereotypes
-				.next();
+		for (Stereotype appliedSubstereotype : element
+			.getAppliedSubstereotypes(stereotype)) {
 
 			if (safeEquals(appliedSubstereotype.getQualifiedName(),
 				qualifiedName)) {
@@ -451,9 +420,11 @@
 					} else {
 
 						if (eStructuralFeature.isMany()) {
-							List list = eObject == null
-								? Collections.EMPTY_LIST
-								: (List) eObject.eGet(eStructuralFeature);
+							@SuppressWarnings("unchecked")
+							List<Object> list = eObject == null
+								? Collections.emptyList()
+								: (List<Object>) eObject
+									.eGet(eStructuralFeature);
 
 							return index == -1
 								? !list.isEmpty()
@@ -544,9 +515,10 @@
 				Object value = null;
 
 				if (eStructuralFeature.isMany()) {
-					List list = eObject == null
-						? Collections.EMPTY_LIST
-						: (List) eObject.eGet(eStructuralFeature);
+					@SuppressWarnings("unchecked")
+					List<Object> list = eObject == null
+						? Collections.emptyList()
+						: (List<Object>) eObject.eGet(eStructuralFeature);
 
 					value = index == -1
 						? list
@@ -562,7 +534,7 @@
 						.getEAnnotation(UMLPackage.eNS_URI);
 
 					if (eAnnotation != null) {
-						EList references = eAnnotation.getReferences();
+						EList<EObject> references = eAnnotation.getReferences();
 
 						if (references.size() > 0) {
 							Object reference = references.get(0);
@@ -646,7 +618,9 @@
 				eClass = (EClass) eType;
 
 				if (eStructuralFeature.isMany()) {
-					List list = (List) eObject.eGet(eStructuralFeature);
+					@SuppressWarnings("unchecked")
+					List<Object> list = (List<Object>) eObject
+						.eGet(eStructuralFeature);
 					int size = list.size();
 
 					if (size <= index) {
@@ -686,9 +660,11 @@
 						EClass eClassType = (EClass) eType;
 
 						if (newValue instanceof List) {
+							@SuppressWarnings("unchecked")
+							Iterator<Object> j = ((List<Object>) newValue)
+								.iterator();
 
-							for (Iterator j = ((List) newValue).iterator(); j
-								.hasNext();) {
+							while (j.hasNext()) {
 
 								if (!eClassType.isInstance(j.next())) {
 									throw new IllegalArgumentException(String
@@ -705,12 +681,14 @@
 							.getEFactoryInstance();
 
 						if (newValue instanceof List) {
-							newValue = new ArrayList((List) newValue);
+							@SuppressWarnings("unchecked")
+							List<Object> newList = new ArrayList<Object>(
+								(List<Object>) newValue);
 
 							if (eDataType instanceof EEnum) {
 								EEnum eEnum = (EEnum) eDataType;
 
-								for (ListIterator li = ((List) newValue)
+								for (ListIterator<Object> li = newList
 									.listIterator(); li.hasNext();) {
 
 									Object item = li.next();
@@ -723,7 +701,7 @@
 								}
 							}
 
-							for (ListIterator li = ((List) newValue)
+							for (ListIterator<Object> li = newList
 								.listIterator(); li.hasNext();) {
 
 								Object item = li.next();
@@ -739,6 +717,8 @@
 									}
 								}
 							}
+
+							newValue = newList;
 						} else {
 
 							if (eDataType instanceof EEnum) {
@@ -780,7 +760,9 @@
 								.valueOf(newValue));
 						}
 					} else {
-						List list = (List) eObject.eGet(eStructuralFeature);
+						@SuppressWarnings("unchecked")
+						List<Object> list = (List<Object>) eObject
+							.eGet(eStructuralFeature);
 
 						for (int j = list.size(); j < index; j++) {
 							list.add(j, eStructuralFeature.getDefaultValue());
@@ -814,7 +796,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getRelationships(Element element) {
+	public static EList<Relationship> getRelationships(Element element) {
 		return getRelationships(element, UMLPackage.Literals.RELATIONSHIP);
 	}
 
@@ -823,18 +805,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getRelationships(Element element, EClass eClass) {
-		EList relationships = new UniqueEList.FastCompare();
+	public static EList<Relationship> getRelationships(Element element,
+			EClass eClass) {
+		EList<Relationship> relationships = new UniqueEList.FastCompare<Relationship>();
 
-		for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-			element).iterator(); nonNavigableInverseReferences.hasNext();) {
+		for (EStructuralFeature.Setting setting : getNonNavigableInverseReferences(element)) {
 
-			EStructuralFeature.Setting setting = (EStructuralFeature.Setting) nonNavigableInverseReferences
-				.next();
 			EObject eObject = setting.getEObject();
 
 			if (eClass.isInstance(eObject)) {
-				relationships.add(eObject);
+				relationships.add((Relationship) eObject);
 			} else if (eObject instanceof Property) {
 				Association association = ((Property) eObject).getAssociation();
 
@@ -844,10 +824,7 @@
 			}
 		}
 
-		for (Iterator eAllReferences = element.eClass().getEAllReferences()
-			.iterator(); eAllReferences.hasNext();) {
-
-			EReference eReference = (EReference) eAllReferences.next();
+		for (EReference eReference : element.eClass().getEAllReferences()) {
 
 			if (!eReference.isDerived() && element.eIsSet(eReference)) {
 				EClass eReferenceType = eReference.getEReferenceType();
@@ -855,26 +832,30 @@
 				if (eClass.isSuperTypeOf(eReferenceType)) {
 
 					if (eReference.isMany()) {
-						relationships.addAll((List) element.eGet(eReference));
+						@SuppressWarnings("unchecked")
+						List<Relationship> values = (List<Relationship>) element
+							.eGet(eReference);
+						relationships.addAll(values);
 					} else {
-						relationships.add(element.eGet(eReference));
+						relationships.add((Relationship) element
+							.eGet(eReference));
 					}
 				} else if (eReferenceType.isSuperTypeOf(eClass)) {
 					Object value = element.eGet(eReference);
 
 					if (eReference.isMany()) {
+						@SuppressWarnings("unchecked")
+						Iterator<Object> i = ((List<Object>) value).iterator();
 
-						for (Iterator i = ((List) value).iterator(); i
-							.hasNext();) {
-
+						while (i.hasNext()) {
 							value = i.next();
 
 							if (eClass.isInstance(value)) {
-								relationships.add(value);
+								relationships.add((Relationship) value);
 							}
 						}
 					} else if (eClass.isInstance(value)) {
-						relationships.add(value);
+						relationships.add((Relationship) value);
 					}
 				}
 			}
@@ -888,7 +869,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getSourceDirectedRelationships(Element element) {
+	public static EList<DirectedRelationship> getSourceDirectedRelationships(
+			Element element) {
 		return getSourceDirectedRelationships(element,
 			UMLPackage.Literals.DIRECTED_RELATIONSHIP);
 	}
@@ -898,12 +880,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getSourceDirectedRelationships(Element element,
-			EClass eClass) {
-		EList sourceDirectedRelationships = new UniqueEList.FastCompare();
+	public static EList<DirectedRelationship> getSourceDirectedRelationships(
+			Element element, EClass eClass) {
+		EList<DirectedRelationship> sourceDirectedRelationships = new UniqueEList.FastCompare<DirectedRelationship>();
 
-		for (Iterator directedRelationships = getRelationships(element, eClass)
-			.iterator(); directedRelationships.hasNext();) {
+		for (Iterator<Relationship> directedRelationships = getRelationships(
+			element, eClass).iterator(); directedRelationships.hasNext();) {
 
 			DirectedRelationship directedRelationship = (DirectedRelationship) directedRelationships
 				.next();
@@ -921,7 +903,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getTargetDirectedRelationships(Element element) {
+	public static EList<DirectedRelationship> getTargetDirectedRelationships(
+			Element element) {
 		return getTargetDirectedRelationships(element,
 			UMLPackage.Literals.DIRECTED_RELATIONSHIP);
 	}
@@ -931,12 +914,12 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getTargetDirectedRelationships(Element element,
-			EClass eClass) {
-		EList targetDirectedRelationships = new UniqueEList.FastCompare();
+	public static EList<DirectedRelationship> getTargetDirectedRelationships(
+			Element element, EClass eClass) {
+		EList<DirectedRelationship> targetDirectedRelationships = new UniqueEList.FastCompare<DirectedRelationship>();
 
-		for (Iterator directedRelationships = getRelationships(element, eClass)
-			.iterator(); directedRelationships.hasNext();) {
+		for (Iterator<Relationship> directedRelationships = getRelationships(
+			element, eClass).iterator(); directedRelationships.hasNext();) {
 
 			DirectedRelationship directedRelationship = (DirectedRelationship) directedRelationships
 				.next();
@@ -954,24 +937,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getKeywords(Element element) {
+	public static EList<String> getKeywords(Element element) {
 		EAnnotation eAnnotation = element.getEAnnotation(UMLPackage.eNS_URI);
 
 		if (eAnnotation != null) {
-			EMap details = eAnnotation.getDetails();
+			EMap<String, String> details = eAnnotation.getDetails();
 
 			if (!details.isEmpty()) {
-				EList keywords = new UniqueEList();
+				EList<String> keywords = new UniqueEList<String>();
 
-				for (Iterator d = details.iterator(); d.hasNext();) {
-					keywords.add(((Map.Entry) d.next()).getKey());
+				for (Iterator<Map.Entry<String, String>> d = details.iterator(); d
+					.hasNext();) {
+
+					keywords.add(d.next().getKey());
 				}
 
 				return ECollections.unmodifiableEList(keywords);
 			}
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.emptyEList();
 	}
 
 	/**
@@ -980,8 +965,8 @@
 	 * @generated NOT
 	 */
 	public static boolean addKeyword(Element element, String keyword) {
-		EMap details = getEAnnotation(element, UMLPackage.eNS_URI, true)
-			.getDetails();
+		EMap<String, String> details = getEAnnotation(element,
+			UMLPackage.eNS_URI, true).getDetails();
 
 		if (!details.containsKey(keyword)) {
 			details.put(keyword, null);
@@ -1000,7 +985,7 @@
 		EAnnotation eAnnotation = element.getEAnnotation(UMLPackage.eNS_URI);
 
 		if (eAnnotation != null) {
-			EMap details = eAnnotation.getDetails();
+			EMap<String, String> details = eAnnotation.getDetails();
 
 			if (details.containsKey(keyword)) {
 				details.removeKey(keyword);
@@ -1052,10 +1037,7 @@
 	protected static Extension getExtension(Element element,
 			Stereotype stereotype) {
 
-		for (Iterator allAttributes = stereotype.getAllAttributes().iterator(); allAttributes
-			.hasNext();) {
-
-			Property attribute = (Property) allAttributes.next();
+		for (Property attribute : stereotype.getAllAttributes()) {
 			Association association = attribute.getAssociation();
 
 			if (association instanceof Extension) {
@@ -1153,33 +1135,25 @@
 		return element.getStereotypeApplication(stereotype) != null;
 	}
 
-	protected static EList applyAllStereotypes(Element element,
-			Map definitions, EList stereotypeApplications) {
+	protected static EList<EObject> applyAllStereotypes(Element element,
+			Map<EClassifier, Map<Stereotype, EClass>> definitions,
+			EList<EObject> stereotypeApplications) {
 
 		if (!element.eIsProxy()) {
 
-			for (Iterator stereotypeEntries = definitions.entrySet().iterator(); stereotypeEntries
-				.hasNext();) {
+			for (Map.Entry<EClassifier, Map<Stereotype, EClass>> stereotypeEntry : definitions
+				.entrySet()) {
 
-				Map.Entry stereotypeEntry = (Map.Entry) stereotypeEntries
-					.next();
+				if (stereotypeEntry.getKey().isInstance(element)) {
 
-				if (((EClassifier) stereotypeEntry.getKey())
-					.isInstance(element)) {
+					for (Map.Entry<Stereotype, EClass> definitionEntry : stereotypeEntry
+						.getValue().entrySet()) {
 
-					for (Iterator definitionEntries = ((Map) stereotypeEntry
-						.getValue()).entrySet().iterator(); definitionEntries
-						.hasNext();) {
-
-						Map.Entry definitionEntry = (Map.Entry) definitionEntries
-							.next();
-
-						if (!element
-							.isStereotypeApplied((Stereotype) definitionEntry
-								.getKey())) {
+						if (!element.isStereotypeApplied(definitionEntry
+							.getKey())) {
 
 							stereotypeApplications.add(applyStereotype(element,
-								(EClass) definitionEntry.getValue()));
+								definitionEntry.getValue()));
 						}
 					}
 				}
@@ -1189,18 +1163,19 @@
 		return stereotypeApplications;
 	}
 
-	protected static EList applyAllStereotypes(Element element,
-			Map definitions, boolean resolve) {
-		EList stereotypeApplications = new UniqueEList.FastCompare();
+	protected static EList<EObject> applyAllStereotypes(Element element,
+			Map<EClassifier, Map<Stereotype, EClass>> definitions,
+			boolean resolve) {
+		EList<EObject> stereotypeApplications = new UniqueEList.FastCompare<EObject>();
 
 		applyAllStereotypes(element, definitions, stereotypeApplications);
 
 		if (!element.eContents().isEmpty()) {
 
-			for (Iterator allContents = EcoreUtil.getAllContents(element,
-				resolve); allContents.hasNext();) {
+			for (TreeIterator<EObject> allContents = EcoreUtil.getAllContents(
+				element, resolve); allContents.hasNext();) {
 
-				EObject eObject = (EObject) allContents.next();
+				EObject eObject = allContents.next();
 
 				if (eObject instanceof Element) {
 					applyAllStereotypes((Element) eObject, definitions,
@@ -1212,33 +1187,27 @@
 		return stereotypeApplications;
 	}
 
-	public static EList applyAllRequiredStereotypes(Element element) {
+	public static EList<EObject> applyAllRequiredStereotypes(Element element) {
 		return applyAllRequiredStereotypes(element, true);
 	}
 
-	public static EList applyAllRequiredStereotypes(Element element,
+	public static EList<EObject> applyAllRequiredStereotypes(Element element,
 			boolean resolve) {
 		org.eclipse.uml2.uml.Package package_ = element.getNearestPackage();
 
 		if (package_ != null) {
-			Map definitions = new HashMap();
+			Map<EClassifier, Map<Stereotype, EClass>> definitions = new HashMap<EClassifier, Map<Stereotype, EClass>>();
 
-			for (Iterator allProfileApplications = package_
-				.getAllProfileApplications().iterator(); allProfileApplications
-				.hasNext();) {
+			for (ProfileApplication profileApplication : package_
+				.getAllProfileApplications()) {
 
-				ProfileApplication profileApplication = (ProfileApplication) allProfileApplications
-					.next();
 				Profile appliedProfile = profileApplication.getAppliedProfile();
 
 				if (appliedProfile != null) {
 
-					for (Iterator ownedExtensions = appliedProfile
-						.getOwnedExtensions(true).iterator(); ownedExtensions
-						.hasNext();) {
+					for (Extension ownedExtension : appliedProfile
+						.getOwnedExtensions(true)) {
 
-						Extension ownedExtension = (Extension) ownedExtensions
-							.next();
 						org.eclipse.uml2.uml.Class metaclass = ownedExtension
 							.getMetaclass();
 
@@ -1257,19 +1226,21 @@
 										&& !((EClass) appliedDefinition)
 											.isAbstract()) {
 
-										Map stereotypes = (Map) definitions
+										Map<Stereotype, EClass> stereotypes = definitions
 											.get(eClassifier);
 
 										if (stereotypes == null) {
-											definitions.put(eClassifier,
-												stereotypes = new HashMap());
+											definitions
+												.put(
+													eClassifier,
+													stereotypes = new HashMap<Stereotype, EClass>());
 										}
 
 										if (!stereotypes
 											.containsKey(stereotype)) {
 
 											stereotypes.put(stereotype,
-												appliedDefinition);
+												(EClass) appliedDefinition);
 										}
 									}
 								}
@@ -1284,7 +1255,7 @@
 			}
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.emptyEList();
 	}
 
 	/**
@@ -1304,15 +1275,13 @@
 		return applyStereotype(element, definition);
 	}
 
-	protected static EList unapplyAllNonApplicableStereotypes(Element element,
-			EList nonApplicableStereotypes) {
+	protected static EList<EObject> unapplyAllNonApplicableStereotypes(
+			Element element, EList<EObject> nonApplicableStereotypes) {
 
 		if (!element.eIsProxy()) {
 
-			for (Iterator sa = element.getStereotypeApplications().iterator(); sa
-				.hasNext();) {
-
-				EObject stereotypeApplication = (EObject) sa.next();
+			for (EObject stereotypeApplication : element
+				.getStereotypeApplications()) {
 
 				if (!element
 					.isStereotypeApplicable(getStereotype(stereotypeApplication))) {
@@ -1327,22 +1296,23 @@
 		return nonApplicableStereotypes;
 	}
 
-	public static EList unapplyAllNonApplicableStereotypes(Element element) {
+	public static EList<EObject> unapplyAllNonApplicableStereotypes(
+			Element element) {
 		return unapplyAllNonApplicableStereotypes(element, true);
 	}
 
-	public static EList unapplyAllNonApplicableStereotypes(Element element,
-			boolean resolve) {
-		EList nonApplicableStereotypes = new UniqueEList.FastCompare();
+	public static EList<EObject> unapplyAllNonApplicableStereotypes(
+			Element element, boolean resolve) {
+		EList<EObject> nonApplicableStereotypes = new UniqueEList.FastCompare<EObject>();
 
 		unapplyAllNonApplicableStereotypes(element, nonApplicableStereotypes);
 
 		if (!element.eContents().isEmpty()) {
 
-			for (Iterator allContents = EcoreUtil.getAllContents(element,
-				resolve); allContents.hasNext();) {
+			for (TreeIterator<EObject> allContents = EcoreUtil.getAllContents(
+				element, resolve); allContents.hasNext();) {
 
-				EObject eObject = (EObject) allContents.next();
+				EObject eObject = allContents.next();
 
 				if (eObject instanceof Element) {
 					unapplyAllNonApplicableStereotypes((Element) eObject,
@@ -1383,28 +1353,22 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getApplicableStereotypes(Element element) {
+	public static EList<Stereotype> getApplicableStereotypes(Element element) {
 		org.eclipse.uml2.uml.Package package_ = element.getNearestPackage();
 
 		if (package_ != null) {
-			EList applicableStereotypes = new UniqueEList.FastCompare();
+			EList<Stereotype> applicableStereotypes = new UniqueEList.FastCompare<Stereotype>();
 
-			for (Iterator allProfileApplications = package_
-				.getAllProfileApplications().iterator(); allProfileApplications
-				.hasNext();) {
+			for (ProfileApplication profileApplication : package_
+				.getAllProfileApplications()) {
 
-				ProfileApplication profileApplication = (ProfileApplication) allProfileApplications
-					.next();
 				Profile appliedProfile = profileApplication.getAppliedProfile();
 
 				if (appliedProfile != null) {
 
-					for (Iterator ownedStereotypes = appliedProfile
-						.getOwnedStereotypes().iterator(); ownedStereotypes
-						.hasNext();) {
+					for (Stereotype stereotype : appliedProfile
+						.getOwnedStereotypes()) {
 
-						Stereotype stereotype = (Stereotype) ownedStereotypes
-							.next();
 						ENamedElement appliedDefinition = profileApplication
 							.getAppliedDefinition(stereotype);
 
@@ -1421,7 +1385,7 @@
 			return ECollections.unmodifiableEList(applicableStereotypes);
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.emptyEList();
 	}
 
 	/**
@@ -1432,12 +1396,8 @@
 	public static Stereotype getApplicableStereotype(Element element,
 			String qualifiedName) {
 
-		for (Iterator applicableStereotypes = element
-			.getApplicableStereotypes().iterator(); applicableStereotypes
-			.hasNext();) {
-
-			Stereotype applicableStereotype = (Stereotype) applicableStereotypes
-				.next();
+		for (Stereotype applicableStereotype : element
+			.getApplicableStereotypes()) {
 
 			if (safeEquals(applicableStereotype.getQualifiedName(),
 				qualifiedName)) {
@@ -1484,20 +1444,20 @@
 			}
 		} else {
 
-			for (Iterator allContents = getAllContents(ancestorEObject, true,
-				false); allContents.hasNext();) {
+			for (TreeIterator<EObject> allContents = getAllContents(
+				ancestorEObject, true, false); allContents.hasNext();) {
 
-				Object object = allContents.next();
+				EObject eObject = allContents.next();
 
-				if (object instanceof Element) {
-					destroyAll(((Element) object).getStereotypeApplications());
+				if (eObject instanceof Element) {
+					destroyAll(((Element) eObject).getStereotypeApplications());
 				}
 			}
 
-			for (Iterator allContents = getAllContents(ancestorEObject, true,
-				false); allContents.hasNext();) {
+			for (TreeIterator<EObject> allContents = getAllContents(
+				ancestorEObject, true, false); allContents.hasNext();) {
 
-				EObject eObject = (EObject) allContents.next();
+				EObject eObject = allContents.next();
 
 				if (eObject instanceof Element) {
 					removeReferences(eObject, ancestorEObject);
@@ -1506,13 +1466,13 @@
 				}
 			}
 
-			for (Iterator allContents = getAllContents(ancestorEObject, true,
-				false); allContents.hasNext();) {
+			for (TreeIterator<EObject> allContents = getAllContents(
+				ancestorEObject, true, false); allContents.hasNext();) {
 
-				Object object = allContents.next();
+				EObject eObject = allContents.next();
 
-				if (object instanceof Element) {
-					((Element) object).eAdapters().clear();
+				if (eObject instanceof Element) {
+					eObject.eAdapters().clear();
 				}
 			}
 		}
@@ -1520,20 +1480,17 @@
 		EcoreUtil.remove(ancestorEObject);
 	}
 
-	protected static void destroyAll(Collection eObjects) {
+	protected static void destroyAll(Collection<EObject> eObjects) {
 
-		for (Iterator o = eObjects.iterator(); o.hasNext();) {
-			destroy((EObject) o.next());
+		for (Iterator<EObject> o = eObjects.iterator(); o.hasNext();) {
+			destroy(o.next());
 		}
 	}
 
-	protected static EList allOwnedElements(Element element,
-			EList allOwnedElements) {
+	protected static EList<Element> allOwnedElements(Element element,
+			EList<Element> allOwnedElements) {
 
-		for (Iterator ownedElements = element.getOwnedElements().iterator(); ownedElements
-			.hasNext();) {
-
-			Element ownedElement = (Element) ownedElements.next();
+		for (Element ownedElement : element.getOwnedElements()) {
 
 			if (allOwnedElements.add(ownedElement)) {
 				allOwnedElements(ownedElement, allOwnedElements);
@@ -1552,9 +1509,9 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allOwnedElements(Element element) {
+	public static EList<Element> allOwnedElements(Element element) {
 		return ECollections.unmodifiableEList(allOwnedElements(element,
-			new UniqueEList.FastCompare()));
+			new UniqueEList.FastCompare<Element>()));
 	}
 
 	/**
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExceptionHandlerOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExceptionHandlerOperations.java
index 3015ce5..b58de27 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExceptionHandlerOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExceptionHandlerOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExceptionHandlerOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ExceptionHandlerOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateExceptionBody(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 * @generated
 	 */
 	public static boolean validateResultPins(ExceptionHandler exceptionHandler,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -126,7 +126,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneInput(ExceptionHandler exceptionHandler,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -159,7 +159,7 @@
 	 */
 	public static boolean validateEdgeSourceTarget(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExecutionSpecificationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExecutionSpecificationOperations.java
index 5763d0a..9092879 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExecutionSpecificationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExecutionSpecificationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExecutionSpecificationOperations.java,v 1.5 2006/04/05 20:23:13 khussey Exp $
+ * $Id: ExecutionSpecificationOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -19,6 +19,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.uml2.uml.ExecutionSpecification;
+import org.eclipse.uml2.uml.Lifeline;
 import org.eclipse.uml2.uml.OccurrenceSpecification;
 import org.eclipse.uml2.uml.UMLPlugin;
 import org.eclipse.uml2.uml.util.UMLValidator;
@@ -60,15 +61,15 @@
 	 */
 	public static boolean validateSameLifeline(
 			ExecutionSpecification executionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		OccurrenceSpecification start = executionSpecification.getStart();
 
 		if (start != null) {
 			OccurrenceSpecification finish = executionSpecification.getFinish();
 
 			if (finish != null) {
-				EList startCovereds = start.getCovereds();
-				EList finishCovereds = finish.getCovereds();
+				EList<Lifeline> startCovereds = start.getCovereds();
+				EList<Lifeline> finishCovereds = finish.getCovereds();
 
 				if (!startCovereds.containsAll(finishCovereds)
 					|| !finishCovereds.containsAll(startCovereds)) {
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExpansionRegionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExpansionRegionOperations.java
index 0b45b45..5c81c3e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExpansionRegionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExpansionRegionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExpansionRegionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ExpansionRegionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateExpansionNodes(
 			ExpansionRegion expansionRegion, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtendOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtendOperations.java
index 8f8ee25..1f9ca3b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtendOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtendOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtendOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: ExtendOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateExtensionPoints(Extend extend,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionEndOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionEndOperations.java
index a96aed1..911cdf4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionEndOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionEndOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionEndOperations.java,v 1.12 2006/10/10 20:41:29 khussey Exp $
+ * $Id: ExtensionEndOperations.java,v 1.13 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 * @generated
 	 */
 	public static boolean validateMultiplicity(ExtensionEnd extensionEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 * @generated
 	 */
 	public static boolean validateAggregation(ExtensionEnd extensionEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionOperations.java
index c29008f..cba0ab6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionOperations.java,v 1.10 2006/02/02 19:23:40 khussey Exp $
+ * $Id: ExtensionOperations.java,v 1.11 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -21,7 +20,6 @@
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.uml2.uml.Extension;
-import org.eclipse.uml2.uml.ExtensionEnd;
 import org.eclipse.uml2.uml.Property;
 import org.eclipse.uml2.uml.Stereotype;
 import org.eclipse.uml2.uml.Type;
@@ -72,7 +70,7 @@
 	 * @generated
 	 */
 	public static boolean validateNonOwnedEnd(Extension extension,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -104,7 +102,7 @@
 	 * @generated
 	 */
 	public static boolean validateIsBinary(Extension extension,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -132,14 +130,10 @@
 	 * @generated NOT
 	 */
 	public static Property getStereotypeEnd(Extension extension) {
-
-		for (Iterator ownedEnds = extension.getOwnedEnds().iterator(); ownedEnds
-			.hasNext();) {
-
-			return (Property) ownedEnds.next();
-		}
-
-		return null;
+		EList<Property> ownedEnds = extension.getOwnedEnds();
+		return ownedEnds.size() > 0
+			? ownedEnds.get(0)
+			: null;
 	}
 
 	/**
@@ -171,12 +165,9 @@
 	 * @generated NOT
 	 */
 	public static Property metaclassEnd(Extension extension) {
-		EList ownedEnds = extension.getOwnedEnds();
+		EList<Property> ownedEnds = extension.getOwnedEnds();
 
-		for (Iterator memberEnds = extension.getMemberEnds().iterator(); memberEnds
-			.hasNext();) {
-
-			Property memberEnd = (Property) memberEnds.next();
+		for (Property memberEnd : extension.getMemberEnds()) {
 
 			if (!ownedEnds.contains(memberEnd)) {
 				return memberEnd;
@@ -220,9 +211,8 @@
 	 * @generated NOT
 	 */
 	public static boolean isRequired(Extension extension) {
-		EList ownedEnds = extension.getOwnedEnds();
-		return ownedEnds.size() > 0
-			&& ((ExtensionEnd) ownedEnds.get(0)).lowerBound() == 1;
+		EList<Property> ownedEnds = extension.getOwnedEnds();
+		return ownedEnds.size() > 0 && ownedEnds.get(0).lowerBound() == 1;
 	}
 
 } // ExtensionOperations
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionPointOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionPointOperations.java
index 655c09f..a5e8d71 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionPointOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ExtensionPointOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ExtensionPointOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ExtensionPointOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateMustHaveName(ExtensionPoint extensionPoint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalNodeOperations.java
index 37ce471..faba162 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalNodeOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: FinalNodeOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoOutgoingEdges(FinalNode finalNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalStateOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalStateOperations.java
index fb69d21..15b8a41 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalStateOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FinalStateOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FinalStateOperations.java,v 1.5 2006/02/23 17:20:47 khussey Exp $
+ * $Id: FinalStateOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoOutgoingTransitions(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoRegions(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -127,7 +127,8 @@
 	 * @generated
 	 */
 	public static boolean validateCannotReferenceSubmachine(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -159,7 +160,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoEntryBehavior(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -191,7 +192,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoExitBehavior(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -223,7 +224,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoStateBehavior(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ForkNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ForkNodeOperations.java
index 0436cc7..fc59166 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ForkNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ForkNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ForkNodeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ForkNodeOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneIncomingEdge(ForkNode forkNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateEdges(ForkNode forkNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FunctionBehaviorOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FunctionBehaviorOperations.java
index 89e1b61..14337b5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FunctionBehaviorOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/FunctionBehaviorOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: FunctionBehaviorOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: FunctionBehaviorOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateOneOutputParameter(
 			FunctionBehavior functionBehavior, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -99,7 +99,7 @@
 	 */
 	public static boolean validateTypesOfParameters(
 			FunctionBehavior functionBehavior, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GateOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GateOperations.java
index 295ca5c..1ed11e2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GateOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GateOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GateOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: GateOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateMessagesActualGate(Gate gate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateMessagesCombinedFragment(Gate gate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationOperations.java
index b8e28a7..c6d7779 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralizationOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: GeneralizationOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateGeneralizationSameClassifier(
 			Generalization generalization, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationSetOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationSetOperations.java
index 844e7b2..6128461 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationSetOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/GeneralizationSetOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: GeneralizationSetOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: GeneralizationSetOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateGeneralizationSameClassifier(
 			GeneralizationSet generalizationSet, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMapsToGeneralizationSet(
 			GeneralizationSet generalizationSet, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationFlowOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationFlowOperations.java
index 7aea88f..58c4bd3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationFlowOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationFlowOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationFlowOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: InformationFlowOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -70,7 +70,7 @@
 	 */
 	public static boolean validateSourcesAndTargetsKind(
 			InformationFlow informationFlow, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -102,7 +102,7 @@
 	 * @generated
 	 */
 	public static boolean validateMustConform(InformationFlow informationFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -137,7 +137,7 @@
 	 */
 	public static boolean validateConveyClassifiers(
 			InformationFlow informationFlow, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationItemOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationItemOperations.java
index d47c0c8..d4aaa2d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationItemOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InformationItemOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InformationItemOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: InformationItemOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -65,7 +65,7 @@
 	 */
 	public static boolean validateSourcesAndTargets(
 			InformationItem informationItem, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,7 +97,7 @@
 	 * @generated
 	 */
 	public static boolean validateHasNo(InformationItem informationItem,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -130,7 +130,7 @@
 	 */
 	public static boolean validateNotInstantiable(
 			InformationItem informationItem, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InitialNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InitialNodeOperations.java
index 6e7c50e..ab0fb31 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InitialNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InitialNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InitialNodeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: InitialNodeOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoIncomingEdges(InitialNode initialNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateControlEdges(InitialNode initialNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InputPinOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InputPinOperations.java
index 6613564..783f756 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InputPinOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InputPinOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InputPinOperations.java,v 1.1 2006/05/16 15:07:25 khussey Exp $
+ * $Id: InputPinOperations.java,v 1.2 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,8 @@
 	 * @generated
 	 */
 	public static boolean validateOutgoingEdgesStructuredOnly(
-			InputPin inputPin, DiagnosticChain diagnostics, Map context) {
+			InputPin inputPin, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InstanceSpecificationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InstanceSpecificationOperations.java
index 3756842..8ca96a2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InstanceSpecificationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InstanceSpecificationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InstanceSpecificationOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: InstanceSpecificationOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateDefiningFeature(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateStructuralFeature(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateDeploymentTarget(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -161,7 +161,7 @@
 	 */
 	public static boolean validateDeploymentArtifact(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionConstraintOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionConstraintOperations.java
index 242b5cd..72e20c1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionConstraintOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionConstraintOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionConstraintOperations.java,v 1.5 2006/01/05 22:43:26 khussey Exp $
+ * $Id: InteractionConstraintOperations.java,v 1.6 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -64,7 +64,7 @@
 	 */
 	public static boolean validateDynamicVariables(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,7 +97,7 @@
 	 */
 	public static boolean validateGlobalData(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -130,7 +130,7 @@
 	 */
 	public static boolean validateMinintMaxint(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -163,7 +163,7 @@
 	 */
 	public static boolean validateMinintNonNegative(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -196,7 +196,7 @@
 	 */
 	public static boolean validateMaxintPositive(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -229,7 +229,7 @@
 	 */
 	public static boolean validateMaxintGreaterEqualMinint(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionOperandOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionOperandOperations.java
index 5816829..599bd99 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionOperandOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionOperandOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionOperandOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: InteractionOperandOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateGuardDirectlyPrior(
 			InteractionOperand interactionOperand, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateGuardContainReferences(
 			InteractionOperand interactionOperand, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionUseOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionUseOperations.java
index 931662a..0ca37f6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionUseOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InteractionUseOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InteractionUseOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: InteractionUseOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 * @generated
 	 */
 	public static boolean validateGatesMatch(InteractionUse interactionUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 * @generated
 	 */
 	public static boolean validateAllLifelines(InteractionUse interactionUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -126,7 +126,7 @@
 	 */
 	public static boolean validateArgumentsCorrespondToParameters(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -159,7 +159,7 @@
 	 */
 	public static boolean validateArgumentsAreConstants(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterfaceOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterfaceOperations.java
index a3755c9..6cb5ce9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterfaceOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterfaceOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterfaceOperations.java,v 1.9 2006/04/05 19:26:35 khussey Exp $
+ * $Id: InterfaceOperations.java,v 1.10 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -68,12 +67,11 @@
 	 * @generated NOT
 	 */
 	public static boolean validateVisibility(Interface interface_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-		for (Iterator features = interface_.getFeatures().iterator(); features
-			.hasNext();) {
+		for (Feature feature : interface_.getFeatures()) {
 
-			if (((Feature) features.next()).getVisibility() != VisibilityKind.PUBLIC_LITERAL) {
+			if (feature.getVisibility() != VisibilityKind.PUBLIC_LITERAL) {
 
 				if (diagnostics != null) {
 					diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
@@ -97,8 +95,8 @@
 	 * @generated NOT
 	 */
 	public static Operation createOwnedOperation(Interface interface_,
-			String name, EList parameterNames, EList parameterTypes,
-			Type returnType) {
+			String name, EList<String> parameterNames,
+			EList<Type> parameterTypes, Type returnType) {
 		return TypeOperations.createOwnedOperation(interface_, name,
 			parameterNames, parameterTypes, returnType);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterruptibleActivityRegionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterruptibleActivityRegionOperations.java
index bb64f1c..4ceaa9e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterruptibleActivityRegionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InterruptibleActivityRegionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InterruptibleActivityRegionOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: InterruptibleActivityRegionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateInterruptingEdges(
 			InterruptibleActivityRegion interruptibleActivityRegion,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InvocationActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InvocationActionOperations.java
index 31e4305..5deeed9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InvocationActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/InvocationActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: InvocationActionOperations.java,v 1.5 2006/01/05 22:43:25 khussey Exp $
+ * $Id: InvocationActionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateOnPortReceiver(
 			InvocationAction invocationAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/JoinNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/JoinNodeOperations.java
index 81983c6..cbd123c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/JoinNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/JoinNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: JoinNodeOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: JoinNodeOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneOutgoingEdge(JoinNode joinNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 * @generated
 	 */
 	public static boolean validateIncomingObjectFlow(JoinNode joinNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LifelineOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LifelineOperations.java
index 209cd95..5f27bce 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LifelineOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LifelineOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LifelineOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: LifelineOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,8 @@
 	 * @generated
 	 */
 	public static boolean validateInteractionUsesShareLifeline(
-			Lifeline lifeline, DiagnosticChain diagnostics, Map context) {
+			Lifeline lifeline, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +95,7 @@
 	 * @generated
 	 */
 	public static boolean validateSelectorSpecified(Lifeline lifeline,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +129,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameClassifier(Lifeline lifeline,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkActionOperations.java
index 8183432..e7c3157 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkActionOperations.java,v 1.5 2006/01/05 22:43:25 khussey Exp $
+ * $Id: LinkActionOperations.java,v 1.6 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -65,7 +65,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameAssociation(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,7 +97,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotStatic(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -134,7 +134,7 @@
 	 * @generated
 	 */
 	public static boolean validateSamePins(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -166,10 +166,10 @@
 	 * @generated NOT
 	 */
 	public static Association association(LinkAction linkAction) {
-		EList endData = linkAction.getEndData();
+		EList<LinkEndData> endData = linkAction.getEndData();
 
 		if (endData.size() > 0) {
-			Property end = ((LinkEndData) endData.get(0)).getEnd();
+			Property end = endData.get(0).getEnd();
 
 			if (end != null) {
 				return end.getAssociation();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndCreationDataOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndCreationDataOperations.java
index 498ff71..ebe9c81 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndCreationDataOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndCreationDataOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndCreationDataOperations.java,v 1.2 2006/01/05 22:43:26 khussey Exp $
+ * $Id: LinkEndCreationDataOperations.java,v 1.3 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateCreateLinkAction(
 			LinkEndCreationData linkEndCreationData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -101,7 +101,7 @@
 	 */
 	public static boolean validateSingleInputPin(
 			LinkEndCreationData linkEndCreationData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDataOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDataOperations.java
index 7a26d2f..b815954 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDataOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDataOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndDataOperations.java,v 1.2 2006/01/05 22:43:24 khussey Exp $
+ * $Id: LinkEndDataOperations.java,v 1.3 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,8 @@
 	 * @generated
 	 */
 	public static boolean validatePropertyIsAssociationEnd(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +95,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameType(LinkEndData linkEndData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -126,7 +127,7 @@
 	 * @generated
 	 */
 	public static boolean validateMultiplicity(LinkEndData linkEndData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -158,7 +159,7 @@
 	 * @generated
 	 */
 	public static boolean validateQualifiers(LinkEndData linkEndData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -190,7 +191,7 @@
 	 * @generated
 	 */
 	public static boolean validateEndObjectInputPin(LinkEndData linkEndData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDestructionDataOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDestructionDataOperations.java
index 0347fca..86173a1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDestructionDataOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LinkEndDestructionDataOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LinkEndDestructionDataOperations.java,v 1.2 2006/01/05 22:43:24 khussey Exp $
+ * $Id: LinkEndDestructionDataOperations.java,v 1.3 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateDestroyLinkAction(
 			LinkEndDestructionData linkEndDestructionData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateUnlimitedNaturalAndMultiplicity(
 			LinkEndDestructionData linkEndDestructionData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LoopNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LoopNodeOperations.java
index b2f2047..2fd5538 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LoopNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/LoopNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: LoopNodeOperations.java,v 1.5 2006/01/05 22:43:26 khussey Exp $
+ * $Id: LoopNodeOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateInputEdges(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateBodyOutputPins(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,7 @@
 	 * @generated
 	 */
 	public static boolean validateResultNoIncoming(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MergeNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MergeNodeOperations.java
index 0e2bca9..0dfee25 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MergeNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MergeNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MergeNodeOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: MergeNodeOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneOutgoingEdge(MergeNode mergeNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateEdges(MergeNode mergeNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MessageOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MessageOperations.java
index d3b9a3d..beca061 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MessageOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MessageOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MessageOperations.java,v 1.9 2006/04/05 20:58:07 khussey Exp $
+ * $Id: MessageOperations.java,v 1.10 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -92,7 +92,7 @@
 	 * @generated
 	 */
 	public static boolean validateSendingReceivingMessageEvent(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +124,7 @@
 	 * @generated
 	 */
 	public static boolean validateSignatureReferTo(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -156,22 +156,23 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSignatureIsOperation(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 		NamedElement signature = message.getSignature();
 
 		if (signature instanceof Operation) {
-			EList arguments = message.getArguments();
+			EList<ValueSpecification> arguments = message.getArguments();
 
 			if (!arguments.isEmpty()) {
-				EList parameters = new UniqueEList.FastCompare(
+				EList<Parameter> parameters = new UniqueEList.FastCompare<Parameter>(
 					((Operation) signature).getOwnedParameters());
 
 				if (message.getMessageSort() == MessageSort.REPLY_LITERAL) {
 
-					for (Iterator p = parameters.iterator(); p.hasNext();) {
+					for (Iterator<Parameter> p = parameters.iterator(); p
+						.hasNext();) {
 
-						if (((Parameter) p.next()).getDirection() == ParameterDirectionKind.IN_LITERAL) {
+						if (p.next().getDirection() == ParameterDirectionKind.IN_LITERAL) {
 							p.remove();
 						}
 					}
@@ -180,13 +181,12 @@
 				if (arguments.size() != parameters.size()) {
 					result = false;
 				} else {
-					Iterator a = arguments.iterator();
-					Iterator p = parameters.iterator();
+					Iterator<ValueSpecification> a = arguments.iterator();
+					Iterator<Parameter> p = parameters.iterator();
 
 					while (a.hasNext() && p.hasNext()) {
-						Type argumentType = ((ValueSpecification) a.next())
-							.getType();
-						Type parameterType = ((Parameter) p.next()).getType();
+						Type argumentType = a.next().getType();
+						Type parameterType = p.next().getType();
 
 						if (argumentType == null
 							? parameterType != null
@@ -223,26 +223,26 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSignatureIsSignal(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 		NamedElement signature = message.getSignature();
 
 		if (signature instanceof Signal) {
-			EList arguments = message.getArguments();
+			EList<ValueSpecification> arguments = message.getArguments();
 
 			if (!arguments.isEmpty()) {
-				EList attributes = ((Signal) signature).getAttributes();
+				EList<Property> attributes = ((Signal) signature)
+					.getAttributes();
 
 				if (arguments.size() != attributes.size()) {
 					result = false;
 				} else {
-					Iterator ma = arguments.iterator();
-					Iterator sa = attributes.iterator();
+					Iterator<ValueSpecification> ma = arguments.iterator();
+					Iterator<Property> sa = attributes.iterator();
 
 					while (ma.hasNext() && sa.hasNext()) {
-						Type argumentType = ((ValueSpecification) ma.next())
-							.getType();
-						Type attributeType = ((Property) sa.next()).getType();
+						Type argumentType = ma.next().getType();
+						Type attributeType = sa.next().getType();
 
 						if (argumentType == null
 							? attributeType != null
@@ -284,7 +284,7 @@
 	 * @generated
 	 */
 	public static boolean validateArguments(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -316,7 +316,7 @@
 	 * @generated
 	 */
 	public static boolean validateCannotCrossBoundaries(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -348,7 +348,7 @@
 	 * @generated
 	 */
 	public static boolean validateOccurrenceSpecifications(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -420,13 +420,15 @@
 		if (messageEvent == null) {
 			return null;
 		} else {
-			return (NamedElement) new UMLSwitch() {
+			return (NamedElement) new UMLSwitch<Object>() {
 
+				@Override
 				public Object caseCallEvent(CallEvent callEvent) {
 					return callEvent.eGet(
 						UMLPackage.Literals.CALL_EVENT__OPERATION, false);
 				}
 
+				@Override
 				public Object caseReceiveOperationEvent(
 						ReceiveOperationEvent receiveOperationEvent) {
 					return receiveOperationEvent.eGet(
@@ -434,6 +436,7 @@
 						false);
 				}
 
+				@Override
 				public Object caseReceiveSignalEvent(
 						ReceiveSignalEvent receiveSignalEvent) {
 					return receiveSignalEvent
@@ -441,6 +444,7 @@
 							false);
 				}
 
+				@Override
 				public Object caseSendOperationEvent(
 						SendOperationEvent sendOperationEvent) {
 					return sendOperationEvent.eGet(
@@ -448,12 +452,14 @@
 						false);
 				}
 
+				@Override
 				public Object caseSendSignalEvent(
 						SendSignalEvent sendSignalEvent) {
 					return sendSignalEvent.eGet(
 						UMLPackage.Literals.SEND_SIGNAL_EVENT__SIGNAL, false);
 				}
 
+				@Override
 				public Object caseSignalEvent(SignalEvent signalEvent) {
 					return signalEvent.eGet(
 						UMLPackage.Literals.SIGNAL_EVENT__SIGNAL, false);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MultiplicityElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MultiplicityElementOperations.java
index d9aead5..8c31ff3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MultiplicityElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/MultiplicityElementOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: MultiplicityElementOperations.java,v 1.16 2006/10/10 20:41:29 khussey Exp $
+ * $Id: MultiplicityElementOperations.java,v 1.17 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -79,7 +79,7 @@
 	 */
 	public static boolean validateUpperGt0(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		int upperBound = multiplicityElement.upperBound();
@@ -114,7 +114,7 @@
 	 */
 	public static boolean validateLowerGe0(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		int lowerBound = multiplicityElement.lowerBound();
@@ -149,7 +149,7 @@
 	 */
 	public static boolean validateUpperGeLower(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		int upperBound = multiplicityElement.upperBound();
@@ -186,7 +186,7 @@
 	 */
 	public static boolean validateValueSpecificationNoSideEffects(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -219,7 +219,7 @@
 	 */
 	public static boolean validateValueSpecificationConstant(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamedElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamedElementOperations.java
index fa3b2e7..48afe4e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamedElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamedElementOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NamedElementOperations.java,v 1.19 2006/11/08 20:26:30 khussey Exp $
+ * $Id: NamedElementOperations.java,v 1.20 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -79,7 +78,7 @@
 	 * @generated
 	 */
 	public static boolean validateHasNoQualifiedName(NamedElement namedElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -112,7 +111,7 @@
 	 * @generated
 	 */
 	public static boolean validateHasQualifiedName(NamedElement namedElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -144,7 +143,8 @@
 	 * @generated NOT
 	 */
 	public static boolean validateVisibilityNeedsOwnership(
-			NamedElement namedElement, DiagnosticChain diagnostics, Map context) {
+			NamedElement namedElement, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		boolean result = true;
 
 		if (namedElement.getNamespace() == null
@@ -237,8 +237,8 @@
 		return getQualifiedName(namedElement, namedElement.separator());
 	}
 
-	protected static EList allNamespaces(NamedElement namedElement,
-			EList allNamespaces) {
+	protected static EList<Namespace> allNamespaces(NamedElement namedElement,
+			EList<Namespace> allNamespaces) {
 		Namespace namespace = namedElement.getNamespace();
 
 		if (namespace != null && allNamespaces.add(namespace)) {
@@ -260,9 +260,9 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allNamespaces(NamedElement namedElement) {
+	public static EList<Namespace> allNamespaces(NamedElement namedElement) {
 		return ECollections.unmodifiableEList(allNamespaces(namedElement,
-			new UniqueEList.FastCompare()));
+			new UniqueEList.FastCompare<Namespace>()));
 	}
 
 	/**
@@ -283,12 +283,11 @@
 		EClass nEClass = n.eClass();
 
 		if (nEClass.isSuperTypeOf(eClass) || eClass.isSuperTypeOf(nEClass)) {
-			EList namesOfN = ns.getNamesOfMember(n);
+			EList<String> namesOfN = ns.getNamesOfMember(n);
 
-			for (Iterator namesOfMember = ns.getNamesOfMember(namedElement)
-				.iterator(); namesOfMember.hasNext();) {
+			for (String nameOfNamedElement : ns.getNamesOfMember(namedElement)) {
 
-				if (namesOfN.contains(namesOfMember.next())) {
+				if (namesOfN.contains(nameOfNamedElement)) {
 					return false;
 				}
 			}
@@ -319,13 +318,14 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allOwningPackages(NamedElement namedElement) {
-		EList allOwningPackages = new UniqueEList.FastCompare();
+	public static EList<org.eclipse.uml2.uml.Package> allOwningPackages(
+			NamedElement namedElement) {
+		EList<org.eclipse.uml2.uml.Package> allOwningPackages = new UniqueEList.FastCompare<org.eclipse.uml2.uml.Package>();
 
 		while ((namedElement = (NamedElement) getOwningElement(namedElement,
 			UMLPackage.Literals.PACKAGE, true)) != null) {
 
-			allOwningPackages.add(namedElement);
+			allOwningPackages.add((org.eclipse.uml2.uml.Package) namedElement);
 		}
 
 		return ECollections.unmodifiableEList(allOwningPackages);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamespaceOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamespaceOperations.java
index 6862cf2..656ff37 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamespaceOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NamespaceOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NamespaceOperations.java,v 1.13 2006/04/24 22:15:46 khussey Exp $
+ * $Id: NamespaceOperations.java,v 1.14 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -82,7 +81,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateMembersDistinguishable(Namespace namespace,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (!namespace.membersAreDistinguishable()) {
@@ -155,14 +154,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getImportedElements(Namespace namespace) {
-		EList importedElements = new UniqueEList.FastCompare();
+	public static EList<PackageableElement> getImportedElements(
+			Namespace namespace) {
+		EList<PackageableElement> importedElements = new UniqueEList.FastCompare<PackageableElement>();
 
-		for (Iterator elementImports = namespace.getElementImports().iterator(); elementImports
-			.hasNext();) {
-
-			PackageableElement importedElement = ((ElementImport) elementImports
-				.next()).getImportedElement();
+		for (ElementImport elementImport : namespace.getElementImports()) {
+			PackageableElement importedElement = elementImport
+				.getImportedElement();
 
 			if (importedElement != null) {
 				importedElements.add(importedElement);
@@ -177,14 +175,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getImportedPackages(Namespace namespace) {
-		EList importedPackages = new UniqueEList.FastCompare();
+	public static EList<org.eclipse.uml2.uml.Package> getImportedPackages(
+			Namespace namespace) {
+		EList<org.eclipse.uml2.uml.Package> importedPackages = new UniqueEList.FastCompare<org.eclipse.uml2.uml.Package>();
 
-		for (Iterator packageImports = namespace.getPackageImports().iterator(); packageImports
-			.hasNext();) {
-
-			org.eclipse.uml2.uml.Package importedPackage = ((PackageImport) packageImports
-				.next()).getImportedPackage();
+		for (PackageImport packageImport : namespace.getPackageImports()) {
+			org.eclipse.uml2.uml.Package importedPackage = packageImport
+				.getImportedPackage();
 
 			if (importedPackage != null) {
 				importedPackages.add(importedPackage);
@@ -205,38 +202,37 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getImportedMembers(Namespace namespace) {
-		EList importedMembers = new UniqueEList.FastCompare();
+	public static EList<PackageableElement> getImportedMembers(
+			Namespace namespace) {
+		EList<PackageableElement> importedMembers = new UniqueEList.FastCompare<PackageableElement>();
 
-		for (Iterator elementImports = namespace.getElementImports().iterator(); elementImports
-			.hasNext();) {
-
-			PackageableElement importedElement = ((ElementImport) elementImports
-				.next()).getImportedElement();
+		for (ElementImport elementImport : namespace.getElementImports()) {
+			PackageableElement importedElement = elementImport
+				.getImportedElement();
 
 			if (importedElement != null) {
 				importedMembers.add(importedElement);
 			}
 		}
 
-		for (Iterator packageImports = namespace.getPackageImports().iterator(); packageImports
-			.hasNext();) {
-
-			org.eclipse.uml2.uml.Package importedPackage = ((PackageImport) packageImports
-				.next()).getImportedPackage();
+		for (PackageImport packageImport : namespace.getPackageImports()) {
+			org.eclipse.uml2.uml.Package importedPackage = packageImport
+				.getImportedPackage();
 
 			if (importedPackage != null) {
 				importedMembers.addAll(importedPackage.visibleMembers());
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) namespace,
+		return new UnionEObjectEList<PackageableElement>(
+			(InternalEObject) namespace,
 			UMLPackage.Literals.NAMESPACE__IMPORTED_MEMBER, importedMembers
 				.size(), importedMembers.toArray());
 	}
 
-	protected static EList getNamesOfMember(Namespace namespace,
-			NamedElement element, EList namespaces, EList namesOfMember) {
+	protected static EList<String> getNamesOfMember(Namespace namespace,
+			NamedElement element, EList<Namespace> namespaces,
+			EList<String> namesOfMember) {
 
 		if (!namespaces.contains(namespace)) {
 			namespaces.add(namespace);
@@ -248,13 +244,10 @@
 					namesOfMember.add(name);
 				}
 			} else {
-				EList elementImportNames = new UniqueEList();
+				EList<String> elementImportNames = new UniqueEList<String>();
 
-				for (Iterator elementImports = namespace.getElementImports()
-					.iterator(); elementImports.hasNext();) {
-
-					ElementImport elementImport = (ElementImport) elementImports
-						.next();
+				for (ElementImport elementImport : namespace
+					.getElementImports()) {
 
 					if (elementImport.getImportedElement() == element) {
 						String name = elementImport.getName();
@@ -267,12 +260,11 @@
 
 				if (elementImportNames.isEmpty()) {
 
-					for (Iterator packageImports = namespace
-						.getPackageImports().iterator(); packageImports
-						.hasNext();) {
+					for (PackageImport packageImport : namespace
+						.getPackageImports()) {
 
-						org.eclipse.uml2.uml.Package importedPackage = ((PackageImport) packageImports
-							.next()).getImportedPackage();
+						org.eclipse.uml2.uml.Package importedPackage = packageImport
+							.getImportedPackage();
 
 						if (importedPackage != null
 							&& importedPackage.visibleMembers().contains(
@@ -308,10 +300,11 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList getNamesOfMember(Namespace namespace,
+	public static EList<String> getNamesOfMember(Namespace namespace,
 			NamedElement element) {
 		return ECollections.unmodifiableEList(getNamesOfMember(namespace,
-			element, new UniqueEList.FastCompare(), new UniqueEList()));
+			element, new UniqueEList.FastCompare<Namespace>(),
+			new UniqueEList<String>()));
 	}
 
 	/**
@@ -326,15 +319,11 @@
 	 * @generated NOT
 	 */
 	public static boolean membersAreDistinguishable(Namespace namespace) {
-		EList namespaceMembers = namespace.getMembers();
+		EList<NamedElement> namespaceMembers = namespace.getMembers();
 
-		for (Iterator members = namespaceMembers.iterator(); members.hasNext();) {
-			NamedElement member = (NamedElement) members.next();
+		for (NamedElement member : namespaceMembers) {
 
-			for (Iterator otherMembers = namespaceMembers.iterator(); otherMembers
-				.hasNext();) {
-
-				NamedElement otherMember = (NamedElement) otherMembers.next();
+			for (NamedElement otherMember : namespaceMembers) {
 
 				if (member != otherMember
 					&& !member.isDistinguishableFrom(otherMember, namespace)) {
@@ -357,21 +346,18 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList importMembers(Namespace namespace, EList imps) {
-		EList importMembers = new UniqueEList.FastCompare();
+	public static EList<PackageableElement> importMembers(Namespace namespace,
+			EList<PackageableElement> imps) {
+		EList<PackageableElement> importMembers = new UniqueEList.FastCompare<PackageableElement>();
+		EList<NamedElement> ownedMembers = namespace.getOwnedMembers();
 
-		EList ownedMembers = namespace.getOwnedMembers();
+		excludeCollisionsLoop : for (PackageableElement excludeCollision : namespace
+			.excludeCollisions(imps)) {
 
-		excludeCollisionsLoop : for (Iterator excludeCollisions = namespace
-			.excludeCollisions(imps).iterator(); excludeCollisions.hasNext();) {
+			for (NamedElement ownedMember : ownedMembers) {
 
-			PackageableElement excludeCollision = (PackageableElement) excludeCollisions
-				.next();
-
-			for (Iterator om = ownedMembers.iterator(); om.hasNext();) {
-
-				if (!excludeCollision.isDistinguishableFrom(
-					(PackageableElement) om.next(), namespace)) {
+				if (!excludeCollision.isDistinguishableFrom(ownedMember,
+					namespace)) {
 
 					continue excludeCollisionsLoop;
 				}
@@ -392,14 +378,13 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList excludeCollisions(Namespace namespace, EList imps) {
-		EList excludeCollisions = new UniqueEList.FastCompare();
+	public static EList<PackageableElement> excludeCollisions(
+			Namespace namespace, EList<PackageableElement> imps) {
+		EList<PackageableElement> excludeCollisions = new UniqueEList.FastCompare<PackageableElement>();
 
-		imps1Loop : for (Iterator imps1 = imps.iterator(); imps1.hasNext();) {
-			PackageableElement imp1 = (PackageableElement) imps1.next();
+		imps1Loop : for (PackageableElement imp1 : imps) {
 
-			for (Iterator imps2 = imps.iterator(); imps2.hasNext();) {
-				PackageableElement imp2 = (PackageableElement) imps2.next();
+			for (PackageableElement imp2 : imps) {
 
 				if (imp1 != imp2
 					&& !imp1.isDistinguishableFrom(imp2, namespace)) {
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NodeOperations.java
index 98e21fb..7cd8550 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/NodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: NodeOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: NodeOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateInternalStructure(Node node,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectFlowOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectFlowOperations.java
index fcd7467..d231e18 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectFlowOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectFlowOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectFlowOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: ObjectFlowOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -65,7 +65,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoActions(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +98,7 @@
 	 * @generated
 	 */
 	public static boolean validateCompatibleTypes(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -130,7 +130,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameUpperBounds(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -162,7 +162,7 @@
 	 * @generated
 	 */
 	public static boolean validateTarget(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -194,7 +194,8 @@
 	 * @generated
 	 */
 	public static boolean validateTransformationBehaviour(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -226,7 +227,7 @@
 	 * @generated
 	 */
 	public static boolean validateSelectionBehaviour(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -258,7 +259,8 @@
 	 * @generated
 	 */
 	public static boolean validateInputAndOutputParameter(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -290,7 +292,8 @@
 	 * @generated
 	 */
 	public static boolean validateIsMulticastOrIsMultireceive(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectNodeOperations.java
index 60d15f2..9965fcf 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ObjectNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ObjectNodeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ObjectNodeOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 * @generated
 	 */
 	public static boolean validateObjectFlowEdges(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotUnique(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +125,7 @@
 	 * @generated
 	 */
 	public static boolean validateSelectionBehavior(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -157,7 +157,7 @@
 	 * @generated
 	 */
 	public static boolean validateInputOutputParameter(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OpaqueExpressionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OpaqueExpressionOperations.java
index 57c22cb..8c393be 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OpaqueExpressionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OpaqueExpressionOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OpaqueExpressionOperations.java,v 1.12 2006/04/05 13:50:03 khussey Exp $
+ * $Id: OpaqueExpressionOperations.java,v 1.13 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -73,7 +72,7 @@
 	 */
 	public static boolean validateLanguageBodySize(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -107,7 +106,7 @@
 	 */
 	public static boolean validateOnlyReturnResultParameters(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -141,7 +140,7 @@
 	 */
 	public static boolean validateOneReturnResultParameter(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -175,11 +174,10 @@
 	 */
 	public static int value(OpaqueExpression opaqueExpression) {
 
-		for (Iterator bodies = opaqueExpression.getBodies().iterator(); bodies
-			.hasNext();) {
+		for (String body : opaqueExpression.getBodies()) {
 
 			try {
-				return Integer.parseInt((String) bodies.next());
+				return Integer.parseInt(body);
 			} catch (NumberFormatException nfe) {
 				// ignore
 			}
@@ -199,11 +197,10 @@
 	 */
 	public static boolean isIntegral(OpaqueExpression opaqueExpression) {
 
-		for (Iterator bodies = opaqueExpression.getBodies().iterator(); bodies
-			.hasNext();) {
+		for (String body : opaqueExpression.getBodies()) {
 
 			try {
-				Integer.parseInt((String) bodies.next());
+				Integer.parseInt(body);
 				return true;
 			} catch (NumberFormatException nfe) {
 				// ignore
@@ -225,11 +222,10 @@
 	 */
 	public static boolean isPositive(OpaqueExpression opaqueExpression) {
 
-		for (Iterator bodies = opaqueExpression.getBodies().iterator(); bodies
-			.hasNext();) {
+		for (String body : opaqueExpression.getBodies()) {
 
 			try {
-				return Integer.parseInt((String) bodies.next()) > 0;
+				return Integer.parseInt(body) > 0;
 			} catch (NumberFormatException nfe) {
 				// ignore
 			}
@@ -250,11 +246,10 @@
 	 */
 	public static boolean isNonNegative(OpaqueExpression opaqueExpression) {
 
-		for (Iterator bodies = opaqueExpression.getBodies().iterator(); bodies
-			.hasNext();) {
+		for (String body : opaqueExpression.getBodies()) {
 
 			try {
-				return Integer.parseInt((String) bodies.next()) >= 0;
+				return Integer.parseInt(body) >= 0;
 			} catch (NumberFormatException nfe) {
 				// ignore
 			}
@@ -273,10 +268,7 @@
 
 		if (behavior != null) {
 
-			for (Iterator ownedParameters = behavior.getOwnedParameters()
-				.iterator(); ownedParameters.hasNext();) {
-
-				Parameter ownedParameter = (Parameter) ownedParameters.next();
+			for (Parameter ownedParameter : behavior.getOwnedParameters()) {
 
 				if (ownedParameter.getDirection() == ParameterDirectionKind.RETURN_LITERAL) {
 					return ownedParameter;
@@ -293,10 +285,10 @@
 	 * @generated NOT
 	 */
 	public static String stringValue(OpaqueExpression opaqueExpression) {
-		EList bodies = opaqueExpression.getBodies();
+		EList<String> bodies = opaqueExpression.getBodies();
 
 		return bodies.size() > 0
-			? (String) bodies.get(0)
+			? bodies.get(0)
 			: ValueSpecificationOperations.stringValue(opaqueExpression);
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OperationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OperationOperations.java
index 7c9583a..3a4ace4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OperationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OperationOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OperationOperations.java,v 1.12 2006/10/10 20:41:28 khussey Exp $
+ * $Id: OperationOperations.java,v 1.13 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -84,7 +83,7 @@
 	 * @generated
 	 */
 	public static boolean validateAtMostOneReturn(Operation operation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -116,7 +115,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateOnlyBodyForQuery(Operation operation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (operation.getBodyCondition() != null && !operation.isQuery()) {
@@ -235,13 +234,10 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList returnResult(Operation operation) {
-		EList returnResult = new UniqueEList.FastCompare();
+	public static EList<Parameter> returnResult(Operation operation) {
+		EList<Parameter> returnResult = new UniqueEList.FastCompare<Parameter>();
 
-		for (Iterator ownedParameters = operation.getOwnedParameters()
-			.iterator(); ownedParameters.hasNext();) {
-
-			Parameter ownedParameter = (Parameter) ownedParameters.next();
+		for (Parameter ownedParameter : operation.getOwnedParameters()) {
 
 			if (ownedParameter.getDirection() == ParameterDirectionKind.RETURN_LITERAL) {
 				returnResult.add(ownedParameter);
@@ -340,10 +336,7 @@
 	 */
 	public static Parameter getReturnResult(Operation operation) {
 
-		for (Iterator ownedParameters = operation.getOwnedParameters()
-			.iterator(); ownedParameters.hasNext();) {
-
-			Parameter ownedParameter = (Parameter) ownedParameters.next();
+		for (Parameter ownedParameter : operation.getOwnedParameters()) {
 
 			if (ownedParameter.getDirection() == ParameterDirectionKind.RETURN_LITERAL) {
 				return ownedParameter;
@@ -392,22 +385,21 @@
 
 			Operation op = (Operation) redefinee;
 
-			EList ownedParameters = operation.getOwnedParameters();
+			EList<Parameter> ownedParameters = operation.getOwnedParameters();
 			int ownedParametersSize = ownedParameters.size();
-			EList opOwnedParameters = op.getOwnedParameters();
+			EList<Parameter> opOwnedParameters = op.getOwnedParameters();
 
-			EList returnResult = operation.returnResult();
+			EList<Parameter> returnResult = operation.returnResult();
 			int returnResultSize = returnResult.size();
-			EList opReturnResult = op.returnResult();
+			EList<Parameter> opReturnResult = op.returnResult();
 
 			if (ownedParametersSize == opOwnedParameters.size()
 				&& returnResultSize == opReturnResult.size()) {
 
 				for (int i = 0; i < ownedParametersSize; i++) {
-					Type opOwnedParameterType = ((Parameter) opOwnedParameters
-						.get(i)).getType();
-					Type ownedParameterType = ((Parameter) ownedParameters
-						.get(i)).getType();
+					Type opOwnedParameterType = opOwnedParameters.get(i)
+						.getType();
+					Type ownedParameterType = ownedParameters.get(i).getType();
 
 					if (opOwnedParameterType == null
 						? ownedParameterType != null
@@ -418,10 +410,8 @@
 				}
 
 				for (int i = 0; i < returnResultSize; i++) {
-					Type opReturnResultType = ((Parameter) opReturnResult
-						.get(i)).getType();
-					Type returnResultType = ((Parameter) returnResult.get(i))
-						.getType();
+					Type opReturnResultType = opReturnResult.get(i).getType();
+					Type returnResultType = returnResult.get(i).getType();
 
 					if (opReturnResultType == null
 						? returnResultType != null
@@ -438,4 +428,4 @@
 		return false;
 	}
 
-} // OperationOperations
\ No newline at end of file
+} // OperationOperations
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OutputPinOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OutputPinOperations.java
index cfe1b45..8126d42 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OutputPinOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/OutputPinOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: OutputPinOperations.java,v 1.1 2006/05/16 15:07:25 khussey Exp $
+ * $Id: OutputPinOperations.java,v 1.2 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,8 @@
 	 * @generated
 	 */
 	public static boolean validateIncomingEdgesStructuredOnly(
-			OutputPin outputPin, DiagnosticChain diagnostics, Map context) {
+			OutputPin outputPin, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageImportOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageImportOperations.java
index f0b0c4a..15f2c10 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageImportOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageImportOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageImportOperations.java,v 1.5 2006/03/13 20:50:41 khussey Exp $
+ * $Id: PackageImportOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validatePublicOrPrivate(PackageImport packageImport,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		VisibilityKind visibility = packageImport.getVisibility();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
index bd137bb..962a770 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PackageOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PackageOperations.java,v 1.28 2006/10/10 20:41:29 khussey Exp $
+ * $Id: PackageOperations.java,v 1.29 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -20,6 +20,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.UniqueEList;
 
 import org.eclipse.emf.ecore.EAttribute;
@@ -49,6 +50,7 @@
 import org.eclipse.uml2.uml.Profile;
 import org.eclipse.uml2.uml.ProfileApplication;
 import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.UMLPlugin;
 import org.eclipse.uml2.uml.PackageImport;
@@ -95,6 +97,8 @@
 	protected static class StereotypeApplicationCopier
 			extends EcoreUtil.Copier {
 
+		private static final long serialVersionUID = 1L;
+
 		protected final Profile profile;
 
 		protected StereotypeApplicationCopier(Profile profile) {
@@ -103,6 +107,7 @@
 			this.profile = profile;
 		}
 
+		@Override
 		protected EObject createCopy(EObject eObject) {
 			Element baseElement = getBaseElement(eObject);
 			return baseElement == null
@@ -110,16 +115,19 @@
 				: applyStereotype(baseElement, getTarget(eObject.eClass()));
 		}
 
+		@Override
 		protected EClass getTarget(EClass eClass) {
 			return (EClass) profile.getDefinition(getNamedElement(eClass));
 		}
 
+		@Override
 		protected EStructuralFeature getTarget(
 				EStructuralFeature eStructuralFeature) {
 			return (EStructuralFeature) profile
 				.getDefinition(getNamedElement(eStructuralFeature));
 		}
 
+		@Override
 		protected void copyAttribute(EAttribute eAttribute, EObject eObject,
 				EObject copyEObject) {
 
@@ -148,10 +156,12 @@
 				.getEFactoryInstance();
 
 			if (targetEAttribute.isMany()) {
-				EList copyValues = (EList) copyEObject.eGet(targetEAttribute);
+				@SuppressWarnings("unchecked")
+				EList<Object> copyValues = (EList<Object>) copyEObject
+					.eGet(targetEAttribute);
 
 				if (eAttribute.isMany()) {
-					EList values = (EList) eObject.eGet(eAttribute);
+					EList<?> values = (EList<?>) eObject.eGet(eAttribute);
 
 					for (int i = 0, size = values.size(); i < size; i++) {
 						copyValues.add(i, targetEFactory.createFromString(
@@ -167,7 +177,7 @@
 				copyEObject.eSet(targetEAttribute, targetEFactory
 					.createFromString(targetEDataType, eFactory
 						.convertToString(eDataType, eAttribute.isMany()
-							? ((EList) eObject.eGet(eAttribute)).get(0)
+							? ((EList<?>) eObject.eGet(eAttribute)).get(0)
 							: eObject.eGet(eAttribute))));
 			}
 		}
@@ -178,29 +188,33 @@
 			EEnum targetEEnum = (EEnum) targetEAttribute.getEAttributeType();
 
 			if (targetEAttribute.isMany()) {
-				EList copyValues = (EList) copyEObject.eGet(targetEAttribute);
+				@SuppressWarnings("unchecked")
+				EList<EEnumLiteral> copyValues = (EList<EEnumLiteral>) copyEObject
+					.eGet(targetEAttribute);
 
 				if (eAttribute.isMany()) {
-					EList values = (EList) eObject.eGet(eAttribute);
+					@SuppressWarnings("unchecked")
+					EList<EEnumLiteral> values = (EList<EEnumLiteral>) eObject
+						.eGet(eAttribute);
 
 					for (int i = 0, size = values.size(); i < size; i++) {
-						copyValues.add(i, targetEEnum.getEEnumLiteral(
-							((EEnumLiteral) values.get(i)).getName())
-							.getInstance());
+						copyValues.add(i, targetEEnum.getEEnumLiteral(values
+							.get(i).getName()));
 					}
 				} else {
-					copyValues.add(targetEEnum.getEEnumLiteral(
-						((EEnumLiteral) eObject.eGet(eAttribute)).getName())
-						.getInstance());
+					copyValues.add(targetEEnum
+						.getEEnumLiteral(((EEnumLiteral) eObject
+							.eGet(eAttribute)).getName()));
 				}
 			} else {
 				copyEObject.eSet(targetEAttribute, targetEEnum.getEEnumLiteral(
 					((EEnumLiteral) (eAttribute.isMany()
-						? ((EList) eObject.eGet(eAttribute)).get(0)
+						? ((EList<?>) eObject.eGet(eAttribute)).get(0)
 						: eObject.eGet(eAttribute))).getName()).getInstance());
 			}
 		}
 
+		@Override
 		protected void copyContainment(EReference eReference, EObject eObject,
 				EObject copyEObject) {
 
@@ -211,11 +225,14 @@
 					EReference targetEReference = (EReference) getTarget(eReference);
 
 					if (targetEReference.isMany()) {
-						EList copyValues = (EList) copyEObject
+						@SuppressWarnings("unchecked")
+						EList<EObject> copyValues = (EList<EObject>) copyEObject
 							.eGet(targetEReference);
 
 						if (eReference.isMany()) {
-							copyValues.addAll(copyAll((EList) value));
+							@SuppressWarnings("unchecked")
+							EList<EObject> values = (EList<EObject>) value;
+							copyValues.addAll(copyAll(values));
 						} else if (value != null) {
 							copyValues.add(copy((EObject) value));
 						}
@@ -231,6 +248,7 @@
 			}
 		}
 
+		@Override
 		protected void copyReference(EReference eReference, EObject eObject,
 				EObject copyEObject) {
 
@@ -241,7 +259,8 @@
 					EReference targetEReference = (EReference) getTarget(eReference);
 
 					if (targetEReference.isMany()) {
-						InternalEList copyValues = (InternalEList) copyEObject
+						@SuppressWarnings("unchecked")
+						InternalEList<EObject> copyValues = (InternalEList<EObject>) copyEObject
 							.eGet(targetEReference);
 
 						if (eReference.isMany()) {
@@ -249,16 +268,19 @@
 								.getEOpposite();
 							int index = 0;
 
-							for (Iterator v = ((EList) value).iterator(); v
-								.hasNext();) {
+							@SuppressWarnings("unchecked")
+							Iterator<EObject> v = ((EList<EObject>) value)
+								.iterator();
 
+							while (v.hasNext()) {
 								value = v.next();
-								Object copyValue = get(value);
+								EObject copyValue = get(value);
 
 								if (copyValue == null) {
 
 									if (targetEOpposite == null) {
-										copyValues.addUnique(index++, value);
+										copyValues.addUnique(index++,
+											(EObject) value);
 									}
 								} else {
 
@@ -279,12 +301,12 @@
 								}
 							}
 						} else if (value != null) {
-							Object copyValue = get(value);
+							EObject copyValue = get(value);
 
 							if (copyValue == null) {
 
 								if (targetEReference.getEOpposite() == null) {
-									copyValues.addUnique(value);
+									copyValues.addUnique((EObject) value);
 								}
 							} else {
 								copyValues.addUnique(copyValue);
@@ -293,7 +315,9 @@
 					} else {
 
 						if (eReference.isMany()) {
-							value = ((EList) value).get(0);
+							@SuppressWarnings("unchecked")
+							EList<EObject> values = (EList<EObject>) value;
+							value = values.get(0);
 						}
 
 						Object copyValue = get(value);
@@ -334,13 +358,10 @@
 	 */
 	public static boolean validateElementsPublicOrPrivate(
 			org.eclipse.uml2.uml.Package package_, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = true;
 
-		for (Iterator ownedElements = package_.getOwnedElements().iterator(); ownedElements
-			.hasNext();) {
-
-			Element ownedElement = (Element) ownedElements.next();
+		for (Element ownedElement : package_.getOwnedElements()) {
 
 			if (ownedElement instanceof NamedElement) {
 				VisibilityKind visibility = ((NamedElement) ownedElement)
@@ -425,8 +446,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList applyProfile(org.eclipse.uml2.uml.Package package_,
-			Profile profile) {
+	public static EList<EObject> applyProfile(
+			org.eclipse.uml2.uml.Package package_, Profile profile) {
 
 		if (profile == null) {
 			throw new IllegalArgumentException(String.valueOf(profile));
@@ -442,29 +463,25 @@
 			package_.createProfileApplication().setAppliedProfile(profile);
 		}
 
-		EList stereotypeApplications = new UniqueEList.FastCompare();
+		EList<EObject> stereotypeApplications = new UniqueEList.FastCompare<EObject>();
 		StereotypeApplicationCopier copier = new StereotypeApplicationCopier(
 			profile);
 
-		for (Iterator allContents = getAllContents(package_, true, false); allContents
-			.hasNext();) {
+		for (TreeIterator<EObject> allContents = getAllContents(package_, true,
+			false); allContents.hasNext();) {
 
-			Object object = allContents.next();
+			EObject eObject = allContents.next();
 
-			if (object instanceof Element) {
-				Element element = (Element) object;
+			if (eObject instanceof Element) {
+				Element element = (Element) eObject;
 
 				if (element instanceof org.eclipse.uml2.uml.Package) {
 
-					for (Iterator profileApplications = ((org.eclipse.uml2.uml.Package) element)
-						.getProfileApplications().iterator(); profileApplications
-						.hasNext();) {
-
-						ProfileApplication profileApplication = (ProfileApplication) profileApplications
-							.next();
+					for (ProfileApplication profileApplication : ((org.eclipse.uml2.uml.Package) element)
+						.getProfileApplications()) {
 
 						if (profileApplication.getAppliedProfile() == profile) {
-							EList references = getEAnnotation(
+							EList<EObject> references = getEAnnotation(
 								profileApplication, UMLPackage.eNS_URI, true)
 								.getReferences();
 
@@ -477,10 +494,8 @@
 					}
 				}
 
-				for (Iterator sa = element.getStereotypeApplications()
-					.iterator(); sa.hasNext();) {
-
-					EObject stereotypeApplication = (EObject) sa.next();
+				for (EObject stereotypeApplication : element
+					.getStereotypeApplications()) {
 					Stereotype stereotype = getStereotype(stereotypeApplication);
 
 					if (stereotype != null
@@ -492,7 +507,8 @@
 								.eResource();
 
 							if (eResource != null) {
-								EList contents = eResource.getContents();
+								EList<EObject> contents = eResource
+									.getContents();
 
 								if (eResource == copy.eResource()) {
 									contents.move(contents
@@ -514,10 +530,8 @@
 
 		destroyAll(stereotypeApplications);
 
-		EList requiredExtensions = profile.getOwnedExtensions(true);
-
-		return requiredExtensions.isEmpty()
-			? ECollections.EMPTY_ELIST
+		return profile.getOwnedExtensions(true).isEmpty()
+			? ECollections.<EObject> emptyEList()
 			: applyAllRequiredStereotypes(package_);
 	}
 
@@ -526,27 +540,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList unapplyProfile(org.eclipse.uml2.uml.Package package_,
-			Profile profile) {
+	public static EList<EObject> unapplyProfile(
+			org.eclipse.uml2.uml.Package package_, Profile profile) {
 
 		if (profile == null || package_.getProfileApplication(profile) == null) {
 			throw new IllegalArgumentException(String.valueOf(profile));
 		}
 
-		EList profileApplications = new UniqueEList.FastCompare();
+		EList<ProfileApplication> profileApplications = new UniqueEList.FastCompare<ProfileApplication>();
 
-		for (Iterator allContents = getAllContents(package_, true, false); allContents
-			.hasNext();) {
+		for (TreeIterator<EObject> allContents = getAllContents(package_, true,
+			false); allContents.hasNext();) {
 
-			Object object = allContents.next();
+			EObject eObject = allContents.next();
 
-			if (object instanceof org.eclipse.uml2.uml.Package) {
+			if (eObject instanceof org.eclipse.uml2.uml.Package) {
 
-				for (Iterator pa = ((org.eclipse.uml2.uml.Package) object)
-					.getProfileApplications().iterator(); pa.hasNext();) {
-
-					ProfileApplication profileApplication = (ProfileApplication) pa
-						.next();
+				for (ProfileApplication profileApplication : ((org.eclipse.uml2.uml.Package) eObject)
+					.getProfileApplications()) {
 
 					if (profileApplication.getAppliedProfile() == profile) {
 						profileApplications.add(profileApplication);
@@ -558,18 +569,17 @@
 		destroyAll(profileApplications);
 
 		return package_.getAllAppliedProfiles().contains(profile)
-			? ECollections.EMPTY_ELIST
+			? ECollections.<EObject> emptyEList()
 			: unapplyAllNonApplicableStereotypes(package_);
 	}
 
-	protected static EList getAppliedProfiles(
-			org.eclipse.uml2.uml.Package package_, EList appliedProfiles) {
+	protected static EList<Profile> getAppliedProfiles(
+			org.eclipse.uml2.uml.Package package_,
+			EList<Profile> appliedProfiles) {
 
-		for (Iterator profileApplications = package_.getProfileApplications()
-			.iterator(); profileApplications.hasNext();) {
-
-			Profile appliedProfile = ((ProfileApplication) profileApplications
-				.next()).getAppliedProfile();
+		for (ProfileApplication profileApplication : package_
+			.getProfileApplications()) {
+			Profile appliedProfile = profileApplication.getAppliedProfile();
 
 			if (appliedProfile != null) {
 				appliedProfiles.add(appliedProfile);
@@ -584,8 +594,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAppliedProfiles(org.eclipse.uml2.uml.Package package_) {
-		return getAppliedProfiles(package_, new UniqueEList.FastCompare());
+	public static EList<Profile> getAppliedProfiles(
+			org.eclipse.uml2.uml.Package package_) {
+		return getAppliedProfiles(package_,
+			new UniqueEList.FastCompare<Profile>());
 	}
 
 	/**
@@ -596,11 +608,10 @@
 	public static Profile getAppliedProfile(
 			org.eclipse.uml2.uml.Package package_, String qualifiedName) {
 
-		for (Iterator profileApplications = package_.getProfileApplications()
-			.iterator(); profileApplications.hasNext();) {
+		for (ProfileApplication profileApplication : package_
+			.getProfileApplications()) {
 
-			Profile appliedProfile = ((ProfileApplication) profileApplications
-				.next()).getAppliedProfile();
+			Profile appliedProfile = profileApplication.getAppliedProfile();
 
 			if (appliedProfile != null
 				&& safeEquals(appliedProfile.getQualifiedName(), qualifiedName)) {
@@ -642,17 +653,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllProfileApplications(
+	public static EList<ProfileApplication> getAllProfileApplications(
 			org.eclipse.uml2.uml.Package package_) {
-		EList allProfileApplications = new UniqueEList.FastCompare(package_
-			.getProfileApplications());
+		EList<ProfileApplication> allProfileApplications = new UniqueEList.FastCompare<ProfileApplication>(
+			package_.getProfileApplications());
 
-		for (Iterator allOwningPackages = package_.allOwningPackages()
-			.iterator(); allOwningPackages.hasNext();) {
+		for (org.eclipse.uml2.uml.Package owningPackage : package_
+			.allOwningPackages()) {
 
-			allProfileApplications
-				.addAll(((org.eclipse.uml2.uml.Package) allOwningPackages
-					.next()).getProfileApplications());
+			allProfileApplications.addAll(owningPackage
+				.getProfileApplications());
 		}
 
 		return ECollections.unmodifiableEList(allProfileApplications);
@@ -666,11 +676,8 @@
 	public static ProfileApplication getProfileApplication(
 			org.eclipse.uml2.uml.Package package_, Profile profile) {
 
-		for (Iterator profileApplications = package_.getProfileApplications()
-			.iterator(); profileApplications.hasNext();) {
-
-			ProfileApplication profileApplication = (ProfileApplication) profileApplications
-				.next();
+		for (ProfileApplication profileApplication : package_
+			.getProfileApplications()) {
 
 			if (profileApplication.getAppliedProfile() == profile) {
 				return profileApplication;
@@ -732,28 +739,25 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllAppliedProfiles(
+	public static EList<Profile> getAllAppliedProfiles(
 			org.eclipse.uml2.uml.Package package_) {
-		EList allAppliedProfiles = getAppliedProfiles(package_,
-			new UniqueEList.FastCompare());
+		EList<Profile> allAppliedProfiles = getAppliedProfiles(package_,
+			new UniqueEList.FastCompare<Profile>());
 
-		for (Iterator allOwningPackages = package_.allOwningPackages()
-			.iterator(); allOwningPackages.hasNext();) {
+		for (org.eclipse.uml2.uml.Package owningPackage : package_
+			.allOwningPackages()) {
 
-			getAppliedProfiles((org.eclipse.uml2.uml.Package) allOwningPackages
-				.next(), allAppliedProfiles);
+			getAppliedProfiles(owningPackage, allAppliedProfiles);
 		}
 
 		return ECollections.unmodifiableEList(allAppliedProfiles);
 	}
 
-	protected static EList getAllImportedPackages(
-			org.eclipse.uml2.uml.Package package_, EList allImportedPackages) {
+	protected static EList<org.eclipse.uml2.uml.Package> getAllImportedPackages(
+			org.eclipse.uml2.uml.Package package_,
+			EList<org.eclipse.uml2.uml.Package> allImportedPackages) {
 
-		for (Iterator packageImports = package_.getPackageImports().iterator(); packageImports
-			.hasNext();) {
-
-			PackageImport packageImport = (PackageImport) packageImports.next();
+		for (PackageImport packageImport : package_.getPackageImports()) {
 
 			if (packageImport.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
 				org.eclipse.uml2.uml.Package importedPackage = packageImport
@@ -770,24 +774,20 @@
 		return allImportedPackages;
 	}
 
-	protected static EList visibleMembers(
-			org.eclipse.uml2.uml.Package package_, EList visibleMembers) {
+	protected static EList<PackageableElement> visibleMembers(
+			org.eclipse.uml2.uml.Package package_,
+			EList<PackageableElement> visibleMembers) {
 
-		for (Iterator ownedMembers = package_.getOwnedMembers().iterator(); ownedMembers
-			.hasNext();) {
+		for (NamedElement ownedMember : package_.getOwnedMembers()) {
 
-			PackageableElement ownedMember = (PackageableElement) ownedMembers
-				.next();
+			if (ownedMember instanceof PackageableElement
+				&& ownedMember.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
 
-			if (ownedMember.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
-				visibleMembers.add(ownedMember);
+				visibleMembers.add((PackageableElement) ownedMember);
 			}
 		}
 
-		for (Iterator elementImports = package_.getElementImports().iterator(); elementImports
-			.hasNext();) {
-
-			ElementImport elementImport = (ElementImport) elementImports.next();
+		for (ElementImport elementImport : package_.getElementImports()) {
 
 			if (elementImport.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
 				PackageableElement importedElement = elementImport
@@ -812,16 +812,16 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList visibleMembers(org.eclipse.uml2.uml.Package package_) {
-		EList visibleMembers = visibleMembers(package_,
-			new UniqueEList.FastCompare());
+	public static EList<PackageableElement> visibleMembers(
+			org.eclipse.uml2.uml.Package package_) {
+		EList<PackageableElement> visibleMembers = visibleMembers(package_,
+			new UniqueEList.FastCompare<PackageableElement>());
 
-		for (Iterator allImportedPackages = getAllImportedPackages(package_,
-			new UniqueEList.FastCompare()).iterator(); allImportedPackages
-			.hasNext();) {
+		for (org.eclipse.uml2.uml.Package importedPackage : getAllImportedPackages(
+			package_,
+			new UniqueEList.FastCompare<org.eclipse.uml2.uml.Package>())) {
 
-			visibleMembers((org.eclipse.uml2.uml.Package) allImportedPackages
-				.next(), visibleMembers);
+			visibleMembers(importedPackage, visibleMembers);
 		}
 
 		return ECollections.unmodifiableEList(visibleMembers);
@@ -846,20 +846,14 @@
 			return el.getVisibility() == VisibilityKind.PUBLIC_LITERAL;
 		}
 
-		for (Iterator elementImports = package_.getElementImports().iterator(); elementImports
-			.hasNext();) {
-
-			ElementImport elementImport = (ElementImport) elementImports.next();
+		for (ElementImport elementImport : package_.getElementImports()) {
 
 			if (safeEquals(elementImport.getImportedElement(), el)) {
 				return elementImport.getVisibility() == VisibilityKind.PUBLIC_LITERAL;
 			}
 		}
 
-		for (Iterator packageImports = package_.getPackageImports().iterator(); packageImports
-			.hasNext();) {
-
-			PackageImport packageImport = (PackageImport) packageImports.next();
+		for (PackageImport packageImport : package_.getPackageImports()) {
 
 			if (packageImport.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
 				org.eclipse.uml2.uml.Package importedPackage = packageImport
@@ -889,10 +883,7 @@
 	protected static boolean containsSpecializations(
 			org.eclipse.uml2.uml.Package package_, Classifier classifier) {
 
-		for (Iterator ownedTypes = package_.getOwnedTypes().iterator(); ownedTypes
-			.hasNext();) {
-
-			Object ownedType = ownedTypes.next();
+		for (Type ownedType : package_.getOwnedTypes()) {
 
 			if (ownedType instanceof Classifier
 				&& ((Classifier) ownedType).allParents().contains(classifier)) {
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterOperations.java
index 7ec71ce..7d582ba 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterOperations.java,v 1.17 2006/05/02 21:51:04 khussey Exp $
+ * $Id: ParameterOperations.java,v 1.18 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -79,7 +79,7 @@
 	 * @generated
 	 */
 	public static boolean validateConnectorEnd(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -111,7 +111,7 @@
 	 * @generated
 	 */
 	public static boolean validateStreamAndException(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -143,7 +143,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotException(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -175,7 +175,7 @@
 	 * @generated
 	 */
 	public static boolean validateReentrantBehaviors(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -207,7 +207,7 @@
 	 * @generated
 	 */
 	public static boolean validateInAndOut(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterSetOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterSetOperations.java
index c011c00..10bbf3b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterSetOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ParameterSetOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ParameterSetOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ParameterSetOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,8 @@
 	 * @generated
 	 */
 	public static boolean validateSameParameterizedEntity(
-			ParameterSet parameterSet, DiagnosticChain diagnostics, Map context) {
+			ParameterSet parameterSet, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +93,7 @@
 	 * @generated
 	 */
 	public static boolean validateInput(ParameterSet parameterSet,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +125,7 @@
 	 * @generated
 	 */
 	public static boolean validateTwoParameterSets(ParameterSet parameterSet,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PartDecompositionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PartDecompositionOperations.java
index bde5ed9..19f8da4 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PartDecompositionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PartDecompositionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PartDecompositionOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: PartDecompositionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validatePartsOfInternalStructures(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +98,7 @@
 	 * @generated
 	 */
 	public static boolean validateAssume(PartDecomposition partDecomposition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -133,7 +133,7 @@
 	 */
 	public static boolean validateCommutativityOfDecomposition(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PinOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PinOperations.java
index fdace47..a80c55f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PinOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PinOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PinOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: PinOperations.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateControlPins(Pin pin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PortOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PortOperations.java
index b3d6a46..d7ff0cd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PortOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PortOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PortOperations.java,v 1.12 2006/10/11 16:30:15 khussey Exp $
+ * $Id: PortOperations.java,v 1.13 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -76,7 +75,7 @@
 	 * @generated
 	 */
 	public static boolean validateRequiredInterfaces(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -108,7 +107,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validatePortAggregation(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (port.getAggregation() != AggregationKind.COMPOSITE_LITERAL) {
 
@@ -137,7 +136,7 @@
 	 * @generated
 	 */
 	public static boolean validatePortDestroyed(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -169,7 +168,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateDefaultValue(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (port.getType() instanceof Interface
 			&& port.getDefaultValue() != null) {
@@ -194,28 +193,26 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getProvideds(Port port) {
-		EList provideds = new UniqueEList.FastCompare();
-
+	public static EList<Interface> getProvideds(Port port) {
+		EList<Interface> provideds = new UniqueEList.FastCompare<Interface>();
 		Type type = (Type) port.eGet(UMLPackage.Literals.TYPED_ELEMENT__TYPE,
 			false);
 
 		if (type instanceof Interface) {
-			provideds.add(type);
+			provideds.add((Interface) type);
 		} else if (type instanceof Classifier) {
 			Classifier classifier = (Classifier) port.getType();
 			ComponentOperations.realizedInterfaces(null, classifier, false,
 				provideds);
 
-			for (Iterator allParents = classifier.allParents().iterator(); allParents
-				.hasNext();) {
+			for (Classifier parent : classifier.allParents()) {
 
-				ComponentOperations.realizedInterfaces(null,
-					(Classifier) allParents.next(), false, provideds);
+				ComponentOperations.realizedInterfaces(null, parent, false,
+					provideds);
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) port,
+		return new UnionEObjectEList<Interface>((InternalEObject) port,
 			UMLPackage.Literals.PORT__PROVIDED, provideds.size(), provideds
 				.toArray());
 	}
@@ -225,9 +222,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getRequireds(Port port) {
-		EList requireds = new UniqueEList.FastCompare();
-
+	public static EList<Interface> getRequireds(Port port) {
+		EList<Interface> requireds = new UniqueEList.FastCompare<Interface>();
 		Type type = (Type) port.eGet(UMLPackage.Literals.TYPED_ELEMENT__TYPE,
 			false);
 
@@ -236,15 +232,13 @@
 			ComponentOperations.usedInterfaces(null, classifier, false,
 				requireds);
 
-			for (Iterator allParents = classifier.allParents().iterator(); allParents
-				.hasNext();) {
-
-				ComponentOperations.usedInterfaces(null,
-					(Classifier) allParents.next(), false, requireds);
+			for (Classifier parent : classifier.allParents()) {
+				ComponentOperations.usedInterfaces(null, parent, false,
+					requireds);
 			}
 		}
 
-		return new UnionEObjectEList((InternalEObject) port,
+		return new UnionEObjectEList<Interface>((InternalEObject) port,
 			UMLPackage.Literals.PORT__REQUIRED, requireds.size(), requireds
 				.toArray());
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileApplicationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileApplicationOperations.java
index bb6472e..17cb8bc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileApplicationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileApplicationOperations.java
@@ -8,13 +8,14 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProfileApplicationOperations.java,v 1.5 2006/01/25 18:51:32 khussey Exp $
+ * $Id: ProfileApplicationOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 
 import org.eclipse.uml2.uml.NamedElement;
@@ -59,7 +60,7 @@
 			.getEAnnotation(UMLPackage.eNS_URI);
 
 		if (eAnnotation != null) {
-			EList references = eAnnotation.getReferences();
+			EList<EObject> references = eAnnotation.getReferences();
 
 			if (references.size() > 0) {
 				return (EPackage) references.get(0);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileOperations.java
index fe34f7e..e0fe2da 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProfileOperations.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProfileOperations.java,v 1.29 2006/10/10 20:41:29 khussey Exp $
+ * $Id: ProfileOperations.java,v 1.30 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -22,6 +21,7 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.UniqueEList;
 
 import org.eclipse.emf.ecore.EAnnotation;
@@ -100,24 +100,21 @@
 	 * @generated NOT
 	 */
 	public static boolean validateMetaclassReferenceNotSpecialized(
-			Profile profile, DiagnosticChain diagnostics, Map context) {
+			Profile profile, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		boolean result = true;
 
-		for (Iterator referencedMetaclasses = profile
-			.getReferencedMetaclasses().iterator(); result
-			&& referencedMetaclasses.hasNext();) {
+		for (org.eclipse.uml2.uml.Class referencedMetaclass : profile
+			.getReferencedMetaclasses()) {
 
-			org.eclipse.uml2.uml.Class referencedMetaclass = (org.eclipse.uml2.uml.Class) referencedMetaclasses
-				.next();
+			for (TreeIterator<EObject> allContents = getAllContents(profile,
+				true, false); allContents.hasNext();) {
 
-			for (Iterator allContents = getAllContents(profile, true, false); allContents
-				.hasNext();) {
+				EObject eObject = allContents.next();
 
-				Object object = allContents.next();
-
-				if (object instanceof org.eclipse.uml2.uml.Package
+				if (eObject instanceof org.eclipse.uml2.uml.Package
 					&& containsSpecializations(
-						(org.eclipse.uml2.uml.Package) object,
+						(org.eclipse.uml2.uml.Package) eObject,
 						referencedMetaclass)) {
 
 					result = false;
@@ -127,12 +124,9 @@
 
 			if (result) {
 
-				for (Iterator allParents = referencedMetaclass.allParents()
-					.iterator(); allParents.hasNext();) {
+				for (Classifier parent : referencedMetaclass.allParents()) {
 
-					if (EcoreUtil.isAncestor(profile, (Classifier) allParents
-						.next())) {
-
+					if (EcoreUtil.isAncestor(profile, parent)) {
 						result = false;
 						break;
 					}
@@ -164,16 +158,14 @@
 	 * @generated NOT
 	 */
 	public static boolean validateReferencesSameMetamodel(Profile profile,
-			DiagnosticChain diagnostics, Map context) {
-		EList metamodels = new UniqueEList.FastCompare(profile
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
+		EList<Model> metamodels = new UniqueEList.FastCompare<Model>(profile
 			.getReferencedMetamodels());
 
-		for (Iterator referencedMetaclasses = profile
-			.getReferencedMetaclasses().iterator(); referencedMetaclasses
-			.hasNext();) {
+		for (org.eclipse.uml2.uml.Class referencedMetaclass : profile
+			.getReferencedMetaclasses()) {
 
-			metamodels.add(((org.eclipse.uml2.uml.Class) referencedMetaclasses
-				.next()).getModel());
+			metamodels.add(referencedMetaclass.getModel());
 		}
 
 		if (metamodels.size() != 1) {
@@ -282,7 +274,7 @@
 	 * @generated NOT
 	 */
 	public static EPackage define(Profile profile) {
-		Map options = new HashMap();
+		Map<String, String> options = new HashMap<String, String>();
 
 		options.put(UML2EcoreConverter.OPTION__ECORE_TAGGED_VALUES,
 			OPTION__PROCESS);
@@ -291,9 +283,9 @@
 		options.put(UML2EcoreConverter.OPTION__DUPLICATE_FEATURE_INHERITANCE,
 			OPTION__PROCESS);
 
-		Collection ePackages = convertToEcore(profile, options);
+		Collection<EPackage> ePackages = convertToEcore(profile, options);
 		EPackage definition = ePackages.size() == 1
-			? (EPackage) ePackages.iterator().next()
+			? ePackages.iterator().next()
 			: null;
 
 		if (definition != null) {
@@ -313,7 +305,7 @@
 		EAnnotation eAnnotation = profile.getEAnnotation(UMLPackage.eNS_URI);
 
 		if (eAnnotation != null) {
-			EList contents = eAnnotation.getContents();
+			EList<EObject> contents = eAnnotation.getContents();
 
 			if (contents.size() > 0) {
 				return (EPackage) contents.get(0);
@@ -330,10 +322,9 @@
 
 			if (profileDefinition != null) {
 
-				for (Iterator eClassifiers = profileDefinition
-					.getEClassifiers().iterator(); eClassifiers.hasNext();) {
+				for (EClassifier eClassifier : profileDefinition
+					.getEClassifiers()) {
 
-					EClassifier eClassifier = (EClassifier) eClassifiers.next();
 					EAnnotation eAnnotation = eClassifier
 						.getEAnnotation(UMLPackage.eNS_URI);
 
@@ -385,17 +376,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getReferencedMetaclasses(Profile profile) {
-		EList referencedMetaclasses = new UniqueEList.FastCompare();
+	public static EList<org.eclipse.uml2.uml.Class> getReferencedMetaclasses(
+			Profile profile) {
+		EList<org.eclipse.uml2.uml.Class> referencedMetaclasses = new UniqueEList.FastCompare<org.eclipse.uml2.uml.Class>();
 
-		for (Iterator metaclassReferences = profile.getMetaclassReferences()
-			.iterator(); metaclassReferences.hasNext();) {
+		for (ElementImport metaclassReference : profile
+			.getMetaclassReferences()) {
 
-			PackageableElement importedElement = ((ElementImport) metaclassReferences
-				.next()).getImportedElement();
+			PackageableElement importedElement = metaclassReference
+				.getImportedElement();
 
 			if (importedElement != null) {
-				referencedMetaclasses.add(importedElement);
+				referencedMetaclasses
+					.add((org.eclipse.uml2.uml.Class) importedElement);
 			}
 		}
 
@@ -407,31 +400,28 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getReferencedMetamodels(Profile profile) {
-		EList referencedMetamodels = new UniqueEList.FastCompare();
+	public static EList<Model> getReferencedMetamodels(Profile profile) {
+		EList<Model> referencedMetamodels = new UniqueEList.FastCompare<Model>();
 
-		for (Iterator metamodelReferences = profile.getMetamodelReferences()
-			.iterator(); metamodelReferences.hasNext();) {
+		for (PackageImport metamodelReference : profile
+			.getMetamodelReferences()) {
 
-			org.eclipse.uml2.uml.Package importedPackage = ((PackageImport) metamodelReferences
-				.next()).getImportedPackage();
+			org.eclipse.uml2.uml.Package importedPackage = metamodelReference
+				.getImportedPackage();
 
 			if (importedPackage != null) {
-				referencedMetamodels.add(importedPackage);
+				referencedMetamodels.add((Model) importedPackage);
 			}
 		}
 
 		return ECollections.unmodifiableEList(referencedMetamodels);
 	}
 
-	protected static EList getOwnedExtensions(Profile profile,
-			boolean requiredOnly, EList ownedExtensions) {
+	protected static EList<Extension> getOwnedExtensions(Profile profile,
+			boolean requiredOnly, EList<Extension> ownedExtensions) {
 
-		for (Iterator extensions = EcoreUtil.getObjectsByType(
-			profile.getPackagedElements(), UMLPackage.Literals.EXTENSION)
-			.iterator(); extensions.hasNext();) {
-
-			Extension extension = (Extension) extensions.next();
+		for (Extension extension : EcoreUtil.<Extension> getObjectsByType(
+			profile.getPackagedElements(), UMLPackage.Literals.EXTENSION)) {
 
 			if (!requiredOnly || extension.isRequired()) {
 				ownedExtensions.add(extension);
@@ -446,9 +436,10 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getOwnedExtensions(Profile profile, boolean requiredOnly) {
+	public static EList<Extension> getOwnedExtensions(Profile profile,
+			boolean requiredOnly) {
 		return ECollections.unmodifiableEList(getOwnedExtensions(profile,
-			requiredOnly, new UniqueEList.FastCompare()));
+			requiredOnly, new UniqueEList.FastCompare<Extension>()));
 	}
 
 } // ProfileOperations
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PropertyOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PropertyOperations.java
index 13ee17e..c99e5d1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PropertyOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PropertyOperations.java
@@ -8,12 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PropertyOperations.java,v 1.34 2006/10/10 20:41:29 khussey Exp $
+ * $Id: PropertyOperations.java,v 1.35 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -113,7 +111,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateMultiplicityOfComposite(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		int upperBound = property.upperBound();
 
 		if (upperBound == LiteralUnlimitedNatural.UNLIMITED || upperBound > 1) {
@@ -151,23 +149,18 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSubsettingContextConforms(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
-		spLoop : for (Iterator sp = property.getSubsettedProperties()
-			.iterator(); sp.hasNext();) {
+		spLoop : for (Property subsettedProperty : property
+			.getSubsettedProperties()) {
 
-			Property subsettedProperty = (Property) sp.next();
+			for (Type subsettingContext : property.subsettingContext()) {
 
-			for (Iterator sc = property.subsettingContext().iterator(); sc
-				.hasNext();) {
+				for (Type spSubsettingContext : subsettedProperty
+					.subsettingContext()) {
 
-				Classifier subsettingContext = (Classifier) sc.next();
-
-				for (Iterator c = subsettedProperty.subsettingContext()
-					.iterator(); c.hasNext();) {
-
-					if (subsettingContext.conformsTo((Classifier) c.next())) {
+					if (subsettingContext.conformsTo(spSubsettingContext)) {
 						continue spLoop;
 					}
 				}
@@ -206,7 +199,7 @@
 	 * @generated
 	 */
 	public static boolean validateRedefinedPropertyInherited(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -241,16 +234,13 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSubsettingRules(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		Type type = property.getType();
 		int upperBound = property.upperBound();
 
-		for (Iterator subsettedProperties = property.getSubsettedProperties()
-			.iterator(); subsettedProperties.hasNext();) {
-
-			Property subsettedProperty = (Property) subsettedProperties.next();
+		for (Property subsettedProperty : property.getSubsettedProperties()) {
 			Type subsettedType = subsettedProperty.getType();
 			int subsettedUpperBound = subsettedProperty.upperBound();
 
@@ -289,7 +279,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateNavigableReadonly(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (property.isReadOnly() && property.getAssociation() != null
@@ -321,7 +311,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateDerivedUnionIsDerived(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (property.isDerivedUnion() && !property.isDerived()) {
@@ -351,7 +341,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateDerivedUnionIsReadOnly(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (property.isDerivedUnion() && !property.isReadOnly()) {
@@ -381,15 +371,12 @@
 	 * @generated NOT
 	 */
 	public static boolean validateSubsettedPropertyNames(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		String name = property.getName();
 
-		for (Iterator subsettedProperties = property.getSubsettedProperties()
-			.iterator(); subsettedProperties.hasNext();) {
-
-			Property subsettedProperty = (Property) subsettedProperties.next();
+		for (Property subsettedProperty : property.getSubsettedProperties()) {
 
 			if (safeEquals(name, subsettedProperty.getName())) {
 				result = false;
@@ -422,7 +409,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateDeploymentTarget(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = true;
 
 		if (!property.getDeployments().isEmpty()) {
@@ -459,7 +446,7 @@
 	 * @generated
 	 */
 	public static boolean validateBindingToAttribute(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -492,11 +479,8 @@
 	 */
 	public static boolean isAttribute(Property property, Property p) {
 
-		for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-			p).iterator(); nonNavigableInverseReferences.hasNext();) {
-
-			EObject eObject = ((EStructuralFeature.Setting) nonNavigableInverseReferences
-				.next()).getEObject();
+		for (EStructuralFeature.Setting nonNavigableInverseReference : getNonNavigableInverseReferences(p)) {
+			EObject eObject = nonNavigableInverseReference.getEObject();
 
 			if (eObject instanceof Classifier
 				&& ((Classifier) eObject).getAttributes().contains(p)) {
@@ -631,23 +615,20 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList subsettingContext(Property property) {
-		EList subsettingContext = new UniqueEList.FastCompare();
+	public static EList<Type> subsettingContext(Property property) {
+		EList<Type> subsettingContext = new UniqueEList.FastCompare<Type>();
 
 		Association association = property.getAssociation();
 
 		if (association == null) {
 			Namespace namespace = property.getNamespace();
 
-			if (namespace instanceof Classifier) {
-				subsettingContext.add(namespace);
+			if (namespace instanceof Type) {
+				subsettingContext.add((Type) namespace);
 			}
 		} else {
 
-			for (Iterator memberEnds = association.getMemberEnds().iterator(); memberEnds
-				.hasNext();) {
-
-				Property memberEnd = (Property) memberEnds.next();
+			for (Property memberEnd : association.getMemberEnds()) {
 
 				if (memberEnd != property) {
 					Type memberEndType = memberEnd.getType();
@@ -746,7 +727,7 @@
 			}
 		}
 
-		EList memberEnds = association.getMemberEnds();
+		EList<Property> memberEnds = association.getMemberEnds();
 
 		switch (memberEnds.size()) {
 			case 0 :
@@ -805,7 +786,8 @@
 				throw new IllegalStateException();
 			}
 
-			EList navigableOwnedEnds = association.getNavigableOwnedEnds();
+			EList<Property> navigableOwnedEnds = association
+				.getNavigableOwnedEnds();
 
 			if (isNavigable) {
 				navigableOwnedEnds.add(property);
@@ -825,13 +807,13 @@
 		Association association = property.getAssociation();
 
 		if (association != null) {
-			List memberEnds = association.getMemberEnds();
+			EList<Property> memberEnds = association.getMemberEnds();
 
 			if (memberEnds.size() == 2) {
 				int index = memberEnds.indexOf(property);
 
 				if (index != -1) {
-					return (Property) memberEnds.get(Math.abs(index - 1));
+					return memberEnds.get(Math.abs(index - 1));
 				}
 			}
 		}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolStateMachineOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolStateMachineOperations.java
index c623f07..6a93dee 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolStateMachineOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolStateMachineOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolStateMachineOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ProtocolStateMachineOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 */
 	public static boolean validateProtocolTransitions(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +98,7 @@
 	 */
 	public static boolean validateEntryExitDo(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -133,7 +133,7 @@
 	 */
 	public static boolean validateDeepOrShallowHistory(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -166,7 +166,7 @@
 	 */
 	public static boolean validatePortsConnected(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -199,7 +199,7 @@
 	 */
 	public static boolean validateClassifierContext(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolTransitionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolTransitionOperations.java
index 8961a5a..eb50afb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolTransitionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ProtocolTransitionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ProtocolTransitionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ProtocolTransitionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateBelongsToPsm(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateAssociatedActions(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -127,7 +127,7 @@
 	 */
 	public static boolean validateRefersToOperation(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PseudostateOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PseudostateOperations.java
index 92cc8a9..0b9fb82 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PseudostateOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/PseudostateOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: PseudostateOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: PseudostateOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -66,7 +66,7 @@
 	 * @generated
 	 */
 	public static boolean validateInitialVertex(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -100,7 +100,7 @@
 	 * @generated
 	 */
 	public static boolean validateHistoryVertices(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -134,7 +134,7 @@
 	 * @generated
 	 */
 	public static boolean validateJoinVertex(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -168,7 +168,7 @@
 	 * @generated
 	 */
 	public static boolean validateTransitionsIncoming(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -202,7 +202,7 @@
 	 * @generated
 	 */
 	public static boolean validateForkVertex(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -236,7 +236,7 @@
 	 * @generated
 	 */
 	public static boolean validateTransitionsOutgoing(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -270,7 +270,7 @@
 	 * @generated
 	 */
 	public static boolean validateJunctionVertex(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -304,7 +304,7 @@
 	 * @generated
 	 */
 	public static boolean validateChoiceVertex(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -337,7 +337,7 @@
 	 * @generated
 	 */
 	public static boolean validateOutgoingFromInitial(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/QualifierValueOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/QualifierValueOperations.java
index dffa924..88c4355 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/QualifierValueOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/QualifierValueOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: QualifierValueOperations.java,v 1.2 2006/01/05 22:43:24 khussey Exp $
+ * $Id: QualifierValueOperations.java,v 1.3 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateQualifierAttribute(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateTypeOfQualifier(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -127,7 +127,7 @@
 	 */
 	public static boolean validateMultiplicityOfQualifier(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadExtentActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadExtentActionOperations.java
index 5be3377..8c3e104 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadExtentActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadExtentActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadExtentActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ReadExtentActionOperations.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateTypeIsClassifier(
 			ReadExtentAction readExtentAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMultiplicityOfResult(
 			ReadExtentAction readExtentAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadIsClassifiedObjectActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadIsClassifiedObjectActionOperations.java
index acff97e..a8ecc64 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadIsClassifiedObjectActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadIsClassifiedObjectActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadIsClassifiedObjectActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ReadIsClassifiedObjectActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateMultiplicityOfInput(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateNoType(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -128,7 +128,7 @@
 	 */
 	public static boolean validateMultiplicityOfOutput(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -161,7 +161,7 @@
 	 */
 	public static boolean validateBooleanResult(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkActionOperations.java
index 1f64c4f..0dbe594 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkActionOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ReadLinkActionOperations.java,v 1.5 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 * @generated
 	 */
 	public static boolean validateOneOpenEnd(ReadLinkAction readLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +98,7 @@
 	 */
 	public static boolean validateTypeAndOrdering(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -133,7 +133,7 @@
 	 */
 	public static boolean validateCompatibleMultiplicity(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -168,7 +168,7 @@
 	 */
 	public static boolean validateNavigableOpenEnd(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -207,7 +207,7 @@
 	 * @generated
 	 */
 	public static boolean validateVisibility(ReadLinkAction readLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndActionOperations.java
index 63ce268..98d1c0c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ReadLinkObjectEndActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -65,7 +65,7 @@
 	 */
 	public static boolean validateProperty(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +98,7 @@
 	 */
 	public static boolean validateAssociationOfAssociation(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -131,7 +131,7 @@
 	 */
 	public static boolean validateEndsOfAssociation(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -164,7 +164,7 @@
 	 */
 	public static boolean validateTypeOfObject(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -197,7 +197,7 @@
 	 */
 	public static boolean validateMultiplicityOfObject(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -230,7 +230,7 @@
 	 */
 	public static boolean validateTypeOfResult(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -263,7 +263,7 @@
 	 */
 	public static boolean validateMultiplicityOfResult(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndQualifierActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndQualifierActionOperations.java
index 69401be..2855c78 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndQualifierActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadLinkObjectEndQualifierActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadLinkObjectEndQualifierActionOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ReadLinkObjectEndQualifierActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -66,7 +66,7 @@
 	 */
 	public static boolean validateQualifierAttribute(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -99,7 +99,7 @@
 	 */
 	public static boolean validateAssociationOfAssociation(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -132,7 +132,7 @@
 	 */
 	public static boolean validateEndsOfAssociation(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -165,7 +165,7 @@
 	 */
 	public static boolean validateTypeOfObject(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -198,7 +198,7 @@
 	 */
 	public static boolean validateMultiplicityOfQualifier(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -231,7 +231,7 @@
 	 */
 	public static boolean validateMultiplicityOfObject(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -264,7 +264,7 @@
 	 */
 	public static boolean validateSameType(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -297,7 +297,7 @@
 	 */
 	public static boolean validateMultiplicityOfResult(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadSelfActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadSelfActionOperations.java
index f0b0e50..01644c6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadSelfActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadSelfActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadSelfActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ReadSelfActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 * @generated
 	 */
 	public static boolean validateContained(ReadSelfAction readSelfAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotStatic(ReadSelfAction readSelfAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -125,7 +125,7 @@
 	 * @generated
 	 */
 	public static boolean validateType(ReadSelfAction readSelfAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -157,7 +157,7 @@
 	 * @generated
 	 */
 	public static boolean validateMultiplicity(ReadSelfAction readSelfAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadStructuralFeatureActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadStructuralFeatureActionOperations.java
index 13eb58e..7885616 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadStructuralFeatureActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadStructuralFeatureActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadStructuralFeatureActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ReadStructuralFeatureActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateTypeAndOrdering(
 			ReadStructuralFeatureAction readStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			ReadStructuralFeatureAction readStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadVariableActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadVariableActionOperations.java
index 6f2505e..b3f82f9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadVariableActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReadVariableActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReadVariableActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ReadVariableActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 */
 	public static boolean validateTypeAndOrdering(
 			ReadVariableAction readVariableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -95,7 +95,7 @@
 	 */
 	public static boolean validateCompatibleMultiplicity(
 			ReadVariableAction readVariableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReceptionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReceptionOperations.java
index fe172f4..9d1fc89 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReceptionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReceptionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReceptionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: ReceptionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateNotQuery(Reception reception,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReclassifyObjectActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReclassifyObjectActionOperations.java
index 90b2d65..cdf28f0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReclassifyObjectActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReclassifyObjectActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReclassifyObjectActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ReclassifyObjectActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -61,7 +61,7 @@
 	 */
 	public static boolean validateClassifierNotAbstract(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -94,7 +94,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -127,7 +127,7 @@
 	 */
 	public static boolean validateInputPin(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableElementOperations.java
index 26b29b2..ff80712 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableElementOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableElementOperations.java,v 1.8 2006/11/29 02:00:49 khussey Exp $
+ * $Id: RedefinableElementOperations.java,v 1.9 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -22,6 +22,7 @@
 import org.eclipse.emf.common.util.UniqueEList;
 
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.UMLPlugin;
 
@@ -67,14 +68,11 @@
 	 */
 	public static boolean validateRedefinitionContextValid(
 			RedefinableElement redefinableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = true;
 
-		for (Iterator redefinedElements = redefinableElement
-			.getRedefinedElements().iterator(); redefinedElements.hasNext();) {
-
-			RedefinableElement redefinedElement = (RedefinableElement) redefinedElements
-				.next();
+		for (RedefinableElement redefinedElement : redefinableElement
+			.getRedefinedElements()) {
 
 			if (!redefinableElement
 				.isRedefinitionContextValid(redefinedElement)) {
@@ -113,14 +111,11 @@
 	 */
 	public static boolean validateRedefinitionConsistent(
 			RedefinableElement redefinableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = true;
 
-		for (Iterator redefinedElements = redefinableElement
-			.getRedefinedElements().iterator(); redefinedElements.hasNext();) {
-
-			RedefinableElement redefinedElement = (RedefinableElement) redefinedElements
-				.next();
+		for (RedefinableElement redefinedElement : redefinableElement
+			.getRedefinedElements()) {
 
 			if (!redefinedElement.isConsistentWith(redefinableElement)) {
 				result = false;
@@ -158,24 +153,19 @@
 	public static boolean isRedefinitionContextValid(
 			RedefinableElement redefinableElement,
 			RedefinableElement redefinable) {
-		EList redefinableRedefinitionContexts = redefinable
+		EList<Classifier> rRedefinitionContexts = redefinable
 			.getRedefinitionContexts();
 
-		for (Iterator redefinitionContexts = redefinableElement
-			.getRedefinitionContexts().iterator(); redefinitionContexts
-			.hasNext();) {
+		for (Classifier reRedefinitionContext : redefinableElement
+			.getRedefinitionContexts()) {
 
-			EList redefinitionContextAllParents = ((Classifier) redefinitionContexts
-				.next()).allParents();
+			EList<Classifier> reRedefinitionContextAllParents = reRedefinitionContext
+				.allParents();
 
-			for (Iterator rrc = redefinableRedefinitionContexts.iterator(); rrc
-				.hasNext();) {
+			for (Classifier rRedefinitionContext : rRedefinitionContexts) {
 
-				Classifier redefinableRedefinitionContext = (Classifier) rrc
-					.next();
-
-				if (redefinitionContextAllParents
-					.contains(redefinableRedefinitionContext)) {
+				if (reRedefinitionContextAllParents
+					.contains(rRedefinitionContext)) {
 
 					return true;
 				}
@@ -202,43 +192,41 @@
 		return false;
 	}
 
-	protected static EList getAllRedefinedElements(
-			RedefinableElement redefinableElement, EList allRedefinedElements) {
+	protected static EList<RedefinableElement> getAllRedefinedElements(
+			RedefinableElement redefinableElement,
+			EList<RedefinableElement> allRedefinedElements) {
 
-		for (Iterator redefinedElements = redefinableElement
-			.getRedefinedElements().iterator(); redefinedElements.hasNext();) {
-
-			Object redefinedElement = redefinedElements.next();
+		for (RedefinableElement redefinedElement : redefinableElement
+			.getRedefinedElements()) {
 
 			if (allRedefinedElements.add(redefinedElement)) {
-				getAllRedefinedElements((RedefinableElement) redefinedElement,
-					allRedefinedElements);
+				getAllRedefinedElements(redefinedElement, allRedefinedElements);
 			}
 		}
 
 		return allRedefinedElements;
 	}
 
-	protected static EList getAllRedefinedElements(
+	protected static EList<RedefinableElement> getAllRedefinedElements(
 			RedefinableElement redefinableElement) {
 		return getAllRedefinedElements(redefinableElement,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<RedefinableElement>());
 	}
 
-	protected static EList excludeRedefinedElements(EList redefineableElements) {
-		EList allRedefinedElements = new UniqueEList.FastCompare();
+	protected static <E extends Element> EList<E> excludeRedefinedElements(
+			EList<E> redefineableElements) {
+		EList<RedefinableElement> allRedefinedElements = new UniqueEList.FastCompare<RedefinableElement>();
 
-		for (Iterator re = redefineableElements.iterator(); re.hasNext();) {
-			Object redefineableElement = re.next();
+		for (Element redefinableElement : redefineableElements) {
 
-			if (redefineableElement instanceof RedefinableElement) {
+			if (redefinableElement instanceof RedefinableElement) {
 				getAllRedefinedElements(
-					(RedefinableElement) redefineableElement,
+					(RedefinableElement) redefinableElement,
 					allRedefinedElements);
 			}
 		}
 
-		for (Iterator re = redefineableElements.iterator(); re.hasNext();) {
+		for (Iterator<?> re = redefineableElements.iterator(); re.hasNext();) {
 
 			if (allRedefinedElements.contains(re.next())) {
 				re.remove();
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableTemplateSignatureOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableTemplateSignatureOperations.java
index b595aaa..4a9f007 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableTemplateSignatureOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RedefinableTemplateSignatureOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RedefinableTemplateSignatureOperations.java,v 1.7 2006/01/27 04:55:56 khussey Exp $
+ * $Id: RedefinableTemplateSignatureOperations.java,v 1.8 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -27,6 +27,7 @@
 import org.eclipse.uml2.common.util.UnionEObjectEList;
 import org.eclipse.uml2.uml.RedefinableElement;
 import org.eclipse.uml2.uml.RedefinableTemplateSignature;
+import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.UMLPackage;
 
 import org.eclipse.uml2.uml.util.UMLValidator;
@@ -70,7 +71,7 @@
 	 */
 	public static boolean validateInheritedParameters(
 			RedefinableTemplateSignature redefinableTemplateSignature,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,19 +98,19 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getInheritedParameters(
+	public static EList<TemplateParameter> getInheritedParameters(
 			RedefinableTemplateSignature redefinableTemplateSignature) {
-		EList inheritedParameters = new UniqueEList.FastCompare();
+		EList<TemplateParameter> inheritedParameters = new UniqueEList.FastCompare<TemplateParameter>();
 
-		for (Iterator extendedSignatures = redefinableTemplateSignature
+		for (Iterator<RedefinableTemplateSignature> extendedSignatures = redefinableTemplateSignature
 			.getExtendedSignatures().iterator(); extendedSignatures.hasNext();) {
 
 			inheritedParameters
-				.addAll(((InternalEList) ((RedefinableTemplateSignature) extendedSignatures
+				.addAll(((InternalEList<TemplateParameter>) (extendedSignatures
 					.next()).getParameters()).basicList());
 		}
 
-		return new UnionEObjectEList(
+		return new UnionEObjectEList<TemplateParameter>(
 			(InternalEObject) redefinableTemplateSignature,
 			UMLPackage.Literals.REDEFINABLE_TEMPLATE_SIGNATURE__INHERITED_PARAMETER,
 			inheritedParameters.size(), inheritedParameters.toArray());
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReduceActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReduceActionOperations.java
index 3bc90f8..1ed408f 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReduceActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReduceActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReduceActionOperations.java,v 1.2 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ReduceActionOperations.java,v 1.3 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,8 @@
 	 * @generated
 	 */
 	public static boolean validateInputTypeIsCollection(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -92,7 +93,8 @@
 	 * @generated
 	 */
 	public static boolean validateOutputTypesAreCompatible(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -124,7 +126,8 @@
 	 * @generated
 	 */
 	public static boolean validateReducerInputsOutput(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RegionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RegionOperations.java
index bd95f9a..ec2d434 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RegionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RegionOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RegionOperations.java,v 1.9 2006/11/29 02:00:49 khussey Exp $
+ * $Id: RegionOperations.java,v 1.10 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -79,7 +78,7 @@
 	 * @generated
 	 */
 	public static boolean validateInitialVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -113,7 +112,7 @@
 	 * @generated
 	 */
 	public static boolean validateDeepHistoryVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -147,7 +146,7 @@
 	 * @generated
 	 */
 	public static boolean validateShallowHistoryVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -179,7 +178,7 @@
 	 * @generated
 	 */
 	public static boolean validateOwned(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -329,14 +328,9 @@
 
 		if (redefinee != null && redefinee.isRedefinitionContextValid(region)) {
 			Region redefineeRegion = (Region) redefinee;
+			EList<Vertex> allSubvertices = getAllSubvertices(region);
 
-			EList allSubvertices = getAllSubvertices(region);
-
-			for (Iterator redefineeSubvertices = redefineeRegion
-				.getSubvertices().iterator(); redefineeSubvertices.hasNext();) {
-
-				Vertex redefineeSubvertex = (Vertex) redefineeSubvertices
-					.next();
+			for (Vertex redefineeSubvertex : redefineeRegion.getSubvertices()) {
 
 				if (redefineeSubvertex instanceof State) {
 					State redefinedState = ((State) redefineeSubvertex)
@@ -350,13 +344,13 @@
 				}
 			}
 
-			EList allTransitions = getAllTransitions(region);
+			EList<Transition> allTransitions = getAllTransitions(region);
 
-			for (Iterator redefineeTransitions = redefineeRegion
-				.getTransitions().iterator(); redefineeTransitions.hasNext();) {
+			for (Transition redefineeTransition : redefineeRegion
+				.getTransitions()) {
 
-				Transition redefinedTransition = ((Transition) redefineeTransitions
-					.next()).getRedefinedTransition();
+				Transition redefinedTransition = redefineeTransition
+					.getRedefinedTransition();
 
 				if (redefinedTransition != null
 					&& !allTransitions.contains(redefinedTransition)) {
@@ -371,8 +365,8 @@
 		return false;
 	}
 
-	protected static EList getAllExtendedRegions(Region region,
-			EList allExtendedRegions) {
+	protected static EList<Region> getAllExtendedRegions(Region region,
+			EList<Region> allExtendedRegions) {
 		Region extendedRegion = region.getExtendedRegion();
 
 		if (extendedRegion != null && allExtendedRegions.add(extendedRegion)) {
@@ -382,34 +376,30 @@
 		return allExtendedRegions;
 	}
 
-	protected static EList getAllExtendedRegions(Region region) {
-		return getAllExtendedRegions(region, new UniqueEList.FastCompare());
+	protected static EList<Region> getAllExtendedRegions(Region region) {
+		return getAllExtendedRegions(region,
+			new UniqueEList.FastCompare<Region>());
 	}
 
-	protected static EList getAllSubvertices(Region region) {
-		EList allSubvertices = new UniqueEList.FastCompare(region
-			.getSubvertices());
+	protected static EList<Vertex> getAllSubvertices(Region region) {
+		EList<Vertex> allSubvertices = new UniqueEList.FastCompare<Vertex>(
+			region.getSubvertices());
 
-		for (Iterator allExtendedRegions = getAllExtendedRegions(region)
-			.iterator(); allExtendedRegions.hasNext();) {
-
-			allSubvertices.addAll(((Region) allExtendedRegions.next())
-				.getSubvertices());
+		for (Region extendedRegion : getAllExtendedRegions(region)) {
+			allSubvertices.addAll(extendedRegion.getSubvertices());
 		}
 
 		return RedefinableElementOperations
 			.excludeRedefinedElements(allSubvertices);
 	}
 
-	protected static EList getAllTransitions(Region region) {
-		EList allTransitions = new UniqueEList.FastCompare(region
-			.getTransitions());
+	protected static EList<Transition> getAllTransitions(Region region) {
+		EList<Transition> allTransitions = new UniqueEList.FastCompare<Transition>(
+			region.getTransitions());
 
-		for (Iterator allExtendedRegions = getAllExtendedRegions(region)
-			.iterator(); allExtendedRegions.hasNext();) {
+		for (Region extendedRegion : getAllExtendedRegions(region)) {
 
-			allTransitions.addAll(((Region) allExtendedRegions.next())
-				.getTransitions());
+			allTransitions.addAll(extendedRegion.getTransitions());
 		}
 
 		return RedefinableElementOperations
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveStructuralFeatureValueActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveStructuralFeatureValueActionOperations.java
index 1a02c87..0b5b5a0 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveStructuralFeatureValueActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveStructuralFeatureValueActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveStructuralFeatureValueActionOperations.java,v 1.5 2006/04/05 13:50:02 khussey Exp $
+ * $Id: RemoveStructuralFeatureValueActionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateNonUniqueRemoval(
 			RemoveStructuralFeatureValueAction removeStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveVariableValueActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveVariableValueActionOperations.java
index 785de2f..3f499b3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveVariableValueActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/RemoveVariableValueActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: RemoveVariableValueActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: RemoveVariableValueActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateUnlimitedNatural(
 			RemoveVariableValueAction removeVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReplyActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReplyActionOperations.java
index 6a51a69..5c26dbd 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReplyActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ReplyActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ReplyActionOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: ReplyActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validatePinsMatchParameter(ReplyAction replyAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,8 @@
 	 * @generated
 	 */
 	public static boolean validateEventOnReplyToCallTrigger(
-			ReplyAction replyAction, DiagnosticChain diagnostics, Map context) {
+			ReplyAction replyAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/SendSignalActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/SendSignalActionOperations.java
index dfed03e..d491732 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/SendSignalActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/SendSignalActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: SendSignalActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: SendSignalActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateNumberOrder(
 			SendSignalAction sendSignalAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateTypeOrderingMultiplicity(
 			SendSignalAction sendSignalAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StartClassifierBehaviorActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StartClassifierBehaviorActionOperations.java
index d674335..152d32a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StartClassifierBehaviorActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StartClassifierBehaviorActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StartClassifierBehaviorActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: StartClassifierBehaviorActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			StartClassifierBehaviorAction startClassifierBehaviorAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateTypeHasClassifier(
 			StartClassifierBehaviorAction startClassifierBehaviorAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateMachineOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateMachineOperations.java
index aaea147..a276b5e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateMachineOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateMachineOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateMachineOperations.java,v 1.11 2006/11/29 02:00:49 khussey Exp $
+ * $Id: StateMachineOperations.java,v 1.12 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -73,7 +72,7 @@
 	 * @generated
 	 */
 	public static boolean validateClassifierContext(StateMachine stateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -105,7 +104,7 @@
 	 * @generated
 	 */
 	public static boolean validateContextClassifier(StateMachine stateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -137,7 +136,7 @@
 	 * @generated
 	 */
 	public static boolean validateConnectionPoints(StateMachine stateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -169,7 +168,7 @@
 	 * @generated
 	 */
 	public static boolean validateMethod(StateMachine stateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -313,13 +312,9 @@
 			&& redefinee.isRedefinitionContextValid(stateMachine)) {
 
 			StateMachine redefineeStateMachine = (StateMachine) redefinee;
+			EList<Region> allRegions = getAllRegions(stateMachine);
 
-			EList allRegions = getAllRegions(stateMachine);
-
-			for (Iterator redefineeRegions = redefineeStateMachine.getRegions()
-				.iterator(); redefineeRegions.hasNext();) {
-
-				Region redefineeRegion = (Region) redefineeRegions.next();
+			for (Region redefineeRegion : redefineeStateMachine.getRegions()) {
 				Region extendedRegion = redefineeRegion.getExtendedRegion();
 
 				if (allRegions.contains(extendedRegion)
@@ -335,15 +330,12 @@
 		return false;
 	}
 
-	protected static EList getAllExtendedStateMachines(
-			StateMachine stateMachine, EList allExtendedStateMachines) {
+	protected static EList<StateMachine> getAllExtendedStateMachines(
+			StateMachine stateMachine,
+			EList<StateMachine> allExtendedStateMachines) {
 
-		for (Iterator extendedStateMachines = stateMachine
-			.getExtendedStateMachines().iterator(); extendedStateMachines
-			.hasNext();) {
-
-			StateMachine extendedStateMachine = (StateMachine) extendedStateMachines
-				.next();
+		for (StateMachine extendedStateMachine : stateMachine
+			.getExtendedStateMachines()) {
 
 			if (allExtendedStateMachines.add(extendedStateMachine)) {
 				getAllExtendedStateMachines(extendedStateMachine,
@@ -354,24 +346,22 @@
 		return allExtendedStateMachines;
 	}
 
-	protected static EList getAllExtendedStateMachines(StateMachine stateMachine) {
+	protected static EList<StateMachine> getAllExtendedStateMachines(
+			StateMachine stateMachine) {
 		return getAllExtendedStateMachines(stateMachine,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<StateMachine>());
 	}
 
-	protected static EList getAllRegions(StateMachine stateMachine) {
-		EList allRegions = new UniqueEList.FastCompare(stateMachine
-			.getRegions());
+	protected static EList<Region> getAllRegions(StateMachine stateMachine) {
+		EList<Region> allRegions = new UniqueEList.FastCompare<Region>(
+			stateMachine.getRegions());
 
-		for (Iterator allExtendedStateMachines = getAllExtendedStateMachines(
-			stateMachine).iterator(); allExtendedStateMachines.hasNext();) {
-
-			allRegions.addAll(((StateMachine) allExtendedStateMachines.next())
-				.getRegions());
+		for (StateMachine extendedStateMachine : getAllExtendedStateMachines(stateMachine)) {
+			allRegions.addAll(extendedStateMachine.getRegions());
 		}
 
 		return RedefinableElementOperations
 			.excludeRedefinedElements(allRegions);
 	}
 
-} // StateMachineOperations
\ No newline at end of file
+} // StateMachineOperations
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateOperations.java
index f24f97f..74dc522 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StateOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StateOperations.java,v 1.8 2006/11/29 02:00:49 khussey Exp $
+ * $Id: StateOperations.java,v 1.9 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -78,7 +77,7 @@
 	 * @generated
 	 */
 	public static boolean validateSubmachineStates(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -112,7 +111,8 @@
 	 * @generated
 	 */
 	public static boolean validateDestinationsOrSourcesOfTransitions(
-			State state, DiagnosticChain diagnostics, Map context) {
+			State state, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -144,7 +144,7 @@
 	 * @generated
 	 */
 	public static boolean validateSubmachineOrRegions(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -176,7 +176,7 @@
 	 * @generated
 	 */
 	public static boolean validateCompositeStates(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -208,7 +208,7 @@
 	 * @generated
 	 */
 	public static boolean validateEntryOrExit(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -348,12 +348,9 @@
 		if (redefinee != null && redefinee.isRedefinitionContextValid(state)) {
 			State redefineeState = (State) redefinee;
 
-			EList allRegions = getAllRegions(state);
+			EList<Region> allRegions = getAllRegions(state);
 
-			for (Iterator redefineeRegions = redefineeState.getRegions()
-				.iterator(); redefineeRegions.hasNext();) {
-
-				Region redefineeRegion = (Region) redefineeRegions.next();
+			for (Region redefineeRegion : redefineeState.getRegions()) {
 				Region extendedRegion = redefineeRegion.getExtendedRegion();
 
 				if (allRegions.contains(extendedRegion)
@@ -386,8 +383,8 @@
 			: container.containingStateMachine();
 	}
 
-	protected static EList getAllRedefinedStates(State state,
-			EList allRedefinedStates) {
+	protected static EList<State> getAllRedefinedStates(State state,
+			EList<State> allRedefinedStates) {
 		State redefinedState = state.getRedefinedState();
 
 		if (redefinedState != null && allRedefinedStates.add(redefinedState)) {
@@ -397,17 +394,17 @@
 		return allRedefinedStates;
 	}
 
-	protected static EList getAllRedefinedStates(State state) {
-		return getAllRedefinedStates(state, new UniqueEList.FastCompare());
+	protected static EList<State> getAllRedefinedStates(State state) {
+		return getAllRedefinedStates(state,
+			new UniqueEList.FastCompare<State>());
 	}
 
-	protected static EList getAllRegions(State state) {
-		EList allRegions = new UniqueEList.FastCompare(state.getRegions());
+	protected static EList<Region> getAllRegions(State state) {
+		EList<Region> allRegions = new UniqueEList.FastCompare<Region>(state
+			.getRegions());
 
-		for (Iterator allRedefinedStates = getAllRedefinedStates(state)
-			.iterator(); allRedefinedStates.hasNext();) {
-
-			allRegions.addAll(((State) allRedefinedStates).getRegions());
+		for (State redefinedState : getAllRedefinedStates(state)) {
+			allRegions.addAll(redefinedState.getRegions());
 		}
 
 		return RedefinableElementOperations
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StereotypeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StereotypeOperations.java
index 6336ad8..77b47e6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StereotypeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StereotypeOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StereotypeOperations.java,v 1.13 2006/05/02 14:55:08 khussey Exp $
+ * $Id: StereotypeOperations.java,v 1.14 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -26,6 +25,7 @@
 import org.eclipse.emf.ecore.EClass;
 
 import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Extension;
 import org.eclipse.uml2.uml.Image;
 import org.eclipse.uml2.uml.ExtensionEnd;
@@ -83,7 +83,7 @@
 	 * @generated
 	 */
 	public static boolean validateNameNotClash(Stereotype stereotype,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -115,7 +115,7 @@
 	 * @generated
 	 */
 	public static boolean validateGeneralize(Stereotype stereotype,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -232,19 +232,17 @@
 		return keyword;
 	}
 
-	protected static EList getExtendedMetaclasses(Stereotype stereotype,
-			EList extendedMetaclasses) {
+	protected static EList<org.eclipse.uml2.uml.Class> getExtendedMetaclasses(
+			Stereotype stereotype,
+			EList<org.eclipse.uml2.uml.Class> extendedMetaclasses) {
 
-		for (Iterator ownedAttributes = stereotype.getOwnedAttributes()
-			.iterator(); ownedAttributes.hasNext();) {
+		for (Property ownedAttribute : stereotype.getOwnedAttributes()) {
 
-			Property property = (Property) ownedAttributes.next();
-
-			if (property.getAssociation() instanceof Extension) {
-				Type type = property.getType();
+			if (ownedAttribute.getAssociation() instanceof Extension) {
+				Type type = ownedAttribute.getType();
 
 				if (type instanceof org.eclipse.uml2.uml.Class) {
-					extendedMetaclasses.add(type);
+					extendedMetaclasses.add((org.eclipse.uml2.uml.Class) type);
 				}
 			}
 		}
@@ -257,9 +255,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getExtendedMetaclasses(Stereotype stereotype) {
+	public static EList<org.eclipse.uml2.uml.Class> getExtendedMetaclasses(
+			Stereotype stereotype) {
 		return ECollections.unmodifiableEList(getExtendedMetaclasses(
-			stereotype, new UniqueEList.FastCompare()));
+			stereotype,
+			new UniqueEList.FastCompare<org.eclipse.uml2.uml.Class>()));
 	}
 
 	/**
@@ -267,14 +267,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAllExtendedMetaclasses(Stereotype stereotype) {
-		EList allExtendedMetaclasses = getExtendedMetaclasses(stereotype,
-			new UniqueEList.FastCompare());
+	public static EList<org.eclipse.uml2.uml.Class> getAllExtendedMetaclasses(
+			Stereotype stereotype) {
+		EList<org.eclipse.uml2.uml.Class> allExtendedMetaclasses = getExtendedMetaclasses(
+			stereotype,
+			new UniqueEList.FastCompare<org.eclipse.uml2.uml.Class>());
 
-		for (Iterator allParents = stereotype.allParents().iterator(); allParents
-			.hasNext();) {
-
-			Object parent = allParents.next();
+		for (Classifier parent : stereotype.allParents()) {
 
 			if (parent instanceof Stereotype) {
 				getExtendedMetaclasses((Stereotype) parent,
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StringExpressionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StringExpressionOperations.java
index a979363..e2c6ffc 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StringExpressionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StringExpressionOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StringExpressionOperations.java,v 1.5 2006/01/05 22:43:26 khussey Exp $
+ * $Id: StringExpressionOperations.java,v 1.6 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -63,7 +62,7 @@
 	 * @generated
 	 */
 	public static boolean validateOperands(StringExpression stringExpression,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -98,7 +97,7 @@
 	 */
 	public static boolean validateSubexpressions(
 			StringExpression stringExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -122,20 +121,18 @@
 
 	protected static StringBuffer stringValue(
 			StringExpression stringExpression, StringBuffer stringValue) {
-		EList subExpressions = stringExpression.getSubExpressions();
+		EList<StringExpression> subExpressions = stringExpression
+			.getSubExpressions();
 
 		if (!subExpressions.isEmpty()) {
 
-			for (Iterator se = subExpressions.iterator(); se.hasNext();) {
-				stringValue((StringExpression) se.next(), stringValue);
+			for (StringExpression subExpression : subExpressions) {
+				stringValue(subExpression, stringValue);
 			}
 		} else {
 
-			for (Iterator op = stringExpression.getOperands().iterator(); op
-				.hasNext();) {
-
-				stringValue.append(((ValueSpecification) op.next())
-					.stringValue());
+			for (ValueSpecification operand : stringExpression.getOperands()) {
+				stringValue.append(operand.stringValue());
 			}
 		}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuralFeatureActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuralFeatureActionOperations.java
index 61982be..871d1b8 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuralFeatureActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuralFeatureActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuralFeatureActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: StructuralFeatureActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 */
 	public static boolean validateNotStatic(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -96,7 +96,7 @@
 	 */
 	public static boolean validateSameType(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -129,7 +129,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -167,7 +167,7 @@
 	 */
 	public static boolean validateVisibility(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -200,7 +200,7 @@
 	 */
 	public static boolean validateOneFeaturingClassifier(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredActivityNodeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredActivityNodeOperations.java
index ef5f302..c9978a1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredActivityNodeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredActivityNodeOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredActivityNodeOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: StructuredActivityNodeOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateEdges(
 			StructuredActivityNode structuredActivityNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredClassifierOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredClassifierOperations.java
index d13a21f..9888934 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredClassifierOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/StructuredClassifierOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: StructuredClassifierOperations.java,v 1.6 2006/01/05 22:43:24 khussey Exp $
+ * $Id: StructuredClassifierOperations.java,v 1.7 2006/12/14 15:49:24 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -63,7 +63,7 @@
 	 */
 	public static boolean validateMultiplicities(
 			StructuredClassifier structuredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateBindingOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateBindingOperations.java
index b0fbd84..31fcc6e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateBindingOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateBindingOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateBindingOperations.java,v 1.5 2006/01/05 22:43:25 khussey Exp $
+ * $Id: TemplateBindingOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateParameterSubstitutionFormal(
 			TemplateBinding templateBinding, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateOneParameterSubstitution(
 			TemplateBinding templateBinding, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterOperations.java
index a889e6b..6cef5ff 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameterOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: TemplateParameterOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateMustBeCompatible(
 			TemplateParameter templateParameter, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterSubstitutionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterSubstitutionOperations.java
index 34e6d39..8202d3e 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterSubstitutionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateParameterSubstitutionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: TemplateParameterSubstitutionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateMustBeCompatible(
 			TemplateParameterSubstitution templateParameterSubstitution,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateSignatureOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateSignatureOperations.java
index d4f03fb..4b44125 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateSignatureOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateSignatureOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateSignatureOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: TemplateSignatureOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateOwnElements(
 			TemplateSignature templateSignature, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateableElementOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateableElementOperations.java
index 55a4434..6bba690 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateableElementOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TemplateableElementOperations.java
@@ -8,15 +8,15 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TemplateableElementOperations.java,v 1.6 2006/01/27 04:55:56 khussey Exp $
+ * $Id: TemplateableElementOperations.java,v 1.7 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 
-import java.util.Iterator;
 import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.ParameterableElement;
 import org.eclipse.uml2.uml.TemplateableElement;
 
@@ -56,17 +56,14 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList parameterableElements(
+	public static EList<ParameterableElement> parameterableElements(
 			TemplateableElement templateableElement) {
-		EList parameterableElements = new UniqueEList.FastCompare();
+		EList<ParameterableElement> parameterableElements = new UniqueEList.FastCompare<ParameterableElement>();
 
-		for (Iterator allOwnedElements = templateableElement.allOwnedElements()
-			.iterator(); allOwnedElements.hasNext();) {
-
-			Object ownedElement = allOwnedElements.next();
+		for (Element ownedElement : templateableElement.allOwnedElements()) {
 
 			if (ownedElement instanceof ParameterableElement) {
-				parameterableElements.add(ownedElement);
+				parameterableElements.add((ParameterableElement) ownedElement);
 			}
 		}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TestIdentityActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TestIdentityActionOperations.java
index 484579c..be8e473 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TestIdentityActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TestIdentityActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TestIdentityActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: TestIdentityActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -62,7 +62,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoType(TestIdentityAction testIdentityAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,7 +97,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -130,7 +130,7 @@
 	 */
 	public static boolean validateResultIsBoolean(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TimeEventOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TimeEventOperations.java
index a003672..9138375 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TimeEventOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TimeEventOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TimeEventOperations.java,v 1.5 2006/01/05 22:43:25 khussey Exp $
+ * $Id: TimeEventOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateWhenNonNegative(TimeEvent timeEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateStartingTime(TimeEvent timeEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TransitionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TransitionOperations.java
index a4272b9..5082930 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TransitionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TransitionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TransitionOperations.java,v 1.9 2006/11/29 02:00:49 khussey Exp $
+ * $Id: TransitionOperations.java,v 1.10 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -75,7 +75,7 @@
 	 * @generated
 	 */
 	public static boolean validateForkSegmentGuards(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -107,7 +107,7 @@
 	 * @generated
 	 */
 	public static boolean validateJoinSegmentGuards(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -139,7 +139,7 @@
 	 * @generated
 	 */
 	public static boolean validateForkSegmentState(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -171,7 +171,7 @@
 	 * @generated
 	 */
 	public static boolean validateJoinSegmentState(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -205,7 +205,7 @@
 	 * @generated
 	 */
 	public static boolean validateOutgoingPseudostates(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -242,7 +242,7 @@
 	 * @generated
 	 */
 	public static boolean validateInitialTransition(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -275,7 +275,7 @@
 	 * @generated
 	 */
 	public static boolean validateSignaturesCompatible(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -362,7 +362,7 @@
 
 			Transition redefineeTransition = (Transition) redefinee;
 
-			EList sources = new UniqueEList.FastCompare();
+			EList<Vertex> sources = new UniqueEList.FastCompare<Vertex>();
 
 			Vertex source = transition.getSource();
 
@@ -385,8 +385,8 @@
 		return false;
 	}
 
-	protected static EList getAllRedefinedTransitions(Transition transition,
-			EList allRedefinedTransitions) {
+	protected static EList<Transition> getAllRedefinedTransitions(
+			Transition transition, EList<Transition> allRedefinedTransitions) {
 		Transition redefinedTransition = transition.getRedefinedTransition();
 
 		if (redefinedTransition != null
@@ -399,9 +399,10 @@
 		return allRedefinedTransitions;
 	}
 
-	protected static EList getAllRedefinedTransitions(Transition transition) {
+	protected static EList<Transition> getAllRedefinedTransitions(
+			Transition transition) {
 		return getAllRedefinedTransitions(transition,
-			new UniqueEList.FastCompare());
+			new UniqueEList.FastCompare<Transition>());
 	}
 
 } // TransitionOperations
\ No newline at end of file
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TypeOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TypeOperations.java
index 939c91c..9e6fb1c 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TypeOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/TypeOperations.java
@@ -8,12 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: TypeOperations.java,v 1.14 2006/05/02 20:18:32 khussey Exp $
+ * $Id: TypeOperations.java,v 1.15 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
-
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.UniqueEList;
@@ -84,34 +82,42 @@
 
 	protected static Property createOwnedProperty(Type type, final String name,
 			final Type propertyType, int lower, int upper) {
-		Property ownedProperty = (Property) new UMLSwitch() {
+		Property ownedProperty = new UMLSwitch<Property>() {
 
-			public Object caseArtifact(Artifact artifact) {
+			@Override
+			public Property caseArtifact(Artifact artifact) {
 				return artifact.createOwnedAttribute(name, propertyType);
 			}
 
-			public Object caseAssociation(Association association) {
+			@Override
+			public Property caseAssociation(Association association) {
 				return association.createOwnedEnd(name, propertyType);
 			}
 
-			public Object caseAssociationClass(AssociationClass associationClass) {
+			@Override
+			public Property caseAssociationClass(
+					AssociationClass associationClass) {
 				return associationClass
 					.createOwnedAttribute(name, propertyType);
 			}
 
-			public Object caseDataType(DataType dataType) {
+			@Override
+			public Property caseDataType(DataType dataType) {
 				return dataType.createOwnedAttribute(name, propertyType);
 			}
 
-			public Object caseInterface(Interface interface_) {
+			@Override
+			public Property caseInterface(Interface interface_) {
 				return interface_.createOwnedAttribute(name, propertyType);
 			}
 
-			public Object caseSignal(Signal signal) {
+			@Override
+			public Property caseSignal(Signal signal) {
 				return signal.createOwnedAttribute(name, propertyType);
 			}
 
-			public Object caseStructuredClassifier(
+			@Override
+			public Property caseStructuredClassifier(
 					StructuredClassifier structuredClassifier) {
 				return structuredClassifier.createOwnedAttribute(name,
 					propertyType);
@@ -144,7 +150,7 @@
 			Association association, boolean isNavigable,
 			AggregationKind aggregation, String name, int lower, int upper,
 			Type endType) {
-		EList ownedAttributes = getOwnedAttributes(type);
+		EList<Property> ownedAttributes = getOwnedAttributes(type);
 		Property associationEnd = createOwnedProperty(ownedAttributes == null
 			|| !isNavigable
 			? association
@@ -209,17 +215,13 @@
 	 * <!-- end-user-doc -->
 	 * @generated NOT
 	 */
-	public static EList getAssociations(Type type) {
-		EList associations = new UniqueEList.FastCompare();
+	public static EList<Association> getAssociations(Type type) {
+		EList<Association> associations = new UniqueEList.FastCompare<Association>();
 
-		for (Iterator nonNavigableInverseReferences = getNonNavigableInverseReferences(
-			type).iterator(); nonNavigableInverseReferences.hasNext();) {
+		for (EStructuralFeature.Setting nonNavigableInverseReference : getNonNavigableInverseReferences(type)) {
 
-			EStructuralFeature.Setting setting = (EStructuralFeature.Setting) nonNavigableInverseReferences
-				.next();
-
-			if (setting.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
-				EObject eObject = setting.getEObject();
+			if (nonNavigableInverseReference.getEStructuralFeature() == UMLPackage.Literals.TYPED_ELEMENT__TYPE) {
+				EObject eObject = nonNavigableInverseReference.getEObject();
 
 				if (eObject instanceof Property) {
 					Association association = ((Property) eObject)
@@ -236,31 +238,35 @@
 	}
 
 	public static Operation createOwnedOperation(Type type, final String name,
-			final EList parameterNames, final EList parameterTypes,
-			Type returnType) {
+			final EList<String> parameterNames,
+			final EList<Type> parameterTypes, Type returnType) {
 
 		if (getOwnedOperations(type) == null) {
 			throw new UnsupportedOperationException();
 		}
 
-		Operation ownedOperation = (Operation) new UMLSwitch() {
+		Operation ownedOperation = new UMLSwitch<Operation>() {
 
-			public Object caseArtifact(Artifact artifact) {
+			@Override
+			public Operation caseArtifact(Artifact artifact) {
 				return artifact.createOwnedOperation(name, parameterNames,
 					parameterTypes);
 			}
 
-			public Object caseClass(org.eclipse.uml2.uml.Class class_) {
+			@Override
+			public Operation caseClass(org.eclipse.uml2.uml.Class class_) {
 				return class_.createOwnedOperation(name, parameterNames,
 					parameterTypes);
 			}
 
-			public Object caseDataType(DataType dataType) {
+			@Override
+			public Operation caseDataType(DataType dataType) {
 				return dataType.createOwnedOperation(name, parameterNames,
 					parameterTypes);
 			}
 
-			public Object caseInterface(Interface interface_) {
+			@Override
+			public Operation caseInterface(Interface interface_) {
 				return interface_.createOwnedOperation(name, parameterNames,
 					parameterTypes);
 			}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UnmarshallActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UnmarshallActionOperations.java
index bdbea31..963b9ce 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UnmarshallActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UnmarshallActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UnmarshallActionOperations.java,v 1.5 2006/04/05 13:50:03 khussey Exp $
+ * $Id: UnmarshallActionOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -64,7 +64,7 @@
 	 * @generated
 	 */
 	public static boolean validateSameType(UnmarshallAction unmarshallAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -97,7 +97,7 @@
 	 */
 	public static boolean validateMultiplicityOfObject(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -130,7 +130,7 @@
 	 */
 	public static boolean validateNumberOfResult(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -163,7 +163,7 @@
 	 */
 	public static boolean validateTypeAndOrdering(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -197,7 +197,7 @@
 	 */
 	public static boolean validateMultiplicityOfResult(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -230,7 +230,7 @@
 	 */
 	public static boolean validateStructuralFeature(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -263,7 +263,7 @@
 	 */
 	public static boolean validateUnmarshallTypeIsClassifier(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UseCaseOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UseCaseOperations.java
index c31734b..12f7ee1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UseCaseOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/UseCaseOperations.java
@@ -8,11 +8,10 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UseCaseOperations.java,v 1.10 2006/05/23 16:07:41 khussey Exp $
+ * $Id: UseCaseOperations.java,v 1.11 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.BasicDiagnostic;
@@ -22,6 +21,7 @@
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Include;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLPlugin;
@@ -68,7 +68,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateMustHaveName(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (isEmpty(useCase.getName())) {
 
@@ -97,11 +97,11 @@
 	 * @generated NOT
 	 */
 	public static boolean validateBinaryAssociations(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-		for (Iterator a = useCase.getAssociations().iterator(); a.hasNext();) {
+		for (Association association : useCase.getAssociations()) {
 
-			if (!((Association) a.next()).isBinary()) {
+			if (!association.isBinary()) {
 
 				if (diagnostics != null) {
 					diagnostics.add(new BasicDiagnostic(Diagnostic.WARNING,
@@ -130,21 +130,21 @@
 	 * @generated NOT
 	 */
 	public static boolean validateNoAssociationToUseCase(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-		for (Iterator a = useCase.getAssociations().iterator(); a.hasNext();) {
-			EList endTypes = ((Association) a.next()).getEndTypes();
+		for (Association association : useCase.getAssociations()) {
+			EList<Type> endTypes = association.getEndTypes();
 
 			if (endTypes.size() == 2) {
-				Type end1 = (Type) endTypes.get(0);
-				Type end2 = (Type) endTypes.get(1);
+				Type end1 = endTypes.get(0);
+				Type end2 = endTypes.get(1);
 
 				if (end1 instanceof UseCase && end2 instanceof UseCase) {
 					UseCase useCase1 = (UseCase) end1;
 					UseCase useCase2 = (UseCase) end2;
 
-					EList subjects = new UniqueEList.FastCompare(useCase1
-						.getSubjects());
+					EList<Classifier> subjects = new UniqueEList.FastCompare<Classifier>(
+						useCase1.getSubjects());
 					subjects.retainAll(useCase2.getSubjects());
 
 					if (!subjects.isEmpty()) {
@@ -182,7 +182,7 @@
 	 * @generated NOT
 	 */
 	public static boolean validateCannotIncludeSelf(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (useCase.allIncludedUseCases().contains(useCase)) {
 
@@ -202,13 +202,11 @@
 		return true;
 	}
 
-	protected static EList allIncludedUseCases(UseCase useCase,
-			EList allIncludedUseCases) {
+	protected static EList<UseCase> allIncludedUseCases(UseCase useCase,
+			EList<UseCase> allIncludedUseCases) {
 
-		for (Iterator includes = useCase.getIncludes().iterator(); includes
-			.hasNext();) {
-
-			UseCase addition = ((Include) includes.next()).getAddition();
+		for (Include include : useCase.getIncludes()) {
+			UseCase addition = include.getAddition();
 
 			if (addition != null && allIncludedUseCases.add(addition)) {
 				allIncludedUseCases(addition, allIncludedUseCases);
@@ -227,9 +225,9 @@
 	 * <!-- end-model-doc -->
 	 * @generated NOT
 	 */
-	public static EList allIncludedUseCases(UseCase useCase) {
+	public static EList<UseCase> allIncludedUseCases(UseCase useCase) {
 		return ECollections.unmodifiableEList(allIncludedUseCases(useCase,
-			new UniqueEList.FastCompare()));
+			new UniqueEList.FastCompare<UseCase>()));
 	}
 
 } // UseCaseOperations
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValuePinOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValuePinOperations.java
index 8102353..f30ed9d 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValuePinOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValuePinOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValuePinOperations.java,v 1.5 2006/05/16 15:07:25 khussey Exp $
+ * $Id: ValuePinOperations.java,v 1.6 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 * @generated
 	 */
 	public static boolean validateCompatibleType(ValuePin valuePin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -91,7 +91,7 @@
 	 * @generated
 	 */
 	public static boolean validateNoIncomingEdges(ValuePin valuePin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationActionOperations.java
index 20463ec..b976d3b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValueSpecificationActionOperations.java,v 1.4 2006/01/05 22:43:26 khussey Exp $
+ * $Id: ValueSpecificationActionOperations.java,v 1.5 2006/12/14 15:49:27 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateCompatibleType(
 			ValueSpecificationAction valueSpecificationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			ValueSpecificationAction valueSpecificationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationOperations.java
index 41dcc4a..5e2b0cb 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/ValueSpecificationOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: ValueSpecificationOperations.java,v 1.9 2006/11/08 20:26:58 khussey Exp $
+ * $Id: ValueSpecificationOperations.java,v 1.10 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -168,8 +168,9 @@
 
 	protected static void setValue(ValueSpecification valueSpecification,
 			final String newValue) {
-		new UMLSwitch() {
+		new UMLSwitch<Object>() {
 
+			@Override
 			public Object caseDuration(Duration duration) {
 				ValueSpecification expr = duration.getExpr();
 				return expr == null || expr instanceof Duration
@@ -177,6 +178,7 @@
 					: doSwitch(expr);
 			}
 
+			@Override
 			public Object caseInstanceValue(InstanceValue instanceValue) {
 				Type type = instanceValue.getType();
 
@@ -202,30 +204,35 @@
 				return instanceValue;
 			}
 
+			@Override
 			public Object caseLiteralBoolean(LiteralBoolean literalBoolean) {
 				literalBoolean.setValue(Boolean.valueOf(newValue)
 					.booleanValue());
 				return literalBoolean;
 			}
 
+			@Override
 			public Object caseLiteralInteger(LiteralInteger literalInteger) {
 				literalInteger.setValue(Integer.parseInt(newValue));
 				return literalInteger;
 			}
 
+			@Override
 			public Object caseLiteralString(LiteralString literalString) {
 				literalString.setValue(newValue);
 				return literalString;
 			}
 
+			@Override
 			public Object caseLiteralUnlimitedNatural(
 					LiteralUnlimitedNatural literalUnlimitedNatural) {
 				literalUnlimitedNatural.setValue(Integer.parseInt(newValue));
 				return literalUnlimitedNatural;
 			}
 
+			@Override
 			public Object caseOpaqueExpression(OpaqueExpression opaqueExpression) {
-				EList bodies = opaqueExpression.getBodies();
+				EList<String> bodies = opaqueExpression.getBodies();
 
 				if (bodies.isEmpty()) {
 					bodies.add(newValue);
@@ -236,6 +243,7 @@
 				return opaqueExpression;
 			}
 
+			@Override
 			public Object caseTimeExpression(TimeExpression timeExpression) {
 				ValueSpecification expr = timeExpression.getExpr();
 				return expr == null || expr instanceof TimeExpression
@@ -243,6 +251,7 @@
 					: doSwitch(expr);
 			}
 
+			@Override
 			public Object defaultCase(EObject eObject) {
 				throw new UnsupportedOperationException();
 			}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableActionOperations.java
index 6566698..2b3b868 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VariableActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: VariableActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -59,7 +59,7 @@
 	 */
 	public static boolean validateScopeOfVariable(
 			VariableAction variableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableOperations.java
index 180cd5f..db0bee1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/VariableOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: VariableOperations.java,v 1.4 2006/01/05 22:43:24 khussey Exp $
+ * $Id: VariableOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 * @generated
 	 */
 	public static boolean validateOwned(Variable variable,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteLinkActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteLinkActionOperations.java
index 8d1e4a6..6f4af76 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteLinkActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteLinkActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteLinkActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: WriteLinkActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -58,7 +58,7 @@
 	 * @generated
 	 */
 	public static boolean validateAllowAccess(WriteLinkAction writeLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteStructuralFeatureActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteStructuralFeatureActionOperations.java
index c8b5c21..75c4ca3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteStructuralFeatureActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteStructuralFeatureActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteStructuralFeatureActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: WriteStructuralFeatureActionOperations.java,v 1.5 2006/12/14 15:49:25 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateInputPin(
 			WriteStructuralFeatureAction writeStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			WriteStructuralFeatureAction writeStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteVariableActionOperations.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteVariableActionOperations.java
index 64ad1c3..5dc3f66 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteVariableActionOperations.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/operations/WriteVariableActionOperations.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: WriteVariableActionOperations.java,v 1.4 2006/01/05 22:43:25 khussey Exp $
+ * $Id: WriteVariableActionOperations.java,v 1.5 2006/12/14 15:49:26 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.operations;
 
@@ -60,7 +60,7 @@
 	 */
 	public static boolean validateSameType(
 			WriteVariableAction writeVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
@@ -93,7 +93,7 @@
 	 */
 	public static boolean validateMultiplicity(
 			WriteVariableAction writeVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
 		// -> verify the details of the diagnostic, including severity and message
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLHandler.java
index bab997c..cff7b3b 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLHandler.java
@@ -8,14 +8,13 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UML22UMLHandler.java,v 1.6 2006/04/26 15:48:53 khussey Exp $
+ * $Id: UML22UMLHandler.java,v 1.7 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
-import java.util.Iterator;
 import java.util.Map;
 
-import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.xmi.XMLHelper;
@@ -27,35 +26,33 @@
 		extends UMLHandler {
 
 	public UML22UMLHandler(XMLResource xmiResource, XMLHelper helper,
-			Map options) {
+			Map<?, ?> options) {
 		super(xmiResource, helper, options);
 	}
 
+	@Override
 	protected void createObject(EObject peekObject, EStructuralFeature feature) {
 
 		if (!isNull()) {
 			String xsiType = getXSIType();
 
-			Map typeMap = xsiType == null
+			Map<String, Map<EClassifier, String>> featureToTypeMap = xsiType == null
 				? UML22UMLExtendedMetaData.getFeatureToTypeMap()
-				: (Map) UML22UMLExtendedMetaData.getTypeToTypeMap()
-					.get(xsiType);
-			typeMap = typeMap == null
+				: UML22UMLExtendedMetaData.getTypeToTypeMap().get(xsiType);
+
+			Map<EClassifier, String> typeMap = featureToTypeMap == null
 				? null
-				: (Map) typeMap.get(feature.getName());
+				: featureToTypeMap.get(feature.getName());
 
 			if (typeMap != null) {
 				EObject eObject = peekObject instanceof AnyType
 					? (EObject) objects.get(objects.size() - 2)
 					: peekObject;
 
-				for (Iterator entries = typeMap.entrySet().iterator(); entries
-					.hasNext();) {
+				for (Map.Entry<EClassifier, String> entry : typeMap.entrySet()) {
 
-					Map.Entry entry = (Map.Entry) entries.next();
-
-					if (((EClass) entry.getKey()).isInstance(eObject)) {
-						xsiType = (String) entry.getValue();
+					if (entry.getKey().isInstance(eObject)) {
+						xsiType = entry.getValue();
 						break;
 					}
 				}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLLoadImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLLoadImpl.java
index a8eef07..5a0cec1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLLoadImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLLoadImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UML22UMLLoadImpl.java,v 1.1 2006/04/06 04:30:32 khussey Exp $
+ * $Id: UML22UMLLoadImpl.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -22,6 +22,7 @@
 		super(helper);
 	}
 
+	@Override
 	protected DefaultHandler makeDefaultHandler() {
 		return new UML22UMLHandler(resource, helper, options);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceFactoryImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceFactoryImpl.java
index 0ff7478..3b91cc5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceFactoryImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceFactoryImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: UML22UMLResourceFactoryImpl.java,v 1.6 2006/04/26 15:48:53 khussey Exp $
+ * $Id: UML22UMLResourceFactoryImpl.java,v 1.7 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -39,25 +39,34 @@
 		super();
 	}
 
+	@Override
 	public Resource createResourceGen(URI uri) {
 		UML22UMLResource result = new UML22UMLResourceImpl(uri);
 		result.setEncoding(UML22UMLResource.DEFAULT_ENCODING);
 		return result;
 	}
 
+	@Override
 	public Resource createResource(URI uri) {
-		UML22UMLResource resource = (UML22UMLResource) super.createResource(uri);
+		UML22UMLResource resource = (UML22UMLResource) super
+			.createResource(uri);
 
-		Map defaultLoadOptions = resource.getDefaultLoadOptions();
+		Map<Object, Object> defaultLoadOptions = resource
+			.getDefaultLoadOptions();
 
-		EPackage.Registry ePackageRegistry = new EPackageRegistryImpl(EPackage.Registry.INSTANCE);
-		ePackageRegistry.put(UML22UMLResource.UML2_METAMODEL_NS_URI, UMLPackage.eINSTANCE);
-		ePackageRegistry.put("platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore", UMLPackage.eINSTANCE); //$NON-NLS-1$
+		EPackage.Registry ePackageRegistry = new EPackageRegistryImpl(
+			EPackage.Registry.INSTANCE);
+		ePackageRegistry.put(UML22UMLResource.UML2_METAMODEL_NS_URI,
+			UMLPackage.eINSTANCE);
+		ePackageRegistry
+			.put(
+				"platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore", UMLPackage.eINSTANCE); //$NON-NLS-1$
 
 		ResourceSet resourceSet = new ResourceSetImpl();
 		resourceSet.setPackageRegistry(ePackageRegistry);
 
-		Ecore2XMLRegistry ecore2xmlRegistry = new Ecore2XMLRegistryImpl(Ecore2XMLRegistry.INSTANCE);
+		Ecore2XMLRegistry ecore2xmlRegistry = new Ecore2XMLRegistryImpl(
+			Ecore2XMLRegistry.INSTANCE);
 		ecore2xmlRegistry
 			.put(
 				UML22UMLResource.UML2_METAMODEL_NS_URI,
@@ -70,11 +79,15 @@
 								true).getContents(),
 						Ecore2XMLPackage.Literals.XML_MAP));
 
-		ExtendedMetaData extendedMetaData = new UML22UMLExtendedMetaData(ePackageRegistry, ecore2xmlRegistry);
+		ExtendedMetaData extendedMetaData = new UML22UMLExtendedMetaData(
+			ePackageRegistry, ecore2xmlRegistry);
 
-		defaultLoadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
-		defaultLoadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING, Boolean.FALSE);
-		defaultLoadOptions.put(XMLResource.OPTION_RESOURCE_HANDLER, new UML22UMLResourceHandler());
+		defaultLoadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA,
+			extendedMetaData);
+		defaultLoadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING,
+			Boolean.FALSE);
+		defaultLoadOptions.put(XMLResource.OPTION_RESOURCE_HANDLER,
+			new UML22UMLResourceHandler());
 
 		return resource;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceImpl.java
index ba6d1ec..4ae0887 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UML22UMLResourceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UML22UMLResourceImpl.java,v 1.2 2006/04/26 15:48:53 khussey Exp $
+ * $Id: UML22UMLResourceImpl.java,v 1.3 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -24,6 +24,7 @@
 		super(uri);
 	}
 
+	@Override
 	protected XMLLoad createXMLLoad() {
 		return new UML22UMLLoadImpl(createXMLHelper());
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLHandler.java
index 3f87edb..7b3bd95 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLHandler.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,12 +8,11 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLHandler.java,v 1.1 2005/12/07 14:17:51 khussey Exp $
+ * $Id: UMLHandler.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.emf.common.util.URI;
@@ -29,46 +28,42 @@
 import org.eclipse.emf.ecore.xmi.impl.SAXXMIHandler;
 import org.eclipse.emf.ecore.xml.type.AnyType;
 
-
 public class UMLHandler
 		extends SAXXMIHandler {
 
-	protected final Map urisToProxies = new HashMap();
+	protected final Map<URI, Map<String, EObject>> urisToProxies = new HashMap<URI, Map<String, EObject>>();
 
-	public UMLHandler(XMLResource xmiResource, XMLHelper helper, Map options) {
+	public UMLHandler(XMLResource xmiResource, XMLHelper helper,
+			Map<?, ?> options) {
 		super(xmiResource, helper, options);
 	}
 
+	@Override
 	public void endDocument() {
 		super.endDocument();
 
 		if (extendedMetaData != null) {
 
-			for (Iterator demandedPackages = extendedMetaData
-				.demandedPackages().iterator(); demandedPackages.hasNext();) {
-
-				EPackage ePackage = (EPackage) demandedPackages.next();
-				String nsURI = ePackage.getNsURI();
+			for (EPackage demandedPackage : extendedMetaData.demandedPackages()) {
+				String nsURI = demandedPackage.getNsURI();
 
 				if (nsURI != null) {
 
 					if (urisToLocations != null) {
-						URI locationURI = (URI) urisToLocations.get(nsURI);
+						URI locationURI = urisToLocations.get(nsURI);
 
 						if (locationURI != null) {
 							Resource resource = new ResourceImpl();
 							resource.setURI(locationURI);
-							resource.getContents().add(ePackage);
+							resource.getContents().add(demandedPackage);
 						}
 					}
 
-					for (Iterator entries = helper.getPrefixToNamespaceMap()
-						.iterator(); entries.hasNext();) {
-
-						Map.Entry entry = (Map.Entry) entries.next();
+					for (Map.Entry<String, String> entry : helper
+						.getPrefixToNamespaceMap()) {
 
 						if (nsURI.equals(entry.getValue())) {
-							ePackage.setNsPrefix((String) entry.getKey());
+							demandedPackage.setNsPrefix(entry.getKey());
 						}
 					}
 				}
@@ -76,6 +71,7 @@
 		}
 	}
 
+	@Override
 	protected EObject validateCreateObjectFromFactory(EFactory factory,
 			String typeName, EObject newObject, EStructuralFeature feature) {
 
@@ -83,13 +79,15 @@
 			&& newObject.eIsProxy() && !sameDocumentProxies.contains(newObject)) {
 
 			URI proxyURI = ((InternalEObject) newObject).eProxyURI();
-			Map typeNamesToProxies = (Map) urisToProxies.get(proxyURI);
+			Map<String, EObject> typeNamesToProxies = urisToProxies
+				.get(proxyURI);
 
 			if (typeNamesToProxies == null) {
-				urisToProxies.put(proxyURI, typeNamesToProxies = new HashMap());
+				urisToProxies.put(proxyURI,
+					typeNamesToProxies = new HashMap<String, EObject>());
 			}
 
-			EObject proxy = (EObject) typeNamesToProxies.get(typeName);
+			EObject proxy = typeNamesToProxies.get(typeName);
 
 			if (proxy == null) {
 				typeNamesToProxies.put(typeName, proxy = newObject);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLLoadImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLLoadImpl.java
index 58dbaf5..eefd021 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLLoadImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLLoadImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2006 IBM Corporation and others.
  * All rights reserved.   This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLLoadImpl.java,v 1.2 2005/12/12 18:11:59 khussey Exp $
+ * $Id: UMLLoadImpl.java,v 1.3 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -24,6 +24,7 @@
 		super(helper);
 	}
 
+	@Override
 	protected DefaultHandler makeDefaultHandler() {
 		return new UMLHandler(resource, helper, options);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceFactoryImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceFactoryImpl.java
index 2b22605..cad6954 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceFactoryImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceFactoryImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLResourceFactoryImpl.java,v 1.8 2006/06/06 21:05:41 khussey Exp $
+ * $Id: UMLResourceFactoryImpl.java,v 1.9 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -59,19 +59,20 @@
 		return result;
 	}
 
+	@Override
 	public Resource createResource(URI uri) {
 		UMLResource resource = (UMLResource) createResourceGen(uri);
 
 		resource.setXMIVersion("2.1"); //$NON-NLS-1$
 
-		Map defaultLoadOptions = resource.getDefaultLoadOptions();
+		Map<Object, Object> defaultLoadOptions = resource.getDefaultLoadOptions();
 
 		defaultLoadOptions.put(XMLResource.OPTION_DEFER_IDREF_RESOLUTION, Boolean.TRUE);
 		defaultLoadOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
 		defaultLoadOptions.put(XMLResource.OPTION_LAX_FEATURE_PROCESSING, Boolean.TRUE);
 		defaultLoadOptions.put(XMLResource.OPTION_RECORD_UNKNOWN_FEATURE, Boolean.TRUE);
 
-		Map defaultSaveOptions = resource.getDefaultSaveOptions();
+		Map<Object, Object> defaultSaveOptions = resource.getDefaultSaveOptions();
 
 		defaultSaveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
 		defaultSaveOptions.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceImpl.java
index b79f6d0..e1328d2 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/UMLResourceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLResourceImpl.java,v 1.3 2006/04/26 15:48:53 khussey Exp $
+ * $Id: UMLResourceImpl.java,v 1.4 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -40,14 +40,17 @@
 		super(uri);
 	}
 
+	@Override
 	protected XMLLoad createXMLLoad() {
 		return new UMLLoadImpl(createXMLHelper());
 	}
 
+	@Override
 	protected boolean useIDAttributes() {
 		return false;
 	}
 
+	@Override
 	protected boolean useUUIDs() {
 		return true;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHandler.java
index 85c9b59..d52eae3 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHandler.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: XMI2UMLHandler.java,v 1.4 2006/10/18 18:30:51 khussey Exp $
+ * $Id: XMI2UMLHandler.java,v 1.5 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -49,10 +49,11 @@
 
 	protected final static String IDREF_ATTRIB = XMIResource.XMI_NS + ':' + XMI_IDREF;
 
-	public XMI2UMLHandler(XMLResource xmiResource, XMLHelper helper, Map options) {
+	public XMI2UMLHandler(XMLResource xmiResource, XMLHelper helper, Map<?, ?> options) {
 		super(xmiResource, helper, options);
 	}
 
+	@Override
 	protected void handleProxy(InternalEObject proxy, String uriLiteral) {
 
 		if (uriLiteral.startsWith(XMI2UMLResource.UML_METAMODEL_URI)
@@ -80,6 +81,7 @@
 		super.handleProxy(proxy, uriLiteral);
 	}
 
+	@Override
 	protected void processElement(String name, String prefix, String localName) {
 
 		if (EMOFExtendedMetaData.EXTENSION.equals(localName)
@@ -94,6 +96,7 @@
 		}
 	}
 
+	@Override
 	public void endElement(String uri, String localName, String name) {
 
 		if (types.peek() == ECORE_EXTENSION_TYPE) {
@@ -106,6 +109,7 @@
 		}
 	}
 
+	@Override
 	protected void setAttribValue(EObject object, String name, String value) {
 
 		if (IDREF_ATTRIB.equals(name)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHelperImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHelperImpl.java
index 391c3fb..29bb5be 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHelperImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLHelperImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: XMI2UMLHelperImpl.java,v 1.1 2006/04/26 15:48:53 khussey Exp $
+ * $Id: XMI2UMLHelperImpl.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -25,6 +25,7 @@
 		super(resource);
 	}
 
+	@Override
 	public String getHREF(EObject obj) {
 		String href = super.getHREF(obj);
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLLoadImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLLoadImpl.java
index ae9a9d6..1ab9352 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLLoadImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLLoadImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: XMI2UMLLoadImpl.java,v 1.1 2006/04/26 15:48:53 khussey Exp $
+ * $Id: XMI2UMLLoadImpl.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -22,6 +22,7 @@
 		super(helper);
 	}
 
+	@Override
 	protected DefaultHandler makeDefaultHandler() {
 		return new XMI2UMLHandler(resource, helper, options);
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceFactoryImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceFactoryImpl.java
index 9848e26..8c5210a 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceFactoryImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceFactoryImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: XMI2UMLResourceFactoryImpl.java,v 1.3 2006/10/10 20:41:29 khussey Exp $
+ * $Id: XMI2UMLResourceFactoryImpl.java,v 1.4 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -30,12 +30,14 @@
 		super();
 	}
 
+	@Override
 	public Resource createResourceGen(URI uri) {
 		XMI2UMLResource result = new XMI2UMLResourceImpl(uri);
 		result.setEncoding(XMI2UMLResource.DEFAULT_ENCODING);
 		return result;
 	}
 
+	@Override
 	public Resource createResource(URI uri) {
 		XMI2UMLResource resource = (XMI2UMLResource) super.createResource(uri);
 
@@ -45,7 +47,7 @@
 		resource.getDefaultLoadOptions().put(
 			XMLResource.OPTION_EXTENDED_META_DATA, extendedMetaData);
 
-		Map defaultSaveOptions = resource.getDefaultSaveOptions();
+		Map<Object, Object> defaultSaveOptions = resource.getDefaultSaveOptions();
 
 		defaultSaveOptions.put(XMLResource.OPTION_EXTENDED_META_DATA,
 			extendedMetaData);
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceImpl.java
index ac00987..79e8938 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLResourceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: XMI2UMLResourceImpl.java,v 1.1 2006/04/26 15:48:53 khussey Exp $
+ * $Id: XMI2UMLResourceImpl.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -26,18 +26,22 @@
 		super(uri);
 	}
 
+	@Override
 	protected XMLHelper createXMLHelper() {
 		return new XMI2UMLHelperImpl(this);
 	}
 
+	@Override
 	protected XMLLoad createXMLLoad() {
 		return new XMI2UMLLoadImpl(createXMLHelper());
 	}
 
+	@Override
 	protected XMLSave createXMLSave() {
 		return new XMI2UMLSaveImpl(createXMLHelper());
 	}
 
+	@Override
 	protected boolean assignIDsWhileLoading() {
 		return false;
 	}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLSaveImpl.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLSaveImpl.java
index 13e439b..99346a7 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLSaveImpl.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/internal/resource/XMI2UMLSaveImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: XMI2UMLSaveImpl.java,v 1.1 2006/04/26 15:48:53 khussey Exp $
+ * $Id: XMI2UMLSaveImpl.java,v 1.2 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.internal.resource;
 
@@ -26,6 +26,7 @@
 		super(helper);
 	}
 
+	@Override
 	protected void saveContainedMany(EObject eObject,
 			EStructuralFeature eStructuralFeature) {
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
index 24ad513..ce42e54 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLExtendedMetaData.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: UML22UMLExtendedMetaData.java,v 1.4 2006/10/10 20:41:29 khussey Exp $
+ * $Id: UML22UMLExtendedMetaData.java,v 1.5 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.resource;
 
@@ -16,6 +16,7 @@
 import java.util.Map;
 
 import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.mapping.ecore2xml.Ecore2XMLRegistry;
 import org.eclipse.emf.mapping.ecore2xml.util.Ecore2XMLExtendedMetaData;
@@ -24,12 +25,12 @@
 public class UML22UMLExtendedMetaData
 		extends Ecore2XMLExtendedMetaData {
 
-	protected static Map uriMap = null;
+	protected static Map<URI, URI> uriMap = null;
 
-	public static Map getURIMap() {
+	public static Map<URI, URI> getURIMap() {
 
 		if (uriMap == null) {
-			uriMap = new HashMap();
+			uriMap = new HashMap<URI, URI>();
 
 			uriMap.put(URI.createURI(UML22UMLResource.ECORE_PRIMITIVE_TYPES_LIBRARY_URI), URI.createURI(UMLResource.ECORE_PRIMITIVE_TYPES_LIBRARY_URI));
 			uriMap.put(URI.createURI(UML22UMLResource.JAVA_PRIMITIVE_TYPES_LIBRARY_URI), URI.createURI(UMLResource.JAVA_PRIMITIVE_TYPES_LIBRARY_URI));
@@ -47,12 +48,12 @@
 		return uriMap;
 	}
 
-	protected static Map fragmentMap = null;
+	protected static Map<String, String> fragmentMap = null;
 
-	public static Map getFragmentMap() {
+	public static Map<String, String> getFragmentMap() {
 
 		if (fragmentMap == null) {
-			fragmentMap = new HashMap();
+			fragmentMap = new HashMap<String, String>();
 
 			// EcorePrimitiveTypes.library.uml2 -> EcorePrimitiveTypes.library.uml
 
@@ -2324,46 +2325,46 @@
 		return fragmentMap;
 	}
 
-	protected static Map typeToTypeMap = null;
+	protected static Map<String, Map<String, Map<EClassifier, String>>> typeToTypeMap = null;
 
-	public static Map getTypeToTypeMap() {
+	public static Map<String, Map<String, Map<EClassifier, String>>> getTypeToTypeMap() {
 		
 		if (typeToTypeMap == null) {
-			typeToTypeMap = new HashMap();
+			typeToTypeMap = new HashMap<String, Map<String, Map<EClassifier, String>>>();
 			
-			Map typeMap = null;
-			Map featureMap = null;
+			Map<EClassifier, String> typeMap = null;
+			Map<String, Map<EClassifier, String>> featureMap = null;
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.INTERACTION, "uml:EventOccurrence"); //$NON-NLS-1$
 			typeMap.put(UMLPackage.Literals.INTERACTION_OPERAND, "uml:EventOccurrence"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("fragment", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:Stop", featureMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.DESTROY_LINK_ACTION, "uml:LinkEndDestructionData"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("endData", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:LinkEndCreationData", featureMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:LinkEndData", featureMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.ACTIVITY, "uml:CallBehaviorAction"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("node", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:ApplyFunctionAction", featureMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.ACTIVITY, "uml:Action"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("node", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:DurationObservationAction", featureMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:TimeObservationAction", featureMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.BEHAVIORED_CLASSIFIER, "uml:Trigger"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("ownedTrigger", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:AnyTrigger", featureMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:CallTrigger", featureMap); //$NON-NLS-1$
@@ -2371,15 +2372,15 @@
 			typeToTypeMap.put("uml:SignalTrigger", featureMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:TimeTrigger", featureMap); //$NON-NLS-1$
 			
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.NAMESPACE, "uml:Dependency"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("packagedElement", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:Permission", featureMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.NAMED_ELEMENT, "uml:OpaqueExpression"); //$NON-NLS-1$
-			featureMap = new HashMap();
+			featureMap = new HashMap<String, Map<EClassifier, String>>();
 			featureMap.put("mapping", typeMap); //$NON-NLS-1$
 			featureMap.put("selector", typeMap); //$NON-NLS-1$
 			typeToTypeMap.put("uml:Expression", featureMap); //$NON-NLS-1$
@@ -2388,82 +2389,82 @@
 		return typeToTypeMap;
 	}
 
-	protected static Map featureToTypeMap = null;
+	protected static Map<String, Map<EClassifier, String>> featureToTypeMap = null;
 
-	public static Map getFeatureToTypeMap() {
+	public static Map<String, Map<EClassifier, String>> getFeatureToTypeMap() {
 		
 		if (featureToTypeMap == null) {
-			featureToTypeMap = new HashMap();
+			featureToTypeMap = new HashMap<String, Map<EClassifier, String>>();
 			
-			Map typeMap = null;
+			Map<EClassifier, String> typeMap = null;
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.INTERACTION_USE, "uml:InputPin"); //$NON-NLS-1$
 			featureToTypeMap.put("argument", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.COMMENT, "uml:StringExpression"); //$NON-NLS-1$
 			featureToTypeMap.put("bodyExpression", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.OPAQUE_ACTION, "uml:Duration"); //$NON-NLS-1$
 			featureToTypeMap.put("duration", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.TRANSITION, "uml:Activity"); //$NON-NLS-1$
 			featureToTypeMap.put("effect", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.STATE, "uml:Activity"); //$NON-NLS-1$
 			featureToTypeMap.put("doActivity", typeMap); //$NON-NLS-1$
 			featureToTypeMap.put("entry", typeMap); //$NON-NLS-1$
 			featureToTypeMap.put("exit", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.BEHAVIORAL_FEATURE, "uml:Parameter"); //$NON-NLS-1$
 			featureToTypeMap.put("formalParameter", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.OPAQUE_ACTION, "uml:TimeExpression"); //$NON-NLS-1$
 			featureToTypeMap.put("now", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.TRIGGER, "uml:Operation"); //$NON-NLS-1$
 			featureToTypeMap.put("operation", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.BEHAVIORED_CLASSIFIER, "uml:StateMachine"); //$NON-NLS-1$
 			featureToTypeMap.put("ownedStateMachine", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.CLASSIFIER, "uml:RedefinableTemplateSignature"); //$NON-NLS-1$
 			featureToTypeMap.put("ownedTemplateSignature", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.PACKAGE, "uml:PackageMerge"); //$NON-NLS-1$
 			featureToTypeMap.put("packageExtension", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.NAMESPACE, "uml:PackageImport"); //$NON-NLS-1$
 			featureToTypeMap.put("packageImport", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.MESSAGE_END, "uml:Message"); //$NON-NLS-1$
 			featureToTypeMap.put("receiveMessage", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.BEHAVIORAL_FEATURE, "uml:Parameter"); //$NON-NLS-1$
 			featureToTypeMap.put("returnResult", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.LIFELINE, "uml:OpaqueExpression"); //$NON-NLS-1$
 			featureToTypeMap.put("selector", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.MESSAGE_END, "uml:Message"); //$NON-NLS-1$
 			featureToTypeMap.put("sendMessage", typeMap); //$NON-NLS-1$
 
-			typeMap = new HashMap();
+			typeMap = new HashMap<EClassifier, String>();
 			typeMap.put(UMLPackage.Literals.TRIGGER, "uml:Signal"); //$NON-NLS-1$
 			featureToTypeMap.put("signal", typeMap); //$NON-NLS-1$			
 		}
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
index f6b3c87..c5e7506 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/UML22UMLResourceHandler.java
@@ -8,13 +8,12 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: UML22UMLResourceHandler.java,v 1.29 2006/11/29 02:00:12 khussey Exp $
+ * $Id: UML22UMLResourceHandler.java,v 1.30 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.resource;
 
 import java.io.InputStream;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -77,6 +76,7 @@
 import org.eclipse.uml2.uml.InteractionUse;
 import org.eclipse.uml2.uml.Message;
 import org.eclipse.uml2.uml.MessageEnd;
+import org.eclipse.uml2.uml.MessageEvent;
 import org.eclipse.uml2.uml.MessageOccurrenceSpecification;
 import org.eclipse.uml2.uml.MessageSort;
 import org.eclipse.uml2.uml.MultiplicityElement;
@@ -160,17 +160,16 @@
 	protected static final String TAG_DEFINITION__SYMBOL = "symbol"; //$NON-NLS-1$
 
 	protected AnyType getExtension(XMLResource resource, EObject eObject) {
-		return (AnyType) resource.getEObjectToExtensionMap().get(eObject);
+		return resource.getEObjectToExtensionMap().get(eObject);
 	}
 
 	protected AnyType putExtension(XMLResource resource, EObject eObject,
 			AnyType extension) {
-		return (AnyType) resource.getEObjectToExtensionMap().put(eObject,
-			extension);
+		return resource.getEObjectToExtensionMap().put(eObject, extension);
 	}
 
 	protected AnyType removeExtension(XMLResource resource, EObject eObject) {
-		return (AnyType) resource.getEObjectToExtensionMap().remove(eObject);
+		return resource.getEObjectToExtensionMap().remove(eObject);
 	}
 
 	protected Object getValue(FeatureMap featureMap, String name) {
@@ -179,8 +178,9 @@
 
 	protected Object getValue(FeatureMap featureMap, String name, boolean remove) {
 
-		for (Iterator entries = featureMap.iterator(); entries.hasNext();) {
-			FeatureMap.Entry entry = (FeatureMap.Entry) entries.next();
+		for (Iterator<FeatureMap.Entry> entries = featureMap.iterator(); entries
+			.hasNext();) {
+			FeatureMap.Entry entry = entries.next();
 
 			if (name.equals(entry.getEStructuralFeature().getName())) {
 
@@ -195,16 +195,17 @@
 		return null;
 	}
 
-	protected Collection getValues(FeatureMap featureMap, String name) {
+	protected Collection<Object> getValues(FeatureMap featureMap, String name) {
 		return getValues(featureMap, name, false);
 	}
 
-	protected Collection getValues(FeatureMap featureMap, String name,
+	protected Collection<Object> getValues(FeatureMap featureMap, String name,
 			boolean remove) {
-		Collection values = new UniqueEList.FastCompare();
+		Collection<Object> values = new UniqueEList.FastCompare<Object>();
 
-		for (Iterator entries = featureMap.iterator(); entries.hasNext();) {
-			FeatureMap.Entry entry = (FeatureMap.Entry) entries.next();
+		for (Iterator<FeatureMap.Entry> entries = featureMap.iterator(); entries
+			.hasNext();) {
+			FeatureMap.Entry entry = entries.next();
 
 			if (name.equals(entry.getEStructuralFeature().getName())) {
 
@@ -223,12 +224,12 @@
 
 		if (internalEObject != null && internalEObject.eIsProxy()) {
 			URI eProxyURI = internalEObject.eProxyURI();
-			URI uri = (URI) UML22UMLExtendedMetaData.getURIMap().get(
+			URI uri = UML22UMLExtendedMetaData.getURIMap().get(
 				eProxyURI.trimFragment());
 
 			if (uri != null) {
-				String fragment = (String) UML22UMLExtendedMetaData
-					.getFragmentMap().get(eProxyURI.fragment());
+				String fragment = UML22UMLExtendedMetaData.getFragmentMap()
+					.get(eProxyURI.fragment());
 
 				if (fragment != null) {
 					internalEObject.eSetProxyURI(uri.appendFragment(fragment));
@@ -251,22 +252,19 @@
 				resource.setID(newEObject, resource.getID(eObject));
 			}
 
-			for (Iterator eAllStructuralFeatures = eObject.eClass()
-				.getEAllStructuralFeatures().iterator(); eAllStructuralFeatures
-				.hasNext();) {
-
-				EStructuralFeature.Internal eStructuralFeature = (EStructuralFeature.Internal) eAllStructuralFeatures
-					.next();
+			for (EStructuralFeature eStructuralFeature : eObject.eClass()
+				.getEAllStructuralFeatures()) {
 
 				if (eStructuralFeature.isChangeable()
-					&& eStructuralFeature.getEOpposite() == null
+					&& ((EStructuralFeature.Internal) eStructuralFeature)
+						.getEOpposite() == null
 					&& eObject.eIsSet(eStructuralFeature)) {
 
 					try {
 						newEObject.eSet(
 							eClass.getEStructuralFeature(eStructuralFeature
 								.getName()), eStructuralFeature.isMany()
-								? ((InternalEList) eObject
+								? ((InternalEList<?>) eObject
 									.eGet(eStructuralFeature)).basicList()
 								: eObject.eGet(eStructuralFeature));
 					} catch (Exception e) {
@@ -275,12 +273,10 @@
 				}
 			}
 
-			for (Iterator inverseReferences = UML2Util.getInverseReferences(
-				eObject).iterator(); inverseReferences.hasNext();) {
+			for (EStructuralFeature.Setting inverseReference : UML2Util
+				.getInverseReferences(eObject)) {
 
-				EStructuralFeature.Setting setting = (EStructuralFeature.Setting) inverseReferences
-					.next();
-				EStructuralFeature eStructuralFeature = setting
+				EStructuralFeature eStructuralFeature = inverseReference
 					.getEStructuralFeature();
 
 				if (eStructuralFeature.isChangeable()) {
@@ -288,10 +284,12 @@
 					try {
 
 						if (eStructuralFeature.isMany()) {
-							List values = (List) setting.get(false);
+							@SuppressWarnings("unchecked")
+							List<EObject> values = (List<EObject>) inverseReference
+								.get(false);
 							values.set(values.indexOf(eObject), newEObject);
 						} else {
-							setting.set(newEObject);
+							inverseReference.set(newEObject);
 						}
 					} catch (Exception e) {
 						UMLPlugin.INSTANCE.log(e);
@@ -314,7 +312,7 @@
 			ResourceSet resourceSet = eResource.getResourceSet();
 
 			if (resourceSet != null) {
-				return (Profile) UML2Util.load(resourceSet, URI
+				return UML2Util.load(resourceSet, URI
 					.createURI(UML22UMLResource.UML2_PROFILE_URI),
 					UMLPackage.Literals.PROFILE);
 			}
@@ -331,21 +329,23 @@
 			: null;
 	}
 
+	@Override
 	public void postLoad(final XMLResource resource, InputStream inputStream,
-			Map options) {
-		final EList resourceContents = resource.getContents();
+			Map<?, ?> options) {
+		final EList<EObject> resourceContents = resource.getContents();
 
-		final List annotationsToRemove = new ArrayList();
+		final List<EAnnotation> annotationsToRemove = new ArrayList<EAnnotation>();
 
-		final Map destructionEvents = new HashMap();
-		final Map executionEvents = new HashMap();
-		final Map sendEvents = new HashMap();
-		final Map receiveEvents = new HashMap();
+		final Map<org.eclipse.uml2.uml.Package, DestructionEvent> destructionEvents = new HashMap<org.eclipse.uml2.uml.Package, DestructionEvent>();
+		final Map<org.eclipse.uml2.uml.Package, ExecutionEvent> executionEvents = new HashMap<org.eclipse.uml2.uml.Package, ExecutionEvent>();
+		final Map<org.eclipse.uml2.uml.Package, Map<NamedElement, MessageEvent>> sendEvents = new HashMap<org.eclipse.uml2.uml.Package, Map<NamedElement, MessageEvent>>();
+		final Map<org.eclipse.uml2.uml.Package, Map<NamedElement, MessageEvent>> receiveEvents = new HashMap<org.eclipse.uml2.uml.Package, Map<NamedElement, MessageEvent>>();
 
-		final List packagesRequiringStereotypes = new ArrayList();
+		final List<org.eclipse.uml2.uml.Package> packagesRequiringStereotypes = new ArrayList<org.eclipse.uml2.uml.Package>();
 
-		UMLSwitch umlSwitch = new UMLSwitch() {
+		UMLSwitch<Object> umlSwitch = new UMLSwitch<Object>() {
 
+			@Override
 			public Object caseAction(Action action) {
 				AnyType extension = getExtension(resource, action);
 
@@ -363,6 +363,7 @@
 				return super.caseAction(action);
 			}
 
+			@Override
 			public Object caseActivity(Activity activity) {
 				AnyType extension = getExtension(resource, activity);
 
@@ -392,36 +393,33 @@
 				return super.caseActivity(activity);
 			}
 
+			@Override
 			public Object caseBehavioralFeature(
 					BehavioralFeature behavioralFeature) {
 				AnyType extension = getExtension(resource, behavioralFeature);
 
 				if (extension != null) {
-					EList ownedParameters = behavioralFeature
+					EList<Parameter> ownedParameters = behavioralFeature
 						.getOwnedParameters();
+					List<Object> returnResult = new ArrayList<Object>(
+						getValues(extension.getMixed(), "returnResult", true)); //$NON-NLS-1$
 
-					List returnResult = Arrays.asList(getValues(
-						extension.getMixed(), "returnResult", true).toArray()); //$NON-NLS-1$
-
-					for (ListIterator values = returnResult
+					for (ListIterator<Object> values = returnResult
 						.listIterator(returnResult.size()); values
 						.hasPrevious();) {
 
 						Object value = values.previous();
 
 						if (value instanceof Parameter) {
-							ownedParameters.add(0, value);
+							ownedParameters.add(0, (Parameter) value);
 						}
 					}
 
-					for (Iterator values = getValues(extension.getMixed(),
-						"formalParameter", true) //$NON-NLS-1$
-						.iterator(); values.hasNext();) {
-
-						Object value = values.next();
+					for (Object value : getValues(extension.getMixed(),
+						"formalParameter", true)) { //$NON-NLS-1$
 
 						if (value instanceof Parameter) {
-							ownedParameters.add(value);
+							ownedParameters.add((Parameter) value);
 						}
 					}
 				}
@@ -429,22 +427,20 @@
 				return super.caseBehavioralFeature(behavioralFeature);
 			}
 
+			@Override
 			public Object caseBehavioredClassifier(
 					BehavioredClassifier behavioredClassifier) {
 				AnyType extension = getExtension(resource, behavioredClassifier);
 
 				if (extension != null) {
-					EList ownedBehaviors = behavioredClassifier
+					EList<Behavior> ownedBehaviors = behavioredClassifier
 						.getOwnedBehaviors();
 
-					for (Iterator values = getValues(extension.getMixed(),
-						"ownedStateMachine", true) //$NON-NLS-1$
-						.iterator(); values.hasNext();) {
-
-						Object value = values.next();
+					for (Object value : getValues(extension.getMixed(),
+						"ownedStateMachine", true)) { //$NON-NLS-1$
 
 						if (value instanceof StateMachine) {
-							ownedBehaviors.add(value);
+							ownedBehaviors.add((StateMachine) value);
 						}
 					}
 				}
@@ -452,6 +448,7 @@
 				return super.caseBehavioredClassifier(behavioredClassifier);
 			}
 
+			@Override
 			public Object caseCallBehaviorAction(
 					CallBehaviorAction callBehaviorAction) {
 				AnyType extension = getExtension(resource, callBehaviorAction);
@@ -473,6 +470,7 @@
 				return super.caseCallBehaviorAction(callBehaviorAction);
 			}
 
+			@Override
 			public Object caseComment(Comment comment) {
 				AnyType extension = getExtension(resource, comment);
 
@@ -497,6 +495,7 @@
 				return super.caseComment(comment);
 			}
 
+			@Override
 			public Object caseDuration(Duration duration) {
 				AnyType extension = getExtension(resource, duration);
 
@@ -505,8 +504,8 @@
 						.equals(getValue(extension.getAnyAttribute(),
 							"isFirstTime"))); //$NON-NLS-1$
 
-					Collection values = getValues(extension.getAnyAttribute(),
-						"event", true); //$NON-NLS-1$
+					Collection<Object> values = getValues(extension
+						.getAnyAttribute(), "event", true); //$NON-NLS-1$
 
 					if (!values.isEmpty()) {
 						DurationObservation durationObservation = (DurationObservation) duration
@@ -514,19 +513,19 @@
 								duration.getName(),
 								UMLPackage.Literals.DURATION_OBSERVATION);
 
-						EList events = durationObservation.getEvents();
-						EList firstEvents = durationObservation
+						EList<NamedElement> events = durationObservation
+							.getEvents();
+						EList<Boolean> firstEvents = durationObservation
 							.getFirstEvents();
 
-						for (Iterator v = values.iterator(); v.hasNext();) {
-							Object value = v.next();
+						for (Object value : values) {
 
 							if (value instanceof String) {
 								EObject eObject = resource
 									.getEObject((String) value);
 
 								if (eObject instanceof NamedElement) {
-									events.add(eObject);
+									events.add((NamedElement) eObject);
 									firstEvents.add(isFirstEvent);
 								}
 							}
@@ -539,6 +538,7 @@
 				return super.caseDuration(duration);
 			}
 
+			@Override
 			public Object caseElement(Element element) {
 				EAnnotation keywordsAnnotation = element
 					.getEAnnotation("keywords"); //$NON-NLS-1$
@@ -553,7 +553,8 @@
 				if (appliedStereotypesAnnotation != null) {
 					annotationsToRemove.add(appliedStereotypesAnnotation);
 
-					EList contents = appliedStereotypesAnnotation.getContents();
+					EList<EObject> contents = appliedStereotypesAnnotation
+						.getContents();
 
 					for (int i = contents.size(); i > 0;) {
 						InternalEObject stereotypeApplication = (InternalEObject) contents
@@ -568,13 +569,14 @@
 				return super.caseElement(element);
 			}
 
+			@Override
 			public Object caseExecutionOccurrenceSpecification(
 					ExecutionOccurrenceSpecification executionOccurrenceSpecification) {
 				org.eclipse.uml2.uml.Package nearestPackage = executionOccurrenceSpecification
 					.getNearestPackage();
 
 				if (nearestPackage != null) {
-					ExecutionEvent executionEvent = (ExecutionEvent) executionEvents
+					ExecutionEvent executionEvent = executionEvents
 						.get(nearestPackage);
 
 					if (executionEvent == null) {
@@ -592,6 +594,7 @@
 				return executionOccurrenceSpecification;
 			}
 
+			@Override
 			public Object caseExpression(Expression expression) {
 				AnyType extension = getExtension(resource, expression);
 
@@ -641,6 +644,7 @@
 				return super.caseExpression(expression);
 			}
 
+			@Override
 			public Object caseExtensionEnd(ExtensionEnd extensionEnd) {
 				String name = extensionEnd.getName();
 
@@ -662,6 +666,7 @@
 				return super.caseExtensionEnd(extensionEnd);
 			}
 
+			@Override
 			public Object caseInteractionUse(InteractionUse interactionUse) {
 				AnyType extension = getExtension(resource, interactionUse);
 
@@ -670,16 +675,18 @@
 						"argument", true); //$NON-NLS-1$
 
 					if (value instanceof InputPin) {
+						InputPin inputValue = (InputPin) value;
 						((OpaqueAction) interactionUse.createArgument(
-							((InputPin) value).getName(),
+							inputValue.getName(),
 							UMLPackage.Literals.OPAQUE_ACTION))
-							.getInputValues().add(value);
+							.getInputValues().add(inputValue);
 					}
 				}
 
 				return super.caseInteractionUse(interactionUse);
 			}
 
+			@Override
 			public Object caseMultiplicityElement(
 					MultiplicityElement multiplicityElement) {
 				AnyType extension = getExtension(resource, multiplicityElement);
@@ -697,6 +704,7 @@
 				return super.caseMultiplicityElement(multiplicityElement);
 			}
 
+			@Override
 			public Object caseMessage(Message message) {
 				AnyType extension = getExtension(resource, message);
 
@@ -728,6 +736,7 @@
 				return super.caseMessage(message);
 			}
 
+			@Override
 			public Object caseMessageEnd(MessageEnd messageEnd) {
 				AnyType extension = getExtension(resource, messageEnd);
 
@@ -758,6 +767,7 @@
 				return super.caseMessageEnd(messageEnd);
 			}
 
+			@Override
 			public Object caseMessageOccurrenceSpecification(
 					MessageOccurrenceSpecification messageOccurrenceSpecification) {
 				caseMessageEnd(messageOccurrenceSpecification);
@@ -770,7 +780,8 @@
 				Message message = messageOccurrenceSpecification.getMessage();
 
 				if (message == null) {
-					Collection values = Collections.EMPTY_LIST;
+					Collection<Object> values = Collections
+						.<Object> emptyList();
 
 					if (extension != null) {
 						values = getValues(extension.getAnyAttribute(),
@@ -789,8 +800,7 @@
 							resource));
 					} else {
 
-						for (Iterator v = values.iterator(); v.hasNext();) {
-							Object value = v.next();
+						for (Object value : values) {
 
 							if (value instanceof String) {
 								EObject eObject = resource
@@ -841,7 +851,7 @@
 							: null;
 
 						if (message.getSendEvent() == messageOccurrenceSpecification) {
-							Map nearestSendEvents = (Map) sendEvents
+							Map<NamedElement, MessageEvent> nearestSendEvents = sendEvents
 								.get(nearestPackage);
 
 							switch (message.getMessageSort().getValue()) {
@@ -868,7 +878,7 @@
 												sendEvents
 													.put(
 														nearestPackage,
-														nearestSendEvents = new HashMap());
+														nearestSendEvents = new HashMap<NamedElement, MessageEvent>());
 											}
 
 											nearestSendEvents.put(signature,
@@ -901,7 +911,7 @@
 												sendEvents
 													.put(
 														nearestPackage,
-														nearestSendEvents = new HashMap());
+														nearestSendEvents = new HashMap<NamedElement, MessageEvent>());
 											}
 
 											nearestSendEvents.put(signature,
@@ -914,7 +924,7 @@
 									break;
 							}
 						} else if (message.getReceiveEvent() == messageOccurrenceSpecification) {
-							Map nearestReceiveEvents = (Map) receiveEvents
+							Map<NamedElement, MessageEvent> nearestReceiveEvents = receiveEvents
 								.get(nearestPackage);
 
 							switch (message.getMessageSort().getValue()) {
@@ -941,7 +951,7 @@
 												receiveEvents
 													.put(
 														nearestPackage,
-														nearestReceiveEvents = new HashMap());
+														nearestReceiveEvents = new HashMap<NamedElement, MessageEvent>());
 											}
 
 											nearestReceiveEvents.put(signature,
@@ -974,7 +984,7 @@
 												receiveEvents
 													.put(
 														nearestPackage,
-														nearestReceiveEvents = new HashMap());
+														nearestReceiveEvents = new HashMap<NamedElement, MessageEvent>());
 											}
 
 											nearestReceiveEvents.put(signature,
@@ -990,7 +1000,7 @@
 					}
 
 					if (extension != null) {
-						Collection values = getValues(extension
+						Collection<Object> values = getValues(extension
 							.getAnyAttribute(), "startExec", true); //$NON-NLS-1$
 
 						if (values.isEmpty()) {
@@ -998,8 +1008,7 @@
 								"finishExec", true); //$NON-NLS-1$
 						}
 
-						for (Iterator v = values.iterator(); v.hasNext();) {
-							Object value = v.next();
+						for (Object value : values) {
 
 							if (value instanceof String) {
 								EObject eObject = resource
@@ -1041,19 +1050,19 @@
 				return messageOccurrenceSpecification;
 			}
 
+			@Override
 			public Object caseNamespace(Namespace namespace) {
 				AnyType extension = getExtension(resource, namespace);
 
 				if (extension != null) {
-					EList packageImports = namespace.getPackageImports();
+					EList<PackageImport> packageImports = namespace
+						.getPackageImports();
 
-					for (Iterator values = getValues(extension.getMixed(),
-						"packageImport", true).iterator(); values.hasNext();) { //$NON-NLS-1$
-
-						Object value = values.next();
+					for (Object value : getValues(extension.getMixed(),
+						"packageImport", true)) { //$NON-NLS-1$
 
 						if (value instanceof PackageImport) {
-							packageImports.add(value);
+							packageImports.add((PackageImport) value);
 						}
 					}
 				}
@@ -1061,6 +1070,7 @@
 				return super.caseNamespace(namespace);
 			}
 
+			@Override
 			public Object caseOccurrenceSpecification(
 					OccurrenceSpecification occurrenceSpecification) {
 
@@ -1069,7 +1079,7 @@
 						.getNearestPackage();
 
 					if (nearestPackage != null) {
-						DestructionEvent destructionEvent = (DestructionEvent) destructionEvents
+						DestructionEvent destructionEvent = destructionEvents
 							.get(nearestPackage);
 
 						if (destructionEvent == null) {
@@ -1091,6 +1101,7 @@
 				return occurrenceSpecification;
 			}
 
+			@Override
 			public Object caseOpaqueAction(OpaqueAction opaqueAction) {
 				AnyType extension = getExtension(resource, opaqueAction);
 
@@ -1125,6 +1136,7 @@
 				return super.caseOpaqueAction(opaqueAction);
 			}
 
+			@Override
 			public Object caseOpaqueExpression(OpaqueExpression opaqueExpression) {
 				AnyType extension = getExtension(resource, opaqueExpression);
 
@@ -1133,13 +1145,13 @@
 						"body", true); //$NON-NLS-1$
 
 					if (value instanceof String) {
-						opaqueExpression.getBodies().add(value);
+						opaqueExpression.getBodies().add((String) value);
 					}
 
 					Stereotype stereotype = getUML2Stereotype(opaqueExpression,
 						STEREOTYPE__EXPRESSION);
 
-					Collection values = getValues(extension.getMixed(),
+					Collection<Object> values = getValues(extension.getMixed(),
 						"operand", true); //$NON-NLS-1$
 
 					if (!values.isEmpty()) {
@@ -1147,14 +1159,17 @@
 						if (UMLUtil.safeApplyStereotype(opaqueExpression,
 							stereotype) != null) {
 
-							EList operands = (EList) opaqueExpression.getValue(
-								stereotype, TAG_DEFINITION__OPERAND);
+							@SuppressWarnings("unchecked")
+							EList<ValueSpecification> operands = (EList<ValueSpecification>) opaqueExpression
+								.getValue(stereotype, TAG_DEFINITION__OPERAND);
 
-							for (Iterator v = values.iterator(); v.hasNext();) {
+							for (Iterator<Object> v = values.iterator(); v
+								.hasNext();) {
+
 								value = v.next();
 
 								if (value instanceof ValueSpecification) {
-									operands.add(value);
+									operands.add((ValueSpecification) value);
 								}
 							}
 						}
@@ -1172,6 +1187,7 @@
 				return super.caseOpaqueExpression(opaqueExpression);
 			}
 
+			@Override
 			public Object caseOperation(Operation operation) {
 				Parameter returnResult = operation.getReturnResult();
 
@@ -1182,6 +1198,7 @@
 				return super.caseOperation(operation);
 			}
 
+			@Override
 			public Object casePackageableElement(
 					PackageableElement packageableElement) {
 				AnyType extension = getExtension(resource, packageableElement);
@@ -1199,6 +1216,7 @@
 				return super.casePackageableElement(packageableElement);
 			}
 
+			@Override
 			public Object caseProfileApplication(
 					ProfileApplication profileApplication) {
 				caseElement(profileApplication);
@@ -1241,8 +1259,9 @@
 				if (attributesAnnotation != null) {
 					attributesAnnotation.setSource(UMLPackage.eNS_URI);
 
-					EMap details = attributesAnnotation.getDetails();
-					String version = (String) details.get("version"); //$NON-NLS-1$
+					EMap<String, String> details = attributesAnnotation
+						.getDetails();
+					String version = details.get("version"); //$NON-NLS-1$
 
 					if (!UML2Util.isEmpty(version)) {
 						Profile appliedProfile = profileApplication
@@ -1258,7 +1277,8 @@
 								.getEAnnotation(UMLPackage.eNS_URI);
 
 							if (eAnnotation != null) {
-								EList contents = eAnnotation.getContents();
+								EList<EObject> contents = eAnnotation
+									.getContents();
 
 								for (int i = contents.size(); i > 0;) {
 									EPackage ePackage = (EPackage) contents
@@ -1297,6 +1317,7 @@
 				return profileApplication;
 			}
 
+			@Override
 			public Object caseProfile(Profile profile) {
 				caseNamespace(profile);
 				casePackageableElement(profile);
@@ -1317,8 +1338,9 @@
 				if (ePackagesAnnotation != null) {
 					ePackagesAnnotation.setSource(UMLPackage.eNS_URI);
 
-					new EcoreSwitch() {
+					new EcoreSwitch<Object>() {
 
+						@Override
 						public Object caseEClass(EClass eClass) {
 							EAnnotation stereotypeAnnotation = eClass
 								.getEAnnotation("stereotype"); //$NON-NLS-1$
@@ -1327,7 +1349,7 @@
 								stereotypeAnnotation
 									.setSource(UMLPackage.eNS_URI);
 
-								EList references = stereotypeAnnotation
+								EList<EObject> references = stereotypeAnnotation
 									.getReferences();
 
 								if (!references.isEmpty()) {
@@ -1336,12 +1358,9 @@
 									if (reference instanceof Stereotype) {
 										Stereotype stereotype = (Stereotype) reference;
 
-										for (Iterator ownedAttributes = stereotype
-											.getOwnedAttributes().iterator(); ownedAttributes
-											.hasNext();) {
+										for (Property ownedAttribute : stereotype
+											.getOwnedAttributes()) {
 
-											Property ownedAttribute = (Property) ownedAttributes
-												.next();
 											String name = ownedAttribute
 												.getName();
 
@@ -1380,26 +1399,24 @@
 							return super.caseEClass(eClass);
 						}
 
+						@Override
 						public Object caseEEnum(EEnum eEnum) {
 
-							for (Iterator eLiterals = eEnum.getELiterals()
-								.iterator(); eLiterals.hasNext();) {
-
-								EAnnotation enumerationLiteralAnnotation = ((EEnumLiteral) eLiterals
-									.next())
+							for (EEnumLiteral eLiteral : eEnum.getELiterals()) {
+								EAnnotation enumerationLiteralAnnotation = eLiteral
 									.getEAnnotation("enumerationLiteral"); //$NON-NLS-1$
 
 								if (enumerationLiteralAnnotation != null) {
 									annotationsToRemove
 										.add(enumerationLiteralAnnotation);
 
-									EList eEnumReferences = UML2Util
+									EList<EObject> eEnumReferences = UML2Util
 										.getEAnnotation(eEnum,
 											UMLPackage.eNS_URI, true)
 										.getReferences();
 
 									if (eEnumReferences.isEmpty()) {
-										EList eEnumLiteralReferences = enumerationLiteralAnnotation
+										EList<EObject> eEnumLiteralReferences = enumerationLiteralAnnotation
 											.getReferences();
 
 										if (!eEnumLiteralReferences.isEmpty()) {
@@ -1419,12 +1436,11 @@
 							return super.caseEEnum(eEnum);
 						}
 
+						@Override
 						public Object defaultCase(EObject eObject) {
 
-							for (Iterator eContents = eObject.eContents()
-								.iterator(); eContents.hasNext();) {
-
-								doSwitch((EObject) eContents.next());
+							for (EObject eContent : eObject.eContents()) {
+								doSwitch(eContent);
 							}
 
 							return eObject;
@@ -1435,6 +1451,7 @@
 				return profile;
 			}
 
+			@Override
 			public Object caseProperty(Property property) {
 
 				if (property.eGet(UMLPackage.Literals.PROPERTY__ASSOCIATION,
@@ -1451,6 +1468,7 @@
 				return super.caseProperty(property);
 			}
 
+			@Override
 			public Object caseRealization(Realization realization) {
 				AnyType extension = getExtension(resource, realization);
 
@@ -1462,6 +1480,7 @@
 				return super.caseRealization(realization);
 			}
 
+			@Override
 			public Object caseTemplateParameter(
 					TemplateParameter templateParameter) {
 				AnyType extension = getExtension(resource, templateParameter);
@@ -1536,6 +1555,7 @@
 				return super.caseTemplateParameter(templateParameter);
 			}
 
+			@Override
 			public Object caseTemplateSignature(
 					TemplateSignature templateSignature) {
 				AnyType extension = getExtension(resource, templateSignature);
@@ -1544,27 +1564,28 @@
 					Stereotype stereotype = getUML2Stereotype(
 						templateSignature, STEREOTYPE__TEMPLATE_SIGNATURE);
 
-					Collection values = getValues(extension.getAnyAttribute(),
-						"nestedSignature", true); //$NON-NLS-1$
+					Collection<Object> values = getValues(extension
+						.getAnyAttribute(), "nestedSignature", true); //$NON-NLS-1$
 
 					if (!values.isEmpty()) {
 
 						if (UMLUtil.safeApplyStereotype(templateSignature,
 							stereotype) != null) {
 
-							EList nestedSignatures = (EList) templateSignature
+							@SuppressWarnings("unchecked")
+							EList<TemplateSignature> nestedSignatures = (EList<TemplateSignature>) templateSignature
 								.getValue(stereotype,
 									TAG_DEFINITION__NESTED_SIGNATURE);
 
-							for (Iterator v = values.iterator(); v.hasNext();) {
-								Object value = v.next();
+							for (Object value : values) {
 
 								if (value instanceof String) {
 									EObject eObject = resource
 										.getEObject((String) value);
 
 									if (eObject instanceof TemplateSignature) {
-										nestedSignatures.add(eObject);
+										nestedSignatures
+											.add((TemplateSignature) eObject);
 									}
 								}
 							}
@@ -1588,6 +1609,7 @@
 				return super.caseTemplateSignature(templateSignature);
 			}
 
+			@Override
 			public Object caseTimeExpression(TimeExpression timeExpression) {
 				AnyType extension = getExtension(resource, timeExpression);
 
@@ -1616,11 +1638,12 @@
 				return super.caseTimeExpression(timeExpression);
 			}
 
+			@Override
 			public Object caseTransition(Transition transition) {
 				Constraint guard = transition.getGuard();
 
 				if (guard != null) {
-					EList ownedRules = transition.getOwnedRules();
+					EList<Constraint> ownedRules = transition.getOwnedRules();
 
 					if (!ownedRules.contains(guard)) {
 						ownedRules.add(guard);
@@ -1630,6 +1653,7 @@
 				return super.caseTransition(transition);
 			}
 
+			@Override
 			public Object caseTrigger(Trigger trigger) {
 				Event event = null;
 				AnyType extension = getExtension(resource, trigger);
@@ -1713,6 +1737,7 @@
 				return super.caseTrigger(trigger);
 			}
 
+			@Override
 			public Object defaultCase(EObject eObject) {
 				AnyType extension = getExtension(resource, eObject);
 
@@ -1737,22 +1762,20 @@
 					}
 				}
 
-				for (Iterator eAllReferences = eObject.eClass()
-					.getEAllReferences().iterator(); eAllReferences.hasNext();) {
-
-					EReference eReference = (EReference) eAllReferences.next();
+				for (EReference eReference : eObject.eClass()
+					.getEAllReferences()) {
 
 					if (!eReference.isDerived() && !eReference.isContainer()
 						&& !eReference.isContainment()
 						&& eObject.eIsSet(eReference)) {
 
 						if (eReference.isMany()) {
+							@SuppressWarnings("unchecked")
+							InternalEList<InternalEObject> values = (InternalEList<InternalEObject>) eObject
+								.eGet(eReference);
 
-							for (Iterator values = ((InternalEList) eObject
-								.eGet(eReference)).basicIterator(); values
-								.hasNext();) {
-
-								handleProxy((InternalEObject) values.next());
+							for (InternalEObject value : values) {
+								handleProxy(value);
 							}
 						} else {
 							handleProxy((InternalEObject) eObject.eGet(
@@ -1761,10 +1784,8 @@
 					}
 				}
 
-				for (Iterator eContents = eObject.eContents().iterator(); eContents
-					.hasNext();) {
-
-					doSwitch((EObject) eContents.next());
+				for (EObject eContent : eObject.eContents()) {
+					doSwitch(eContent);
 				}
 
 				return eObject;
@@ -1772,17 +1793,15 @@
 		};
 
 		for (int i = 0; i < resourceContents.size(); i++) {
-			umlSwitch.doSwitch((EObject) resourceContents.get(i));
+			umlSwitch.doSwitch(resourceContents.get(i));
 		}
 
-		for (Iterator atr = annotationsToRemove.iterator(); atr.hasNext();) {
-			((EAnnotation) atr.next()).setEModelElement(null);
+		for (EAnnotation eAnnotation : annotationsToRemove) {
+			eAnnotation.setEModelElement(null);
 		}
 
-		for (Iterator prs = packagesRequiringStereotypes.iterator(); prs
-			.hasNext();) {
-
-			ElementOperations.applyAllRequiredStereotypes((Element) prs.next());
+		for (org.eclipse.uml2.uml.Package package_ : packagesRequiringStereotypes) {
+			ElementOperations.applyAllRequiredStereotypes(package_);
 		}
 	}
 }
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/XMI2UMLExtendedMetaData.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/XMI2UMLExtendedMetaData.java
index 302b9a2..071b2f5 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/XMI2UMLExtendedMetaData.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/resource/XMI2UMLExtendedMetaData.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  * 
- * $Id: XMI2UMLExtendedMetaData.java,v 1.3 2006/10/18 18:30:51 khussey Exp $
+ * $Id: XMI2UMLExtendedMetaData.java,v 1.4 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.resource;
 
@@ -23,12 +23,12 @@
 public class XMI2UMLExtendedMetaData
 		extends BasicExtendedMetaData {
 
-	protected static Map uriMap = null;
+	protected static Map<URI, URI> uriMap = null;
 
-	public static Map getURIMap() {
+	public static Map<URI, URI> getURIMap() {
 
 		if (uriMap == null) {
-			uriMap = new HashMap();
+			uriMap = new HashMap<URI, URI>();
 
 			uriMap.put(URI.createURI(XMI2UMLResource.STANDARD_PROFILE_URI), URI
 				.createURI(UMLResource.STANDARD_PROFILE_URI));
@@ -43,6 +43,7 @@
 		super(registry);
 	}
 
+	@Override
 	public String getNamespace(EPackage ePackage) {
 
 		if (ePackage == UMLPackage.eINSTANCE) {
@@ -55,6 +56,7 @@
 			: namespace;
 	}
 
+	@Override
 	public EPackage getPackage(String namespace) {
 
 		return XMI2UMLResource.UML_METAMODEL_NS_URI.equals(namespace)
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLAdapterFactory.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLAdapterFactory.java
index 2a11fac..b3933b1 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLAdapterFactory.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLAdapterFactory.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLAdapterFactory.java,v 1.8 2006/05/16 15:07:26 khussey Exp $
+ * $Id: UMLAdapterFactory.java,v 1.9 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.util;
 
@@ -305,6 +305,7 @@
 	 * @return whether this factory is applicable for the type of the object.
 	 * @generated
 	 */
+	@Override
 	public boolean isFactoryForType(Object object) {
 		if (object == modelPackage) {
 			return true;
@@ -321,1018 +322,1271 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected UMLSwitch modelSwitch = new UMLSwitch() {
+	protected UMLSwitch<Adapter> modelSwitch = new UMLSwitch<Adapter>() {
 
-		public Object caseComment(Comment object) {
+		@Override
+		public Adapter caseComment(Comment object) {
 			return createCommentAdapter();
 		}
 
-		public Object caseElement(Element object) {
+		@Override
+		public Adapter caseElement(Element object) {
 			return createElementAdapter();
 		}
 
-		public Object casePackage(org.eclipse.uml2.uml.Package object) {
+		@Override
+		public Adapter casePackage(org.eclipse.uml2.uml.Package object) {
 			return createPackageAdapter();
 		}
 
-		public Object casePackageableElement(PackageableElement object) {
+		@Override
+		public Adapter casePackageableElement(PackageableElement object) {
 			return createPackageableElementAdapter();
 		}
 
-		public Object caseNamedElement(NamedElement object) {
+		@Override
+		public Adapter caseNamedElement(NamedElement object) {
 			return createNamedElementAdapter();
 		}
 
-		public Object caseDependency(Dependency object) {
+		@Override
+		public Adapter caseDependency(Dependency object) {
 			return createDependencyAdapter();
 		}
 
-		public Object caseDirectedRelationship(DirectedRelationship object) {
+		@Override
+		public Adapter caseDirectedRelationship(DirectedRelationship object) {
 			return createDirectedRelationshipAdapter();
 		}
 
-		public Object caseRelationship(Relationship object) {
+		@Override
+		public Adapter caseRelationship(Relationship object) {
 			return createRelationshipAdapter();
 		}
 
-		public Object caseNamespace(Namespace object) {
+		@Override
+		public Adapter caseNamespace(Namespace object) {
 			return createNamespaceAdapter();
 		}
 
-		public Object caseElementImport(ElementImport object) {
+		@Override
+		public Adapter caseElementImport(ElementImport object) {
 			return createElementImportAdapter();
 		}
 
-		public Object casePackageImport(PackageImport object) {
+		@Override
+		public Adapter casePackageImport(PackageImport object) {
 			return createPackageImportAdapter();
 		}
 
-		public Object caseConstraint(Constraint object) {
+		@Override
+		public Adapter caseConstraint(Constraint object) {
 			return createConstraintAdapter();
 		}
 
-		public Object caseValueSpecification(ValueSpecification object) {
+		@Override
+		public Adapter caseValueSpecification(ValueSpecification object) {
 			return createValueSpecificationAdapter();
 		}
 
-		public Object caseTypedElement(TypedElement object) {
+		@Override
+		public Adapter caseTypedElement(TypedElement object) {
 			return createTypedElementAdapter();
 		}
 
-		public Object caseType(Type object) {
+		@Override
+		public Adapter caseType(Type object) {
 			return createTypeAdapter();
 		}
 
-		public Object caseAssociation(Association object) {
+		@Override
+		public Adapter caseAssociation(Association object) {
 			return createAssociationAdapter();
 		}
 
-		public Object caseClassifier(Classifier object) {
+		@Override
+		public Adapter caseClassifier(Classifier object) {
 			return createClassifierAdapter();
 		}
 
-		public Object caseRedefinableElement(RedefinableElement object) {
+		@Override
+		public Adapter caseRedefinableElement(RedefinableElement object) {
 			return createRedefinableElementAdapter();
 		}
 
-		public Object caseTemplateableElement(TemplateableElement object) {
+		@Override
+		public Adapter caseTemplateableElement(TemplateableElement object) {
 			return createTemplateableElementAdapter();
 		}
 
-		public Object caseTemplateBinding(TemplateBinding object) {
+		@Override
+		public Adapter caseTemplateBinding(TemplateBinding object) {
 			return createTemplateBindingAdapter();
 		}
 
-		public Object caseTemplateSignature(TemplateSignature object) {
+		@Override
+		public Adapter caseTemplateSignature(TemplateSignature object) {
 			return createTemplateSignatureAdapter();
 		}
 
-		public Object caseTemplateParameter(TemplateParameter object) {
+		@Override
+		public Adapter caseTemplateParameter(TemplateParameter object) {
 			return createTemplateParameterAdapter();
 		}
 
-		public Object caseParameterableElement(ParameterableElement object) {
+		@Override
+		public Adapter caseParameterableElement(ParameterableElement object) {
 			return createParameterableElementAdapter();
 		}
 
-		public Object caseTemplateParameterSubstitution(
+		@Override
+		public Adapter caseTemplateParameterSubstitution(
 				TemplateParameterSubstitution object) {
 			return createTemplateParameterSubstitutionAdapter();
 		}
 
-		public Object caseGeneralization(Generalization object) {
+		@Override
+		public Adapter caseGeneralization(Generalization object) {
 			return createGeneralizationAdapter();
 		}
 
-		public Object caseGeneralizationSet(GeneralizationSet object) {
+		@Override
+		public Adapter caseGeneralizationSet(GeneralizationSet object) {
 			return createGeneralizationSetAdapter();
 		}
 
-		public Object caseFeature(Feature object) {
+		@Override
+		public Adapter caseFeature(Feature object) {
 			return createFeatureAdapter();
 		}
 
-		public Object caseSubstitution(Substitution object) {
+		@Override
+		public Adapter caseSubstitution(Substitution object) {
 			return createSubstitutionAdapter();
 		}
 
-		public Object caseRealization(Realization object) {
+		@Override
+		public Adapter caseRealization(Realization object) {
 			return createRealizationAdapter();
 		}
 
-		public Object caseAbstraction(Abstraction object) {
+		@Override
+		public Adapter caseAbstraction(Abstraction object) {
 			return createAbstractionAdapter();
 		}
 
-		public Object caseOpaqueExpression(OpaqueExpression object) {
+		@Override
+		public Adapter caseOpaqueExpression(OpaqueExpression object) {
 			return createOpaqueExpressionAdapter();
 		}
 
-		public Object caseParameter(Parameter object) {
+		@Override
+		public Adapter caseParameter(Parameter object) {
 			return createParameterAdapter();
 		}
 
-		public Object caseMultiplicityElement(MultiplicityElement object) {
+		@Override
+		public Adapter caseMultiplicityElement(MultiplicityElement object) {
 			return createMultiplicityElementAdapter();
 		}
 
-		public Object caseConnectableElement(ConnectableElement object) {
+		@Override
+		public Adapter caseConnectableElement(ConnectableElement object) {
 			return createConnectableElementAdapter();
 		}
 
-		public Object caseConnectorEnd(ConnectorEnd object) {
+		@Override
+		public Adapter caseConnectorEnd(ConnectorEnd object) {
 			return createConnectorEndAdapter();
 		}
 
-		public Object caseProperty(Property object) {
+		@Override
+		public Adapter caseProperty(Property object) {
 			return createPropertyAdapter();
 		}
 
-		public Object caseDeploymentTarget(DeploymentTarget object) {
+		@Override
+		public Adapter caseDeploymentTarget(DeploymentTarget object) {
 			return createDeploymentTargetAdapter();
 		}
 
-		public Object caseDeployment(Deployment object) {
+		@Override
+		public Adapter caseDeployment(Deployment object) {
 			return createDeploymentAdapter();
 		}
 
-		public Object caseDeployedArtifact(DeployedArtifact object) {
+		@Override
+		public Adapter caseDeployedArtifact(DeployedArtifact object) {
 			return createDeployedArtifactAdapter();
 		}
 
-		public Object caseDeploymentSpecification(DeploymentSpecification object) {
+		@Override
+		public Adapter caseDeploymentSpecification(
+				DeploymentSpecification object) {
 			return createDeploymentSpecificationAdapter();
 		}
 
-		public Object caseArtifact(Artifact object) {
+		@Override
+		public Adapter caseArtifact(Artifact object) {
 			return createArtifactAdapter();
 		}
 
-		public Object caseManifestation(Manifestation object) {
+		@Override
+		public Adapter caseManifestation(Manifestation object) {
 			return createManifestationAdapter();
 		}
 
-		public Object caseOperation(Operation object) {
+		@Override
+		public Adapter caseOperation(Operation object) {
 			return createOperationAdapter();
 		}
 
-		public Object caseBehavioralFeature(BehavioralFeature object) {
+		@Override
+		public Adapter caseBehavioralFeature(BehavioralFeature object) {
 			return createBehavioralFeatureAdapter();
 		}
 
-		public Object caseBehavior(Behavior object) {
+		@Override
+		public Adapter caseBehavior(Behavior object) {
 			return createBehaviorAdapter();
 		}
 
-		public Object caseClass(org.eclipse.uml2.uml.Class object) {
+		@Override
+		public Adapter caseClass(org.eclipse.uml2.uml.Class object) {
 			return createClassAdapter();
 		}
 
-		public Object caseBehavioredClassifier(BehavioredClassifier object) {
+		@Override
+		public Adapter caseBehavioredClassifier(BehavioredClassifier object) {
 			return createBehavioredClassifierAdapter();
 		}
 
-		public Object caseInterfaceRealization(InterfaceRealization object) {
+		@Override
+		public Adapter caseInterfaceRealization(InterfaceRealization object) {
 			return createInterfaceRealizationAdapter();
 		}
 
-		public Object caseInterface(Interface object) {
+		@Override
+		public Adapter caseInterface(Interface object) {
 			return createInterfaceAdapter();
 		}
 
-		public Object caseReception(Reception object) {
+		@Override
+		public Adapter caseReception(Reception object) {
 			return createReceptionAdapter();
 		}
 
-		public Object caseSignal(Signal object) {
+		@Override
+		public Adapter caseSignal(Signal object) {
 			return createSignalAdapter();
 		}
 
-		public Object caseProtocolStateMachine(ProtocolStateMachine object) {
+		@Override
+		public Adapter caseProtocolStateMachine(ProtocolStateMachine object) {
 			return createProtocolStateMachineAdapter();
 		}
 
-		public Object caseStateMachine(StateMachine object) {
+		@Override
+		public Adapter caseStateMachine(StateMachine object) {
 			return createStateMachineAdapter();
 		}
 
-		public Object caseRegion(Region object) {
+		@Override
+		public Adapter caseRegion(Region object) {
 			return createRegionAdapter();
 		}
 
-		public Object caseVertex(Vertex object) {
+		@Override
+		public Adapter caseVertex(Vertex object) {
 			return createVertexAdapter();
 		}
 
-		public Object caseTransition(Transition object) {
+		@Override
+		public Adapter caseTransition(Transition object) {
 			return createTransitionAdapter();
 		}
 
-		public Object caseTrigger(Trigger object) {
+		@Override
+		public Adapter caseTrigger(Trigger object) {
 			return createTriggerAdapter();
 		}
 
-		public Object caseEvent(Event object) {
+		@Override
+		public Adapter caseEvent(Event object) {
 			return createEventAdapter();
 		}
 
-		public Object casePort(Port object) {
+		@Override
+		public Adapter casePort(Port object) {
 			return createPortAdapter();
 		}
 
-		public Object caseState(State object) {
+		@Override
+		public Adapter caseState(State object) {
 			return createStateAdapter();
 		}
 
-		public Object caseConnectionPointReference(
+		@Override
+		public Adapter caseConnectionPointReference(
 				ConnectionPointReference object) {
 			return createConnectionPointReferenceAdapter();
 		}
 
-		public Object casePseudostate(Pseudostate object) {
+		@Override
+		public Adapter casePseudostate(Pseudostate object) {
 			return createPseudostateAdapter();
 		}
 
-		public Object caseProtocolConformance(ProtocolConformance object) {
+		@Override
+		public Adapter caseProtocolConformance(ProtocolConformance object) {
 			return createProtocolConformanceAdapter();
 		}
 
-		public Object caseEncapsulatedClassifier(EncapsulatedClassifier object) {
+		@Override
+		public Adapter caseEncapsulatedClassifier(EncapsulatedClassifier object) {
 			return createEncapsulatedClassifierAdapter();
 		}
 
-		public Object caseStructuredClassifier(StructuredClassifier object) {
+		@Override
+		public Adapter caseStructuredClassifier(StructuredClassifier object) {
 			return createStructuredClassifierAdapter();
 		}
 
-		public Object caseConnector(Connector object) {
+		@Override
+		public Adapter caseConnector(Connector object) {
 			return createConnectorAdapter();
 		}
 
-		public Object caseExtension(Extension object) {
+		@Override
+		public Adapter caseExtension(Extension object) {
 			return createExtensionAdapter();
 		}
 
-		public Object caseExtensionEnd(ExtensionEnd object) {
+		@Override
+		public Adapter caseExtensionEnd(ExtensionEnd object) {
 			return createExtensionEndAdapter();
 		}
 
-		public Object caseStereotype(Stereotype object) {
+		@Override
+		public Adapter caseStereotype(Stereotype object) {
 			return createStereotypeAdapter();
 		}
 
-		public Object caseImage(Image object) {
+		@Override
+		public Adapter caseImage(Image object) {
 			return createImageAdapter();
 		}
 
-		public Object caseProfile(Profile object) {
+		@Override
+		public Adapter caseProfile(Profile object) {
 			return createProfileAdapter();
 		}
 
-		public Object caseModel(Model object) {
+		@Override
+		public Adapter caseModel(Model object) {
 			return createModelAdapter();
 		}
 
-		public Object caseParameterSet(ParameterSet object) {
+		@Override
+		public Adapter caseParameterSet(ParameterSet object) {
 			return createParameterSetAdapter();
 		}
 
-		public Object caseDataType(DataType object) {
+		@Override
+		public Adapter caseDataType(DataType object) {
 			return createDataTypeAdapter();
 		}
 
-		public Object caseOperationTemplateParameter(
+		@Override
+		public Adapter caseOperationTemplateParameter(
 				OperationTemplateParameter object) {
 			return createOperationTemplateParameterAdapter();
 		}
 
-		public Object caseStructuralFeature(StructuralFeature object) {
+		@Override
+		public Adapter caseStructuralFeature(StructuralFeature object) {
 			return createStructuralFeatureAdapter();
 		}
 
-		public Object caseConnectableElementTemplateParameter(
+		@Override
+		public Adapter caseConnectableElementTemplateParameter(
 				ConnectableElementTemplateParameter object) {
 			return createConnectableElementTemplateParameterAdapter();
 		}
 
-		public Object caseCollaborationUse(CollaborationUse object) {
+		@Override
+		public Adapter caseCollaborationUse(CollaborationUse object) {
 			return createCollaborationUseAdapter();
 		}
 
-		public Object caseCollaboration(Collaboration object) {
+		@Override
+		public Adapter caseCollaboration(Collaboration object) {
 			return createCollaborationAdapter();
 		}
 
-		public Object caseUseCase(UseCase object) {
+		@Override
+		public Adapter caseUseCase(UseCase object) {
 			return createUseCaseAdapter();
 		}
 
-		public Object caseInclude(Include object) {
+		@Override
+		public Adapter caseInclude(Include object) {
 			return createIncludeAdapter();
 		}
 
-		public Object caseExtend(Extend object) {
+		@Override
+		public Adapter caseExtend(Extend object) {
 			return createExtendAdapter();
 		}
 
-		public Object caseExtensionPoint(ExtensionPoint object) {
+		@Override
+		public Adapter caseExtensionPoint(ExtensionPoint object) {
 			return createExtensionPointAdapter();
 		}
 
-		public Object caseRedefinableTemplateSignature(
+		@Override
+		public Adapter caseRedefinableTemplateSignature(
 				RedefinableTemplateSignature object) {
 			return createRedefinableTemplateSignatureAdapter();
 		}
 
-		public Object caseClassifierTemplateParameter(
+		@Override
+		public Adapter caseClassifierTemplateParameter(
 				ClassifierTemplateParameter object) {
 			return createClassifierTemplateParameterAdapter();
 		}
 
-		public Object caseStringExpression(StringExpression object) {
+		@Override
+		public Adapter caseStringExpression(StringExpression object) {
 			return createStringExpressionAdapter();
 		}
 
-		public Object caseExpression(Expression object) {
+		@Override
+		public Adapter caseExpression(Expression object) {
 			return createExpressionAdapter();
 		}
 
-		public Object casePackageMerge(PackageMerge object) {
+		@Override
+		public Adapter casePackageMerge(PackageMerge object) {
 			return createPackageMergeAdapter();
 		}
 
-		public Object caseProfileApplication(ProfileApplication object) {
+		@Override
+		public Adapter caseProfileApplication(ProfileApplication object) {
 			return createProfileApplicationAdapter();
 		}
 
-		public Object caseEnumeration(Enumeration object) {
+		@Override
+		public Adapter caseEnumeration(Enumeration object) {
 			return createEnumerationAdapter();
 		}
 
-		public Object caseEnumerationLiteral(EnumerationLiteral object) {
+		@Override
+		public Adapter caseEnumerationLiteral(EnumerationLiteral object) {
 			return createEnumerationLiteralAdapter();
 		}
 
-		public Object caseInstanceSpecification(InstanceSpecification object) {
+		@Override
+		public Adapter caseInstanceSpecification(InstanceSpecification object) {
 			return createInstanceSpecificationAdapter();
 		}
 
-		public Object caseSlot(Slot object) {
+		@Override
+		public Adapter caseSlot(Slot object) {
 			return createSlotAdapter();
 		}
 
-		public Object casePrimitiveType(PrimitiveType object) {
+		@Override
+		public Adapter casePrimitiveType(PrimitiveType object) {
 			return createPrimitiveTypeAdapter();
 		}
 
-		public Object caseLiteralSpecification(LiteralSpecification object) {
+		@Override
+		public Adapter caseLiteralSpecification(LiteralSpecification object) {
 			return createLiteralSpecificationAdapter();
 		}
 
-		public Object caseLiteralInteger(LiteralInteger object) {
+		@Override
+		public Adapter caseLiteralInteger(LiteralInteger object) {
 			return createLiteralIntegerAdapter();
 		}
 
-		public Object caseLiteralString(LiteralString object) {
+		@Override
+		public Adapter caseLiteralString(LiteralString object) {
 			return createLiteralStringAdapter();
 		}
 
-		public Object caseLiteralBoolean(LiteralBoolean object) {
+		@Override
+		public Adapter caseLiteralBoolean(LiteralBoolean object) {
 			return createLiteralBooleanAdapter();
 		}
 
-		public Object caseLiteralNull(LiteralNull object) {
+		@Override
+		public Adapter caseLiteralNull(LiteralNull object) {
 			return createLiteralNullAdapter();
 		}
 
-		public Object caseInstanceValue(InstanceValue object) {
+		@Override
+		public Adapter caseInstanceValue(InstanceValue object) {
 			return createInstanceValueAdapter();
 		}
 
-		public Object caseLiteralUnlimitedNatural(LiteralUnlimitedNatural object) {
+		@Override
+		public Adapter caseLiteralUnlimitedNatural(
+				LiteralUnlimitedNatural object) {
 			return createLiteralUnlimitedNaturalAdapter();
 		}
 
-		public Object caseOpaqueBehavior(OpaqueBehavior object) {
+		@Override
+		public Adapter caseOpaqueBehavior(OpaqueBehavior object) {
 			return createOpaqueBehaviorAdapter();
 		}
 
-		public Object caseFunctionBehavior(FunctionBehavior object) {
+		@Override
+		public Adapter caseFunctionBehavior(FunctionBehavior object) {
 			return createFunctionBehaviorAdapter();
 		}
 
-		public Object caseOpaqueAction(OpaqueAction object) {
+		@Override
+		public Adapter caseOpaqueAction(OpaqueAction object) {
 			return createOpaqueActionAdapter();
 		}
 
-		public Object caseAction(Action object) {
+		@Override
+		public Adapter caseAction(Action object) {
 			return createActionAdapter();
 		}
 
-		public Object caseExecutableNode(ExecutableNode object) {
+		@Override
+		public Adapter caseExecutableNode(ExecutableNode object) {
 			return createExecutableNodeAdapter();
 		}
 
-		public Object caseActivityNode(ActivityNode object) {
+		@Override
+		public Adapter caseActivityNode(ActivityNode object) {
 			return createActivityNodeAdapter();
 		}
 
-		public Object caseStructuredActivityNode(StructuredActivityNode object) {
+		@Override
+		public Adapter caseStructuredActivityNode(StructuredActivityNode object) {
 			return createStructuredActivityNodeAdapter();
 		}
 
-		public Object caseActivityGroup(ActivityGroup object) {
+		@Override
+		public Adapter caseActivityGroup(ActivityGroup object) {
 			return createActivityGroupAdapter();
 		}
 
-		public Object caseActivity(Activity object) {
+		@Override
+		public Adapter caseActivity(Activity object) {
 			return createActivityAdapter();
 		}
 
-		public Object caseVariable(Variable object) {
+		@Override
+		public Adapter caseVariable(Variable object) {
 			return createVariableAdapter();
 		}
 
-		public Object caseActivityEdge(ActivityEdge object) {
+		@Override
+		public Adapter caseActivityEdge(ActivityEdge object) {
 			return createActivityEdgeAdapter();
 		}
 
-		public Object caseActivityPartition(ActivityPartition object) {
+		@Override
+		public Adapter caseActivityPartition(ActivityPartition object) {
 			return createActivityPartitionAdapter();
 		}
 
-		public Object caseInterruptibleActivityRegion(
+		@Override
+		public Adapter caseInterruptibleActivityRegion(
 				InterruptibleActivityRegion object) {
 			return createInterruptibleActivityRegionAdapter();
 		}
 
-		public Object caseExceptionHandler(ExceptionHandler object) {
+		@Override
+		public Adapter caseExceptionHandler(ExceptionHandler object) {
 			return createExceptionHandlerAdapter();
 		}
 
-		public Object caseObjectNode(ObjectNode object) {
+		@Override
+		public Adapter caseObjectNode(ObjectNode object) {
 			return createObjectNodeAdapter();
 		}
 
-		public Object caseOutputPin(OutputPin object) {
+		@Override
+		public Adapter caseOutputPin(OutputPin object) {
 			return createOutputPinAdapter();
 		}
 
-		public Object casePin(Pin object) {
+		@Override
+		public Adapter casePin(Pin object) {
 			return createPinAdapter();
 		}
 
-		public Object caseInputPin(InputPin object) {
+		@Override
+		public Adapter caseInputPin(InputPin object) {
 			return createInputPinAdapter();
 		}
 
-		public Object caseCallAction(CallAction object) {
+		@Override
+		public Adapter caseCallAction(CallAction object) {
 			return createCallActionAdapter();
 		}
 
-		public Object caseInvocationAction(InvocationAction object) {
+		@Override
+		public Adapter caseInvocationAction(InvocationAction object) {
 			return createInvocationActionAdapter();
 		}
 
-		public Object caseSendSignalAction(SendSignalAction object) {
+		@Override
+		public Adapter caseSendSignalAction(SendSignalAction object) {
 			return createSendSignalActionAdapter();
 		}
 
-		public Object caseCallOperationAction(CallOperationAction object) {
+		@Override
+		public Adapter caseCallOperationAction(CallOperationAction object) {
 			return createCallOperationActionAdapter();
 		}
 
-		public Object caseCallBehaviorAction(CallBehaviorAction object) {
+		@Override
+		public Adapter caseCallBehaviorAction(CallBehaviorAction object) {
 			return createCallBehaviorActionAdapter();
 		}
 
-		public Object caseSequenceNode(SequenceNode object) {
+		@Override
+		public Adapter caseSequenceNode(SequenceNode object) {
 			return createSequenceNodeAdapter();
 		}
 
-		public Object caseUsage(Usage object) {
+		@Override
+		public Adapter caseUsage(Usage object) {
 			return createUsageAdapter();
 		}
 
-		public Object caseControlNode(ControlNode object) {
+		@Override
+		public Adapter caseControlNode(ControlNode object) {
 			return createControlNodeAdapter();
 		}
 
-		public Object caseControlFlow(ControlFlow object) {
+		@Override
+		public Adapter caseControlFlow(ControlFlow object) {
 			return createControlFlowAdapter();
 		}
 
-		public Object caseInitialNode(InitialNode object) {
+		@Override
+		public Adapter caseInitialNode(InitialNode object) {
 			return createInitialNodeAdapter();
 		}
 
-		public Object caseActivityParameterNode(ActivityParameterNode object) {
+		@Override
+		public Adapter caseActivityParameterNode(ActivityParameterNode object) {
 			return createActivityParameterNodeAdapter();
 		}
 
-		public Object caseValuePin(ValuePin object) {
+		@Override
+		public Adapter caseValuePin(ValuePin object) {
 			return createValuePinAdapter();
 		}
 
-		public Object caseMessage(Message object) {
+		@Override
+		public Adapter caseMessage(Message object) {
 			return createMessageAdapter();
 		}
 
-		public Object caseMessageEnd(MessageEnd object) {
+		@Override
+		public Adapter caseMessageEnd(MessageEnd object) {
 			return createMessageEndAdapter();
 		}
 
-		public Object caseInteraction(Interaction object) {
+		@Override
+		public Adapter caseInteraction(Interaction object) {
 			return createInteractionAdapter();
 		}
 
-		public Object caseInteractionFragment(InteractionFragment object) {
+		@Override
+		public Adapter caseInteractionFragment(InteractionFragment object) {
 			return createInteractionFragmentAdapter();
 		}
 
-		public Object caseLifeline(Lifeline object) {
+		@Override
+		public Adapter caseLifeline(Lifeline object) {
 			return createLifelineAdapter();
 		}
 
-		public Object casePartDecomposition(PartDecomposition object) {
+		@Override
+		public Adapter casePartDecomposition(PartDecomposition object) {
 			return createPartDecompositionAdapter();
 		}
 
-		public Object caseInteractionUse(InteractionUse object) {
+		@Override
+		public Adapter caseInteractionUse(InteractionUse object) {
 			return createInteractionUseAdapter();
 		}
 
-		public Object caseGate(Gate object) {
+		@Override
+		public Adapter caseGate(Gate object) {
 			return createGateAdapter();
 		}
 
-		public Object caseGeneralOrdering(GeneralOrdering object) {
+		@Override
+		public Adapter caseGeneralOrdering(GeneralOrdering object) {
 			return createGeneralOrderingAdapter();
 		}
 
-		public Object caseOccurrenceSpecification(OccurrenceSpecification object) {
+		@Override
+		public Adapter caseOccurrenceSpecification(
+				OccurrenceSpecification object) {
 			return createOccurrenceSpecificationAdapter();
 		}
 
-		public Object caseInteractionOperand(InteractionOperand object) {
+		@Override
+		public Adapter caseInteractionOperand(InteractionOperand object) {
 			return createInteractionOperandAdapter();
 		}
 
-		public Object caseInteractionConstraint(InteractionConstraint object) {
+		@Override
+		public Adapter caseInteractionConstraint(InteractionConstraint object) {
 			return createInteractionConstraintAdapter();
 		}
 
-		public Object caseExecutionSpecification(ExecutionSpecification object) {
+		@Override
+		public Adapter caseExecutionSpecification(ExecutionSpecification object) {
 			return createExecutionSpecificationAdapter();
 		}
 
-		public Object caseStateInvariant(StateInvariant object) {
+		@Override
+		public Adapter caseStateInvariant(StateInvariant object) {
 			return createStateInvariantAdapter();
 		}
 
-		public Object caseActionExecutionSpecification(
+		@Override
+		public Adapter caseActionExecutionSpecification(
 				ActionExecutionSpecification object) {
 			return createActionExecutionSpecificationAdapter();
 		}
 
-		public Object caseBehaviorExecutionSpecification(
+		@Override
+		public Adapter caseBehaviorExecutionSpecification(
 				BehaviorExecutionSpecification object) {
 			return createBehaviorExecutionSpecificationAdapter();
 		}
 
-		public Object caseExecutionEvent(ExecutionEvent object) {
+		@Override
+		public Adapter caseExecutionEvent(ExecutionEvent object) {
 			return createExecutionEventAdapter();
 		}
 
-		public Object caseCreationEvent(CreationEvent object) {
+		@Override
+		public Adapter caseCreationEvent(CreationEvent object) {
 			return createCreationEventAdapter();
 		}
 
-		public Object caseDestructionEvent(DestructionEvent object) {
+		@Override
+		public Adapter caseDestructionEvent(DestructionEvent object) {
 			return createDestructionEventAdapter();
 		}
 
-		public Object caseSendOperationEvent(SendOperationEvent object) {
+		@Override
+		public Adapter caseSendOperationEvent(SendOperationEvent object) {
 			return createSendOperationEventAdapter();
 		}
 
-		public Object caseMessageEvent(MessageEvent object) {
+		@Override
+		public Adapter caseMessageEvent(MessageEvent object) {
 			return createMessageEventAdapter();
 		}
 
-		public Object caseSendSignalEvent(SendSignalEvent object) {
+		@Override
+		public Adapter caseSendSignalEvent(SendSignalEvent object) {
 			return createSendSignalEventAdapter();
 		}
 
-		public Object caseMessageOccurrenceSpecification(
+		@Override
+		public Adapter caseMessageOccurrenceSpecification(
 				MessageOccurrenceSpecification object) {
 			return createMessageOccurrenceSpecificationAdapter();
 		}
 
-		public Object caseExecutionOccurrenceSpecification(
+		@Override
+		public Adapter caseExecutionOccurrenceSpecification(
 				ExecutionOccurrenceSpecification object) {
 			return createExecutionOccurrenceSpecificationAdapter();
 		}
 
-		public Object caseReceiveOperationEvent(ReceiveOperationEvent object) {
+		@Override
+		public Adapter caseReceiveOperationEvent(ReceiveOperationEvent object) {
 			return createReceiveOperationEventAdapter();
 		}
 
-		public Object caseReceiveSignalEvent(ReceiveSignalEvent object) {
+		@Override
+		public Adapter caseReceiveSignalEvent(ReceiveSignalEvent object) {
 			return createReceiveSignalEventAdapter();
 		}
 
-		public Object caseActor(Actor object) {
+		@Override
+		public Adapter caseActor(Actor object) {
 			return createActorAdapter();
 		}
 
-		public Object caseCallEvent(CallEvent object) {
+		@Override
+		public Adapter caseCallEvent(CallEvent object) {
 			return createCallEventAdapter();
 		}
 
-		public Object caseChangeEvent(ChangeEvent object) {
+		@Override
+		public Adapter caseChangeEvent(ChangeEvent object) {
 			return createChangeEventAdapter();
 		}
 
-		public Object caseSignalEvent(SignalEvent object) {
+		@Override
+		public Adapter caseSignalEvent(SignalEvent object) {
 			return createSignalEventAdapter();
 		}
 
-		public Object caseAnyReceiveEvent(AnyReceiveEvent object) {
+		@Override
+		public Adapter caseAnyReceiveEvent(AnyReceiveEvent object) {
 			return createAnyReceiveEventAdapter();
 		}
 
-		public Object caseForkNode(ForkNode object) {
+		@Override
+		public Adapter caseForkNode(ForkNode object) {
 			return createForkNodeAdapter();
 		}
 
-		public Object caseFlowFinalNode(FlowFinalNode object) {
+		@Override
+		public Adapter caseFlowFinalNode(FlowFinalNode object) {
 			return createFlowFinalNodeAdapter();
 		}
 
-		public Object caseFinalNode(FinalNode object) {
+		@Override
+		public Adapter caseFinalNode(FinalNode object) {
 			return createFinalNodeAdapter();
 		}
 
-		public Object caseCentralBufferNode(CentralBufferNode object) {
+		@Override
+		public Adapter caseCentralBufferNode(CentralBufferNode object) {
 			return createCentralBufferNodeAdapter();
 		}
 
-		public Object caseMergeNode(MergeNode object) {
+		@Override
+		public Adapter caseMergeNode(MergeNode object) {
 			return createMergeNodeAdapter();
 		}
 
-		public Object caseDecisionNode(DecisionNode object) {
+		@Override
+		public Adapter caseDecisionNode(DecisionNode object) {
 			return createDecisionNodeAdapter();
 		}
 
-		public Object caseActivityFinalNode(ActivityFinalNode object) {
+		@Override
+		public Adapter caseActivityFinalNode(ActivityFinalNode object) {
 			return createActivityFinalNodeAdapter();
 		}
 
-		public Object caseComponentRealization(ComponentRealization object) {
+		@Override
+		public Adapter caseComponentRealization(ComponentRealization object) {
 			return createComponentRealizationAdapter();
 		}
 
-		public Object caseComponent(Component object) {
+		@Override
+		public Adapter caseComponent(Component object) {
 			return createComponentAdapter();
 		}
 
-		public Object caseNode(Node object) {
+		@Override
+		public Adapter caseNode(Node object) {
 			return createNodeAdapter();
 		}
 
-		public Object caseDevice(Device object) {
+		@Override
+		public Adapter caseDevice(Device object) {
 			return createDeviceAdapter();
 		}
 
-		public Object caseExecutionEnvironment(ExecutionEnvironment object) {
+		@Override
+		public Adapter caseExecutionEnvironment(ExecutionEnvironment object) {
 			return createExecutionEnvironmentAdapter();
 		}
 
-		public Object caseCommunicationPath(CommunicationPath object) {
+		@Override
+		public Adapter caseCommunicationPath(CommunicationPath object) {
 			return createCommunicationPathAdapter();
 		}
 
-		public Object caseCombinedFragment(CombinedFragment object) {
+		@Override
+		public Adapter caseCombinedFragment(CombinedFragment object) {
 			return createCombinedFragmentAdapter();
 		}
 
-		public Object caseContinuation(Continuation object) {
+		@Override
+		public Adapter caseContinuation(Continuation object) {
 			return createContinuationAdapter();
 		}
 
-		public Object caseConsiderIgnoreFragment(ConsiderIgnoreFragment object) {
+		@Override
+		public Adapter caseConsiderIgnoreFragment(ConsiderIgnoreFragment object) {
 			return createConsiderIgnoreFragmentAdapter();
 		}
 
-		public Object caseCreateObjectAction(CreateObjectAction object) {
+		@Override
+		public Adapter caseCreateObjectAction(CreateObjectAction object) {
 			return createCreateObjectActionAdapter();
 		}
 
-		public Object caseDestroyObjectAction(DestroyObjectAction object) {
+		@Override
+		public Adapter caseDestroyObjectAction(DestroyObjectAction object) {
 			return createDestroyObjectActionAdapter();
 		}
 
-		public Object caseTestIdentityAction(TestIdentityAction object) {
+		@Override
+		public Adapter caseTestIdentityAction(TestIdentityAction object) {
 			return createTestIdentityActionAdapter();
 		}
 
-		public Object caseReadSelfAction(ReadSelfAction object) {
+		@Override
+		public Adapter caseReadSelfAction(ReadSelfAction object) {
 			return createReadSelfActionAdapter();
 		}
 
-		public Object caseStructuralFeatureAction(StructuralFeatureAction object) {
+		@Override
+		public Adapter caseStructuralFeatureAction(
+				StructuralFeatureAction object) {
 			return createStructuralFeatureActionAdapter();
 		}
 
-		public Object caseReadStructuralFeatureAction(
+		@Override
+		public Adapter caseReadStructuralFeatureAction(
 				ReadStructuralFeatureAction object) {
 			return createReadStructuralFeatureActionAdapter();
 		}
 
-		public Object caseWriteStructuralFeatureAction(
+		@Override
+		public Adapter caseWriteStructuralFeatureAction(
 				WriteStructuralFeatureAction object) {
 			return createWriteStructuralFeatureActionAdapter();
 		}
 
-		public Object caseClearStructuralFeatureAction(
+		@Override
+		public Adapter caseClearStructuralFeatureAction(
 				ClearStructuralFeatureAction object) {
 			return createClearStructuralFeatureActionAdapter();
 		}
 
-		public Object caseRemoveStructuralFeatureValueAction(
+		@Override
+		public Adapter caseRemoveStructuralFeatureValueAction(
 				RemoveStructuralFeatureValueAction object) {
 			return createRemoveStructuralFeatureValueActionAdapter();
 		}
 
-		public Object caseAddStructuralFeatureValueAction(
+		@Override
+		public Adapter caseAddStructuralFeatureValueAction(
 				AddStructuralFeatureValueAction object) {
 			return createAddStructuralFeatureValueActionAdapter();
 		}
 
-		public Object caseLinkAction(LinkAction object) {
+		@Override
+		public Adapter caseLinkAction(LinkAction object) {
 			return createLinkActionAdapter();
 		}
 
-		public Object caseLinkEndData(LinkEndData object) {
+		@Override
+		public Adapter caseLinkEndData(LinkEndData object) {
 			return createLinkEndDataAdapter();
 		}
 
-		public Object caseQualifierValue(QualifierValue object) {
+		@Override
+		public Adapter caseQualifierValue(QualifierValue object) {
 			return createQualifierValueAdapter();
 		}
 
-		public Object caseReadLinkAction(ReadLinkAction object) {
+		@Override
+		public Adapter caseReadLinkAction(ReadLinkAction object) {
 			return createReadLinkActionAdapter();
 		}
 
-		public Object caseLinkEndCreationData(LinkEndCreationData object) {
+		@Override
+		public Adapter caseLinkEndCreationData(LinkEndCreationData object) {
 			return createLinkEndCreationDataAdapter();
 		}
 
-		public Object caseCreateLinkAction(CreateLinkAction object) {
+		@Override
+		public Adapter caseCreateLinkAction(CreateLinkAction object) {
 			return createCreateLinkActionAdapter();
 		}
 
-		public Object caseWriteLinkAction(WriteLinkAction object) {
+		@Override
+		public Adapter caseWriteLinkAction(WriteLinkAction object) {
 			return createWriteLinkActionAdapter();
 		}
 
-		public Object caseDestroyLinkAction(DestroyLinkAction object) {
+		@Override
+		public Adapter caseDestroyLinkAction(DestroyLinkAction object) {
 			return createDestroyLinkActionAdapter();
 		}
 
-		public Object caseLinkEndDestructionData(LinkEndDestructionData object) {
+		@Override
+		public Adapter caseLinkEndDestructionData(LinkEndDestructionData object) {
 			return createLinkEndDestructionDataAdapter();
 		}
 
-		public Object caseClearAssociationAction(ClearAssociationAction object) {
+		@Override
+		public Adapter caseClearAssociationAction(ClearAssociationAction object) {
 			return createClearAssociationActionAdapter();
 		}
 
-		public Object caseBroadcastSignalAction(BroadcastSignalAction object) {
+		@Override
+		public Adapter caseBroadcastSignalAction(BroadcastSignalAction object) {
 			return createBroadcastSignalActionAdapter();
 		}
 
-		public Object caseSendObjectAction(SendObjectAction object) {
+		@Override
+		public Adapter caseSendObjectAction(SendObjectAction object) {
 			return createSendObjectActionAdapter();
 		}
 
-		public Object caseValueSpecificationAction(
+		@Override
+		public Adapter caseValueSpecificationAction(
 				ValueSpecificationAction object) {
 			return createValueSpecificationActionAdapter();
 		}
 
-		public Object caseTimeExpression(TimeExpression object) {
+		@Override
+		public Adapter caseTimeExpression(TimeExpression object) {
 			return createTimeExpressionAdapter();
 		}
 
-		public Object caseObservation(Observation object) {
+		@Override
+		public Adapter caseObservation(Observation object) {
 			return createObservationAdapter();
 		}
 
-		public Object caseDuration(Duration object) {
+		@Override
+		public Adapter caseDuration(Duration object) {
 			return createDurationAdapter();
 		}
 
-		public Object caseDurationInterval(DurationInterval object) {
+		@Override
+		public Adapter caseDurationInterval(DurationInterval object) {
 			return createDurationIntervalAdapter();
 		}
 
-		public Object caseInterval(Interval object) {
+		@Override
+		public Adapter caseInterval(Interval object) {
 			return createIntervalAdapter();
 		}
 
-		public Object caseTimeConstraint(TimeConstraint object) {
+		@Override
+		public Adapter caseTimeConstraint(TimeConstraint object) {
 			return createTimeConstraintAdapter();
 		}
 
-		public Object caseIntervalConstraint(IntervalConstraint object) {
+		@Override
+		public Adapter caseIntervalConstraint(IntervalConstraint object) {
 			return createIntervalConstraintAdapter();
 		}
 
-		public Object caseTimeInterval(TimeInterval object) {
+		@Override
+		public Adapter caseTimeInterval(TimeInterval object) {
 			return createTimeIntervalAdapter();
 		}
 
-		public Object caseDurationConstraint(DurationConstraint object) {
+		@Override
+		public Adapter caseDurationConstraint(DurationConstraint object) {
 			return createDurationConstraintAdapter();
 		}
 
-		public Object caseTimeObservation(TimeObservation object) {
+		@Override
+		public Adapter caseTimeObservation(TimeObservation object) {
 			return createTimeObservationAdapter();
 		}
 
-		public Object caseDurationObservation(DurationObservation object) {
+		@Override
+		public Adapter caseDurationObservation(DurationObservation object) {
 			return createDurationObservationAdapter();
 		}
 
-		public Object caseFinalState(FinalState object) {
+		@Override
+		public Adapter caseFinalState(FinalState object) {
 			return createFinalStateAdapter();
 		}
 
-		public Object caseTimeEvent(TimeEvent object) {
+		@Override
+		public Adapter caseTimeEvent(TimeEvent object) {
 			return createTimeEventAdapter();
 		}
 
-		public Object caseVariableAction(VariableAction object) {
+		@Override
+		public Adapter caseVariableAction(VariableAction object) {
 			return createVariableActionAdapter();
 		}
 
-		public Object caseReadVariableAction(ReadVariableAction object) {
+		@Override
+		public Adapter caseReadVariableAction(ReadVariableAction object) {
 			return createReadVariableActionAdapter();
 		}
 
-		public Object caseWriteVariableAction(WriteVariableAction object) {
+		@Override
+		public Adapter caseWriteVariableAction(WriteVariableAction object) {
 			return createWriteVariableActionAdapter();
 		}
 
-		public Object caseClearVariableAction(ClearVariableAction object) {
+		@Override
+		public Adapter caseClearVariableAction(ClearVariableAction object) {
 			return createClearVariableActionAdapter();
 		}
 
-		public Object caseAddVariableValueAction(AddVariableValueAction object) {
+		@Override
+		public Adapter caseAddVariableValueAction(AddVariableValueAction object) {
 			return createAddVariableValueActionAdapter();
 		}
 
-		public Object caseRemoveVariableValueAction(
+		@Override
+		public Adapter caseRemoveVariableValueAction(
 				RemoveVariableValueAction object) {
 			return createRemoveVariableValueActionAdapter();
 		}
 
-		public Object caseRaiseExceptionAction(RaiseExceptionAction object) {
+		@Override
+		public Adapter caseRaiseExceptionAction(RaiseExceptionAction object) {
 			return createRaiseExceptionActionAdapter();
 		}
 
-		public Object caseActionInputPin(ActionInputPin object) {
+		@Override
+		public Adapter caseActionInputPin(ActionInputPin object) {
 			return createActionInputPinAdapter();
 		}
 
-		public Object caseInformationItem(InformationItem object) {
+		@Override
+		public Adapter caseInformationItem(InformationItem object) {
 			return createInformationItemAdapter();
 		}
 
-		public Object caseInformationFlow(InformationFlow object) {
+		@Override
+		public Adapter caseInformationFlow(InformationFlow object) {
 			return createInformationFlowAdapter();
 		}
 
-		public Object caseReadExtentAction(ReadExtentAction object) {
+		@Override
+		public Adapter caseReadExtentAction(ReadExtentAction object) {
 			return createReadExtentActionAdapter();
 		}
 
-		public Object caseReclassifyObjectAction(ReclassifyObjectAction object) {
+		@Override
+		public Adapter caseReclassifyObjectAction(ReclassifyObjectAction object) {
 			return createReclassifyObjectActionAdapter();
 		}
 
-		public Object caseReadIsClassifiedObjectAction(
+		@Override
+		public Adapter caseReadIsClassifiedObjectAction(
 				ReadIsClassifiedObjectAction object) {
 			return createReadIsClassifiedObjectActionAdapter();
 		}
 
-		public Object caseStartClassifierBehaviorAction(
+		@Override
+		public Adapter caseStartClassifierBehaviorAction(
 				StartClassifierBehaviorAction object) {
 			return createStartClassifierBehaviorActionAdapter();
 		}
 
-		public Object caseReadLinkObjectEndAction(ReadLinkObjectEndAction object) {
+		@Override
+		public Adapter caseReadLinkObjectEndAction(
+				ReadLinkObjectEndAction object) {
 			return createReadLinkObjectEndActionAdapter();
 		}
 
-		public Object caseReadLinkObjectEndQualifierAction(
+		@Override
+		public Adapter caseReadLinkObjectEndQualifierAction(
 				ReadLinkObjectEndQualifierAction object) {
 			return createReadLinkObjectEndQualifierActionAdapter();
 		}
 
-		public Object caseCreateLinkObjectAction(CreateLinkObjectAction object) {
+		@Override
+		public Adapter caseCreateLinkObjectAction(CreateLinkObjectAction object) {
 			return createCreateLinkObjectActionAdapter();
 		}
 
-		public Object caseAcceptEventAction(AcceptEventAction object) {
+		@Override
+		public Adapter caseAcceptEventAction(AcceptEventAction object) {
 			return createAcceptEventActionAdapter();
 		}
 
-		public Object caseAcceptCallAction(AcceptCallAction object) {
+		@Override
+		public Adapter caseAcceptCallAction(AcceptCallAction object) {
 			return createAcceptCallActionAdapter();
 		}
 
-		public Object caseReplyAction(ReplyAction object) {
+		@Override
+		public Adapter caseReplyAction(ReplyAction object) {
 			return createReplyActionAdapter();
 		}
 
-		public Object caseUnmarshallAction(UnmarshallAction object) {
+		@Override
+		public Adapter caseUnmarshallAction(UnmarshallAction object) {
 			return createUnmarshallActionAdapter();
 		}
 
-		public Object caseReduceAction(ReduceAction object) {
+		@Override
+		public Adapter caseReduceAction(ReduceAction object) {
 			return createReduceActionAdapter();
 		}
 
-		public Object caseJoinNode(JoinNode object) {
+		@Override
+		public Adapter caseJoinNode(JoinNode object) {
 			return createJoinNodeAdapter();
 		}
 
-		public Object caseDataStoreNode(DataStoreNode object) {
+		@Override
+		public Adapter caseDataStoreNode(DataStoreNode object) {
 			return createDataStoreNodeAdapter();
 		}
 
-		public Object caseObjectFlow(ObjectFlow object) {
+		@Override
+		public Adapter caseObjectFlow(ObjectFlow object) {
 			return createObjectFlowAdapter();
 		}
 
-		public Object caseConditionalNode(ConditionalNode object) {
+		@Override
+		public Adapter caseConditionalNode(ConditionalNode object) {
 			return createConditionalNodeAdapter();
 		}
 
-		public Object caseClause(Clause object) {
+		@Override
+		public Adapter caseClause(Clause object) {
 			return createClauseAdapter();
 		}
 
-		public Object caseLoopNode(LoopNode object) {
+		@Override
+		public Adapter caseLoopNode(LoopNode object) {
 			return createLoopNodeAdapter();
 		}
 
-		public Object caseExpansionNode(ExpansionNode object) {
+		@Override
+		public Adapter caseExpansionNode(ExpansionNode object) {
 			return createExpansionNodeAdapter();
 		}
 
-		public Object caseExpansionRegion(ExpansionRegion object) {
+		@Override
+		public Adapter caseExpansionRegion(ExpansionRegion object) {
 			return createExpansionRegionAdapter();
 		}
 
-		public Object caseProtocolTransition(ProtocolTransition object) {
+		@Override
+		public Adapter caseProtocolTransition(ProtocolTransition object) {
 			return createProtocolTransitionAdapter();
 		}
 
-		public Object caseAssociationClass(AssociationClass object) {
+		@Override
+		public Adapter caseAssociationClass(AssociationClass object) {
 			return createAssociationClassAdapter();
 		}
 
-		public Object caseEModelElement(EModelElement object) {
+		@Override
+		public Adapter caseEModelElement(EModelElement object) {
 			return createEModelElementAdapter();
 		}
 
-		public Object defaultCase(EObject object) {
+		@Override
+		public Adapter defaultCase(EObject object) {
 			return createEObjectAdapter();
 		}
 	};
@@ -1345,8 +1599,9 @@
 	 * @return the adapter for the <code>target</code>.
 	 * @generated
 	 */
+	@Override
 	public Adapter createAdapter(Notifier target) {
-		return (Adapter) modelSwitch.doSwitch((EObject) target);
+		return modelSwitch.doSwitch((EObject) target);
 	}
 
 	/**
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLSwitch.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLSwitch.java
index f41a38e..bd28849 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLSwitch.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLSwitch.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLSwitch.java,v 1.11 2006/05/16 15:07:26 khussey Exp $
+ * $Id: UMLSwitch.java,v 1.12 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.util;
 
@@ -277,7 +277,7 @@
  * @see org.eclipse.uml2.uml.UMLPackage
  * @generated
  */
-public class UMLSwitch {
+public class UMLSwitch<T> {
 
 	/**
 	 * The cached model package
@@ -306,7 +306,7 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	public Object doSwitch(EObject theEObject) {
+	public T doSwitch(EObject theEObject) {
 		return doSwitch(theEObject.eClass(), theEObject);
 	}
 
@@ -317,14 +317,14 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected Object doSwitch(EClass theEClass, EObject theEObject) {
+	protected T doSwitch(EClass theEClass, EObject theEObject) {
 		if (theEClass.eContainer() == modelPackage) {
 			return doSwitch(theEClass.getClassifierID(), theEObject);
 		} else {
-			List eSuperTypes = theEClass.getESuperTypes();
+			List<EClass> eSuperTypes = theEClass.getESuperTypes();
 			return eSuperTypes.isEmpty()
 				? defaultCase(theEObject)
-				: doSwitch((EClass) eSuperTypes.get(0), theEObject);
+				: doSwitch(eSuperTypes.get(0), theEObject);
 		}
 	}
 
@@ -335,11 +335,11 @@
 	 * @return the first non-null result returned by a <code>caseXXX</code> call.
 	 * @generated
 	 */
-	protected Object doSwitch(int classifierID, EObject theEObject) {
+	protected T doSwitch(int classifierID, EObject theEObject) {
 		switch (classifierID) {
 			case UMLPackage.COMMENT : {
 				Comment comment = (Comment) theEObject;
-				Object result = caseComment(comment);
+				T result = caseComment(comment);
 				if (result == null)
 					result = caseElement(comment);
 				if (result == null)
@@ -350,7 +350,7 @@
 			}
 			case UMLPackage.ELEMENT : {
 				Element element = (Element) theEObject;
-				Object result = caseElement(element);
+				T result = caseElement(element);
 				if (result == null)
 					result = caseEModelElement(element);
 				if (result == null)
@@ -359,7 +359,7 @@
 			}
 			case UMLPackage.PACKAGE : {
 				org.eclipse.uml2.uml.Package package_ = (org.eclipse.uml2.uml.Package) theEObject;
-				Object result = casePackage(package_);
+				T result = casePackage(package_);
 				if (result == null)
 					result = caseNamespace(package_);
 				if (result == null)
@@ -380,7 +380,7 @@
 			}
 			case UMLPackage.PACKAGEABLE_ELEMENT : {
 				PackageableElement packageableElement = (PackageableElement) theEObject;
-				Object result = casePackageableElement(packageableElement);
+				T result = casePackageableElement(packageableElement);
 				if (result == null)
 					result = caseNamedElement(packageableElement);
 				if (result == null)
@@ -395,7 +395,7 @@
 			}
 			case UMLPackage.NAMED_ELEMENT : {
 				NamedElement namedElement = (NamedElement) theEObject;
-				Object result = caseNamedElement(namedElement);
+				T result = caseNamedElement(namedElement);
 				if (result == null)
 					result = caseElement(namedElement);
 				if (result == null)
@@ -406,7 +406,7 @@
 			}
 			case UMLPackage.DEPENDENCY : {
 				Dependency dependency = (Dependency) theEObject;
-				Object result = caseDependency(dependency);
+				T result = caseDependency(dependency);
 				if (result == null)
 					result = casePackageableElement(dependency);
 				if (result == null)
@@ -427,7 +427,7 @@
 			}
 			case UMLPackage.DIRECTED_RELATIONSHIP : {
 				DirectedRelationship directedRelationship = (DirectedRelationship) theEObject;
-				Object result = caseDirectedRelationship(directedRelationship);
+				T result = caseDirectedRelationship(directedRelationship);
 				if (result == null)
 					result = caseRelationship(directedRelationship);
 				if (result == null)
@@ -440,7 +440,7 @@
 			}
 			case UMLPackage.RELATIONSHIP : {
 				Relationship relationship = (Relationship) theEObject;
-				Object result = caseRelationship(relationship);
+				T result = caseRelationship(relationship);
 				if (result == null)
 					result = caseElement(relationship);
 				if (result == null)
@@ -451,7 +451,7 @@
 			}
 			case UMLPackage.NAMESPACE : {
 				Namespace namespace = (Namespace) theEObject;
-				Object result = caseNamespace(namespace);
+				T result = caseNamespace(namespace);
 				if (result == null)
 					result = caseNamedElement(namespace);
 				if (result == null)
@@ -464,7 +464,7 @@
 			}
 			case UMLPackage.ELEMENT_IMPORT : {
 				ElementImport elementImport = (ElementImport) theEObject;
-				Object result = caseElementImport(elementImport);
+				T result = caseElementImport(elementImport);
 				if (result == null)
 					result = caseDirectedRelationship(elementImport);
 				if (result == null)
@@ -479,7 +479,7 @@
 			}
 			case UMLPackage.PACKAGE_IMPORT : {
 				PackageImport packageImport = (PackageImport) theEObject;
-				Object result = casePackageImport(packageImport);
+				T result = casePackageImport(packageImport);
 				if (result == null)
 					result = caseDirectedRelationship(packageImport);
 				if (result == null)
@@ -494,7 +494,7 @@
 			}
 			case UMLPackage.CONSTRAINT : {
 				Constraint constraint = (Constraint) theEObject;
-				Object result = caseConstraint(constraint);
+				T result = caseConstraint(constraint);
 				if (result == null)
 					result = casePackageableElement(constraint);
 				if (result == null)
@@ -511,7 +511,7 @@
 			}
 			case UMLPackage.VALUE_SPECIFICATION : {
 				ValueSpecification valueSpecification = (ValueSpecification) theEObject;
-				Object result = caseValueSpecification(valueSpecification);
+				T result = caseValueSpecification(valueSpecification);
 				if (result == null)
 					result = casePackageableElement(valueSpecification);
 				if (result == null)
@@ -530,7 +530,7 @@
 			}
 			case UMLPackage.TYPED_ELEMENT : {
 				TypedElement typedElement = (TypedElement) theEObject;
-				Object result = caseTypedElement(typedElement);
+				T result = caseTypedElement(typedElement);
 				if (result == null)
 					result = caseNamedElement(typedElement);
 				if (result == null)
@@ -543,7 +543,7 @@
 			}
 			case UMLPackage.TYPE : {
 				Type type = (Type) theEObject;
-				Object result = caseType(type);
+				T result = caseType(type);
 				if (result == null)
 					result = casePackageableElement(type);
 				if (result == null)
@@ -560,7 +560,7 @@
 			}
 			case UMLPackage.ASSOCIATION : {
 				Association association = (Association) theEObject;
-				Object result = caseAssociation(association);
+				T result = caseAssociation(association);
 				if (result == null)
 					result = caseClassifier(association);
 				if (result == null)
@@ -589,7 +589,7 @@
 			}
 			case UMLPackage.CLASSIFIER : {
 				Classifier classifier = (Classifier) theEObject;
-				Object result = caseClassifier(classifier);
+				T result = caseClassifier(classifier);
 				if (result == null)
 					result = caseNamespace(classifier);
 				if (result == null)
@@ -614,7 +614,7 @@
 			}
 			case UMLPackage.REDEFINABLE_ELEMENT : {
 				RedefinableElement redefinableElement = (RedefinableElement) theEObject;
-				Object result = caseRedefinableElement(redefinableElement);
+				T result = caseRedefinableElement(redefinableElement);
 				if (result == null)
 					result = caseNamedElement(redefinableElement);
 				if (result == null)
@@ -627,7 +627,7 @@
 			}
 			case UMLPackage.TEMPLATEABLE_ELEMENT : {
 				TemplateableElement templateableElement = (TemplateableElement) theEObject;
-				Object result = caseTemplateableElement(templateableElement);
+				T result = caseTemplateableElement(templateableElement);
 				if (result == null)
 					result = caseElement(templateableElement);
 				if (result == null)
@@ -638,7 +638,7 @@
 			}
 			case UMLPackage.TEMPLATE_BINDING : {
 				TemplateBinding templateBinding = (TemplateBinding) theEObject;
-				Object result = caseTemplateBinding(templateBinding);
+				T result = caseTemplateBinding(templateBinding);
 				if (result == null)
 					result = caseDirectedRelationship(templateBinding);
 				if (result == null)
@@ -653,7 +653,7 @@
 			}
 			case UMLPackage.TEMPLATE_SIGNATURE : {
 				TemplateSignature templateSignature = (TemplateSignature) theEObject;
-				Object result = caseTemplateSignature(templateSignature);
+				T result = caseTemplateSignature(templateSignature);
 				if (result == null)
 					result = caseElement(templateSignature);
 				if (result == null)
@@ -664,7 +664,7 @@
 			}
 			case UMLPackage.TEMPLATE_PARAMETER : {
 				TemplateParameter templateParameter = (TemplateParameter) theEObject;
-				Object result = caseTemplateParameter(templateParameter);
+				T result = caseTemplateParameter(templateParameter);
 				if (result == null)
 					result = caseElement(templateParameter);
 				if (result == null)
@@ -675,7 +675,7 @@
 			}
 			case UMLPackage.PARAMETERABLE_ELEMENT : {
 				ParameterableElement parameterableElement = (ParameterableElement) theEObject;
-				Object result = caseParameterableElement(parameterableElement);
+				T result = caseParameterableElement(parameterableElement);
 				if (result == null)
 					result = caseElement(parameterableElement);
 				if (result == null)
@@ -686,7 +686,7 @@
 			}
 			case UMLPackage.TEMPLATE_PARAMETER_SUBSTITUTION : {
 				TemplateParameterSubstitution templateParameterSubstitution = (TemplateParameterSubstitution) theEObject;
-				Object result = caseTemplateParameterSubstitution(templateParameterSubstitution);
+				T result = caseTemplateParameterSubstitution(templateParameterSubstitution);
 				if (result == null)
 					result = caseElement(templateParameterSubstitution);
 				if (result == null)
@@ -697,7 +697,7 @@
 			}
 			case UMLPackage.GENERALIZATION : {
 				Generalization generalization = (Generalization) theEObject;
-				Object result = caseGeneralization(generalization);
+				T result = caseGeneralization(generalization);
 				if (result == null)
 					result = caseDirectedRelationship(generalization);
 				if (result == null)
@@ -712,7 +712,7 @@
 			}
 			case UMLPackage.GENERALIZATION_SET : {
 				GeneralizationSet generalizationSet = (GeneralizationSet) theEObject;
-				Object result = caseGeneralizationSet(generalizationSet);
+				T result = caseGeneralizationSet(generalizationSet);
 				if (result == null)
 					result = casePackageableElement(generalizationSet);
 				if (result == null)
@@ -729,7 +729,7 @@
 			}
 			case UMLPackage.FEATURE : {
 				Feature feature = (Feature) theEObject;
-				Object result = caseFeature(feature);
+				T result = caseFeature(feature);
 				if (result == null)
 					result = caseRedefinableElement(feature);
 				if (result == null)
@@ -744,7 +744,7 @@
 			}
 			case UMLPackage.SUBSTITUTION : {
 				Substitution substitution = (Substitution) theEObject;
-				Object result = caseSubstitution(substitution);
+				T result = caseSubstitution(substitution);
 				if (result == null)
 					result = caseRealization(substitution);
 				if (result == null)
@@ -771,7 +771,7 @@
 			}
 			case UMLPackage.REALIZATION : {
 				Realization realization = (Realization) theEObject;
-				Object result = caseRealization(realization);
+				T result = caseRealization(realization);
 				if (result == null)
 					result = caseAbstraction(realization);
 				if (result == null)
@@ -796,7 +796,7 @@
 			}
 			case UMLPackage.ABSTRACTION : {
 				Abstraction abstraction = (Abstraction) theEObject;
-				Object result = caseAbstraction(abstraction);
+				T result = caseAbstraction(abstraction);
 				if (result == null)
 					result = caseDependency(abstraction);
 				if (result == null)
@@ -819,7 +819,7 @@
 			}
 			case UMLPackage.OPAQUE_EXPRESSION : {
 				OpaqueExpression opaqueExpression = (OpaqueExpression) theEObject;
-				Object result = caseOpaqueExpression(opaqueExpression);
+				T result = caseOpaqueExpression(opaqueExpression);
 				if (result == null)
 					result = caseValueSpecification(opaqueExpression);
 				if (result == null)
@@ -840,7 +840,7 @@
 			}
 			case UMLPackage.PARAMETER : {
 				Parameter parameter = (Parameter) theEObject;
-				Object result = caseParameter(parameter);
+				T result = caseParameter(parameter);
 				if (result == null)
 					result = caseConnectableElement(parameter);
 				if (result == null)
@@ -861,7 +861,7 @@
 			}
 			case UMLPackage.MULTIPLICITY_ELEMENT : {
 				MultiplicityElement multiplicityElement = (MultiplicityElement) theEObject;
-				Object result = caseMultiplicityElement(multiplicityElement);
+				T result = caseMultiplicityElement(multiplicityElement);
 				if (result == null)
 					result = caseElement(multiplicityElement);
 				if (result == null)
@@ -872,7 +872,7 @@
 			}
 			case UMLPackage.CONNECTABLE_ELEMENT : {
 				ConnectableElement connectableElement = (ConnectableElement) theEObject;
-				Object result = caseConnectableElement(connectableElement);
+				T result = caseConnectableElement(connectableElement);
 				if (result == null)
 					result = caseTypedElement(connectableElement);
 				if (result == null)
@@ -889,7 +889,7 @@
 			}
 			case UMLPackage.CONNECTOR_END : {
 				ConnectorEnd connectorEnd = (ConnectorEnd) theEObject;
-				Object result = caseConnectorEnd(connectorEnd);
+				T result = caseConnectorEnd(connectorEnd);
 				if (result == null)
 					result = caseMultiplicityElement(connectorEnd);
 				if (result == null)
@@ -902,7 +902,7 @@
 			}
 			case UMLPackage.PROPERTY : {
 				Property property = (Property) theEObject;
-				Object result = caseProperty(property);
+				T result = caseProperty(property);
 				if (result == null)
 					result = caseStructuralFeature(property);
 				if (result == null)
@@ -933,7 +933,7 @@
 			}
 			case UMLPackage.DEPLOYMENT_TARGET : {
 				DeploymentTarget deploymentTarget = (DeploymentTarget) theEObject;
-				Object result = caseDeploymentTarget(deploymentTarget);
+				T result = caseDeploymentTarget(deploymentTarget);
 				if (result == null)
 					result = caseNamedElement(deploymentTarget);
 				if (result == null)
@@ -946,7 +946,7 @@
 			}
 			case UMLPackage.DEPLOYMENT : {
 				Deployment deployment = (Deployment) theEObject;
-				Object result = caseDeployment(deployment);
+				T result = caseDeployment(deployment);
 				if (result == null)
 					result = caseDependency(deployment);
 				if (result == null)
@@ -969,7 +969,7 @@
 			}
 			case UMLPackage.DEPLOYED_ARTIFACT : {
 				DeployedArtifact deployedArtifact = (DeployedArtifact) theEObject;
-				Object result = caseDeployedArtifact(deployedArtifact);
+				T result = caseDeployedArtifact(deployedArtifact);
 				if (result == null)
 					result = caseNamedElement(deployedArtifact);
 				if (result == null)
@@ -982,7 +982,7 @@
 			}
 			case UMLPackage.DEPLOYMENT_SPECIFICATION : {
 				DeploymentSpecification deploymentSpecification = (DeploymentSpecification) theEObject;
-				Object result = caseDeploymentSpecification(deploymentSpecification);
+				T result = caseDeploymentSpecification(deploymentSpecification);
 				if (result == null)
 					result = caseArtifact(deploymentSpecification);
 				if (result == null)
@@ -1013,7 +1013,7 @@
 			}
 			case UMLPackage.ARTIFACT : {
 				Artifact artifact = (Artifact) theEObject;
-				Object result = caseArtifact(artifact);
+				T result = caseArtifact(artifact);
 				if (result == null)
 					result = caseClassifier(artifact);
 				if (result == null)
@@ -1042,7 +1042,7 @@
 			}
 			case UMLPackage.MANIFESTATION : {
 				Manifestation manifestation = (Manifestation) theEObject;
-				Object result = caseManifestation(manifestation);
+				T result = caseManifestation(manifestation);
 				if (result == null)
 					result = caseAbstraction(manifestation);
 				if (result == null)
@@ -1067,7 +1067,7 @@
 			}
 			case UMLPackage.OPERATION : {
 				Operation operation = (Operation) theEObject;
-				Object result = caseOperation(operation);
+				T result = caseOperation(operation);
 				if (result == null)
 					result = caseBehavioralFeature(operation);
 				if (result == null)
@@ -1092,7 +1092,7 @@
 			}
 			case UMLPackage.BEHAVIORAL_FEATURE : {
 				BehavioralFeature behavioralFeature = (BehavioralFeature) theEObject;
-				Object result = caseBehavioralFeature(behavioralFeature);
+				T result = caseBehavioralFeature(behavioralFeature);
 				if (result == null)
 					result = caseNamespace(behavioralFeature);
 				if (result == null)
@@ -1111,7 +1111,7 @@
 			}
 			case UMLPackage.BEHAVIOR : {
 				Behavior behavior = (Behavior) theEObject;
-				Object result = caseBehavior(behavior);
+				T result = caseBehavior(behavior);
 				if (result == null)
 					result = caseClass(behavior);
 				if (result == null)
@@ -1146,7 +1146,7 @@
 			}
 			case UMLPackage.CLASS : {
 				org.eclipse.uml2.uml.Class class_ = (org.eclipse.uml2.uml.Class) theEObject;
-				Object result = caseClass(class_);
+				T result = caseClass(class_);
 				if (result == null)
 					result = caseEncapsulatedClassifier(class_);
 				if (result == null)
@@ -1179,7 +1179,7 @@
 			}
 			case UMLPackage.BEHAVIORED_CLASSIFIER : {
 				BehavioredClassifier behavioredClassifier = (BehavioredClassifier) theEObject;
-				Object result = caseBehavioredClassifier(behavioredClassifier);
+				T result = caseBehavioredClassifier(behavioredClassifier);
 				if (result == null)
 					result = caseClassifier(behavioredClassifier);
 				if (result == null)
@@ -1206,7 +1206,7 @@
 			}
 			case UMLPackage.INTERFACE_REALIZATION : {
 				InterfaceRealization interfaceRealization = (InterfaceRealization) theEObject;
-				Object result = caseInterfaceRealization(interfaceRealization);
+				T result = caseInterfaceRealization(interfaceRealization);
 				if (result == null)
 					result = caseRealization(interfaceRealization);
 				if (result == null)
@@ -1233,7 +1233,7 @@
 			}
 			case UMLPackage.INTERFACE : {
 				Interface interface_ = (Interface) theEObject;
-				Object result = caseInterface(interface_);
+				T result = caseInterface(interface_);
 				if (result == null)
 					result = caseClassifier(interface_);
 				if (result == null)
@@ -1260,7 +1260,7 @@
 			}
 			case UMLPackage.RECEPTION : {
 				Reception reception = (Reception) theEObject;
-				Object result = caseReception(reception);
+				T result = caseReception(reception);
 				if (result == null)
 					result = caseBehavioralFeature(reception);
 				if (result == null)
@@ -1281,7 +1281,7 @@
 			}
 			case UMLPackage.SIGNAL : {
 				Signal signal = (Signal) theEObject;
-				Object result = caseSignal(signal);
+				T result = caseSignal(signal);
 				if (result == null)
 					result = caseClassifier(signal);
 				if (result == null)
@@ -1308,7 +1308,7 @@
 			}
 			case UMLPackage.PROTOCOL_STATE_MACHINE : {
 				ProtocolStateMachine protocolStateMachine = (ProtocolStateMachine) theEObject;
-				Object result = caseProtocolStateMachine(protocolStateMachine);
+				T result = caseProtocolStateMachine(protocolStateMachine);
 				if (result == null)
 					result = caseStateMachine(protocolStateMachine);
 				if (result == null)
@@ -1347,7 +1347,7 @@
 			}
 			case UMLPackage.STATE_MACHINE : {
 				StateMachine stateMachine = (StateMachine) theEObject;
-				Object result = caseStateMachine(stateMachine);
+				T result = caseStateMachine(stateMachine);
 				if (result == null)
 					result = caseBehavior(stateMachine);
 				if (result == null)
@@ -1384,7 +1384,7 @@
 			}
 			case UMLPackage.REGION : {
 				Region region = (Region) theEObject;
-				Object result = caseRegion(region);
+				T result = caseRegion(region);
 				if (result == null)
 					result = caseNamespace(region);
 				if (result == null)
@@ -1401,7 +1401,7 @@
 			}
 			case UMLPackage.VERTEX : {
 				Vertex vertex = (Vertex) theEObject;
-				Object result = caseVertex(vertex);
+				T result = caseVertex(vertex);
 				if (result == null)
 					result = caseNamedElement(vertex);
 				if (result == null)
@@ -1414,7 +1414,7 @@
 			}
 			case UMLPackage.TRANSITION : {
 				Transition transition = (Transition) theEObject;
-				Object result = caseTransition(transition);
+				T result = caseTransition(transition);
 				if (result == null)
 					result = caseNamespace(transition);
 				if (result == null)
@@ -1431,7 +1431,7 @@
 			}
 			case UMLPackage.TRIGGER : {
 				Trigger trigger = (Trigger) theEObject;
-				Object result = caseTrigger(trigger);
+				T result = caseTrigger(trigger);
 				if (result == null)
 					result = caseNamedElement(trigger);
 				if (result == null)
@@ -1444,7 +1444,7 @@
 			}
 			case UMLPackage.EVENT : {
 				Event event = (Event) theEObject;
-				Object result = caseEvent(event);
+				T result = caseEvent(event);
 				if (result == null)
 					result = casePackageableElement(event);
 				if (result == null)
@@ -1461,7 +1461,7 @@
 			}
 			case UMLPackage.PORT : {
 				Port port = (Port) theEObject;
-				Object result = casePort(port);
+				T result = casePort(port);
 				if (result == null)
 					result = caseProperty(port);
 				if (result == null)
@@ -1494,7 +1494,7 @@
 			}
 			case UMLPackage.STATE : {
 				State state = (State) theEObject;
-				Object result = caseState(state);
+				T result = caseState(state);
 				if (result == null)
 					result = caseNamespace(state);
 				if (result == null)
@@ -1513,7 +1513,7 @@
 			}
 			case UMLPackage.CONNECTION_POINT_REFERENCE : {
 				ConnectionPointReference connectionPointReference = (ConnectionPointReference) theEObject;
-				Object result = caseConnectionPointReference(connectionPointReference);
+				T result = caseConnectionPointReference(connectionPointReference);
 				if (result == null)
 					result = caseVertex(connectionPointReference);
 				if (result == null)
@@ -1528,7 +1528,7 @@
 			}
 			case UMLPackage.PSEUDOSTATE : {
 				Pseudostate pseudostate = (Pseudostate) theEObject;
-				Object result = casePseudostate(pseudostate);
+				T result = casePseudostate(pseudostate);
 				if (result == null)
 					result = caseVertex(pseudostate);
 				if (result == null)
@@ -1543,7 +1543,7 @@
 			}
 			case UMLPackage.PROTOCOL_CONFORMANCE : {
 				ProtocolConformance protocolConformance = (ProtocolConformance) theEObject;
-				Object result = caseProtocolConformance(protocolConformance);
+				T result = caseProtocolConformance(protocolConformance);
 				if (result == null)
 					result = caseDirectedRelationship(protocolConformance);
 				if (result == null)
@@ -1558,7 +1558,7 @@
 			}
 			case UMLPackage.ENCAPSULATED_CLASSIFIER : {
 				EncapsulatedClassifier encapsulatedClassifier = (EncapsulatedClassifier) theEObject;
-				Object result = caseEncapsulatedClassifier(encapsulatedClassifier);
+				T result = caseEncapsulatedClassifier(encapsulatedClassifier);
 				if (result == null)
 					result = caseStructuredClassifier(encapsulatedClassifier);
 				if (result == null)
@@ -1587,7 +1587,7 @@
 			}
 			case UMLPackage.STRUCTURED_CLASSIFIER : {
 				StructuredClassifier structuredClassifier = (StructuredClassifier) theEObject;
-				Object result = caseStructuredClassifier(structuredClassifier);
+				T result = caseStructuredClassifier(structuredClassifier);
 				if (result == null)
 					result = caseClassifier(structuredClassifier);
 				if (result == null)
@@ -1614,7 +1614,7 @@
 			}
 			case UMLPackage.CONNECTOR : {
 				Connector connector = (Connector) theEObject;
-				Object result = caseConnector(connector);
+				T result = caseConnector(connector);
 				if (result == null)
 					result = caseFeature(connector);
 				if (result == null)
@@ -1631,7 +1631,7 @@
 			}
 			case UMLPackage.EXTENSION : {
 				Extension extension = (Extension) theEObject;
-				Object result = caseExtension(extension);
+				T result = caseExtension(extension);
 				if (result == null)
 					result = caseAssociation(extension);
 				if (result == null)
@@ -1662,7 +1662,7 @@
 			}
 			case UMLPackage.EXTENSION_END : {
 				ExtensionEnd extensionEnd = (ExtensionEnd) theEObject;
-				Object result = caseExtensionEnd(extensionEnd);
+				T result = caseExtensionEnd(extensionEnd);
 				if (result == null)
 					result = caseProperty(extensionEnd);
 				if (result == null)
@@ -1695,7 +1695,7 @@
 			}
 			case UMLPackage.STEREOTYPE : {
 				Stereotype stereotype = (Stereotype) theEObject;
-				Object result = caseStereotype(stereotype);
+				T result = caseStereotype(stereotype);
 				if (result == null)
 					result = caseClass(stereotype);
 				if (result == null)
@@ -1730,7 +1730,7 @@
 			}
 			case UMLPackage.IMAGE : {
 				Image image = (Image) theEObject;
-				Object result = caseImage(image);
+				T result = caseImage(image);
 				if (result == null)
 					result = caseElement(image);
 				if (result == null)
@@ -1741,7 +1741,7 @@
 			}
 			case UMLPackage.PROFILE : {
 				Profile profile = (Profile) theEObject;
-				Object result = caseProfile(profile);
+				T result = caseProfile(profile);
 				if (result == null)
 					result = casePackage(profile);
 				if (result == null)
@@ -1764,7 +1764,7 @@
 			}
 			case UMLPackage.MODEL : {
 				Model model = (Model) theEObject;
-				Object result = caseModel(model);
+				T result = caseModel(model);
 				if (result == null)
 					result = casePackage(model);
 				if (result == null)
@@ -1787,7 +1787,7 @@
 			}
 			case UMLPackage.PARAMETER_SET : {
 				ParameterSet parameterSet = (ParameterSet) theEObject;
-				Object result = caseParameterSet(parameterSet);
+				T result = caseParameterSet(parameterSet);
 				if (result == null)
 					result = caseNamedElement(parameterSet);
 				if (result == null)
@@ -1800,7 +1800,7 @@
 			}
 			case UMLPackage.DATA_TYPE : {
 				DataType dataType = (DataType) theEObject;
-				Object result = caseDataType(dataType);
+				T result = caseDataType(dataType);
 				if (result == null)
 					result = caseClassifier(dataType);
 				if (result == null)
@@ -1827,7 +1827,7 @@
 			}
 			case UMLPackage.OPERATION_TEMPLATE_PARAMETER : {
 				OperationTemplateParameter operationTemplateParameter = (OperationTemplateParameter) theEObject;
-				Object result = caseOperationTemplateParameter(operationTemplateParameter);
+				T result = caseOperationTemplateParameter(operationTemplateParameter);
 				if (result == null)
 					result = caseTemplateParameter(operationTemplateParameter);
 				if (result == null)
@@ -1840,7 +1840,7 @@
 			}
 			case UMLPackage.STRUCTURAL_FEATURE : {
 				StructuralFeature structuralFeature = (StructuralFeature) theEObject;
-				Object result = caseStructuralFeature(structuralFeature);
+				T result = caseStructuralFeature(structuralFeature);
 				if (result == null)
 					result = caseFeature(structuralFeature);
 				if (result == null)
@@ -1861,7 +1861,7 @@
 			}
 			case UMLPackage.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER : {
 				ConnectableElementTemplateParameter connectableElementTemplateParameter = (ConnectableElementTemplateParameter) theEObject;
-				Object result = caseConnectableElementTemplateParameter(connectableElementTemplateParameter);
+				T result = caseConnectableElementTemplateParameter(connectableElementTemplateParameter);
 				if (result == null)
 					result = caseTemplateParameter(connectableElementTemplateParameter);
 				if (result == null)
@@ -1874,7 +1874,7 @@
 			}
 			case UMLPackage.COLLABORATION_USE : {
 				CollaborationUse collaborationUse = (CollaborationUse) theEObject;
-				Object result = caseCollaborationUse(collaborationUse);
+				T result = caseCollaborationUse(collaborationUse);
 				if (result == null)
 					result = caseNamedElement(collaborationUse);
 				if (result == null)
@@ -1887,7 +1887,7 @@
 			}
 			case UMLPackage.COLLABORATION : {
 				Collaboration collaboration = (Collaboration) theEObject;
-				Object result = caseCollaboration(collaboration);
+				T result = caseCollaboration(collaboration);
 				if (result == null)
 					result = caseBehavioredClassifier(collaboration);
 				if (result == null)
@@ -1918,7 +1918,7 @@
 			}
 			case UMLPackage.USE_CASE : {
 				UseCase useCase = (UseCase) theEObject;
-				Object result = caseUseCase(useCase);
+				T result = caseUseCase(useCase);
 				if (result == null)
 					result = caseBehavioredClassifier(useCase);
 				if (result == null)
@@ -1947,7 +1947,7 @@
 			}
 			case UMLPackage.INCLUDE : {
 				Include include = (Include) theEObject;
-				Object result = caseInclude(include);
+				T result = caseInclude(include);
 				if (result == null)
 					result = caseNamedElement(include);
 				if (result == null)
@@ -1964,7 +1964,7 @@
 			}
 			case UMLPackage.EXTEND : {
 				Extend extend = (Extend) theEObject;
-				Object result = caseExtend(extend);
+				T result = caseExtend(extend);
 				if (result == null)
 					result = caseNamedElement(extend);
 				if (result == null)
@@ -1981,7 +1981,7 @@
 			}
 			case UMLPackage.EXTENSION_POINT : {
 				ExtensionPoint extensionPoint = (ExtensionPoint) theEObject;
-				Object result = caseExtensionPoint(extensionPoint);
+				T result = caseExtensionPoint(extensionPoint);
 				if (result == null)
 					result = caseRedefinableElement(extensionPoint);
 				if (result == null)
@@ -1996,7 +1996,7 @@
 			}
 			case UMLPackage.REDEFINABLE_TEMPLATE_SIGNATURE : {
 				RedefinableTemplateSignature redefinableTemplateSignature = (RedefinableTemplateSignature) theEObject;
-				Object result = caseRedefinableTemplateSignature(redefinableTemplateSignature);
+				T result = caseRedefinableTemplateSignature(redefinableTemplateSignature);
 				if (result == null)
 					result = caseRedefinableElement(redefinableTemplateSignature);
 				if (result == null)
@@ -2013,7 +2013,7 @@
 			}
 			case UMLPackage.CLASSIFIER_TEMPLATE_PARAMETER : {
 				ClassifierTemplateParameter classifierTemplateParameter = (ClassifierTemplateParameter) theEObject;
-				Object result = caseClassifierTemplateParameter(classifierTemplateParameter);
+				T result = caseClassifierTemplateParameter(classifierTemplateParameter);
 				if (result == null)
 					result = caseTemplateParameter(classifierTemplateParameter);
 				if (result == null)
@@ -2026,7 +2026,7 @@
 			}
 			case UMLPackage.STRING_EXPRESSION : {
 				StringExpression stringExpression = (StringExpression) theEObject;
-				Object result = caseStringExpression(stringExpression);
+				T result = caseStringExpression(stringExpression);
 				if (result == null)
 					result = caseExpression(stringExpression);
 				if (result == null)
@@ -2051,7 +2051,7 @@
 			}
 			case UMLPackage.EXPRESSION : {
 				Expression expression = (Expression) theEObject;
-				Object result = caseExpression(expression);
+				T result = caseExpression(expression);
 				if (result == null)
 					result = caseValueSpecification(expression);
 				if (result == null)
@@ -2072,7 +2072,7 @@
 			}
 			case UMLPackage.PACKAGE_MERGE : {
 				PackageMerge packageMerge = (PackageMerge) theEObject;
-				Object result = casePackageMerge(packageMerge);
+				T result = casePackageMerge(packageMerge);
 				if (result == null)
 					result = caseDirectedRelationship(packageMerge);
 				if (result == null)
@@ -2087,7 +2087,7 @@
 			}
 			case UMLPackage.PROFILE_APPLICATION : {
 				ProfileApplication profileApplication = (ProfileApplication) theEObject;
-				Object result = caseProfileApplication(profileApplication);
+				T result = caseProfileApplication(profileApplication);
 				if (result == null)
 					result = caseDirectedRelationship(profileApplication);
 				if (result == null)
@@ -2102,7 +2102,7 @@
 			}
 			case UMLPackage.ENUMERATION : {
 				Enumeration enumeration = (Enumeration) theEObject;
-				Object result = caseEnumeration(enumeration);
+				T result = caseEnumeration(enumeration);
 				if (result == null)
 					result = caseDataType(enumeration);
 				if (result == null)
@@ -2131,7 +2131,7 @@
 			}
 			case UMLPackage.ENUMERATION_LITERAL : {
 				EnumerationLiteral enumerationLiteral = (EnumerationLiteral) theEObject;
-				Object result = caseEnumerationLiteral(enumerationLiteral);
+				T result = caseEnumerationLiteral(enumerationLiteral);
 				if (result == null)
 					result = caseInstanceSpecification(enumerationLiteral);
 				if (result == null)
@@ -2154,7 +2154,7 @@
 			}
 			case UMLPackage.INSTANCE_SPECIFICATION : {
 				InstanceSpecification instanceSpecification = (InstanceSpecification) theEObject;
-				Object result = caseInstanceSpecification(instanceSpecification);
+				T result = caseInstanceSpecification(instanceSpecification);
 				if (result == null)
 					result = caseDeploymentTarget(instanceSpecification);
 				if (result == null)
@@ -2175,7 +2175,7 @@
 			}
 			case UMLPackage.SLOT : {
 				Slot slot = (Slot) theEObject;
-				Object result = caseSlot(slot);
+				T result = caseSlot(slot);
 				if (result == null)
 					result = caseElement(slot);
 				if (result == null)
@@ -2186,7 +2186,7 @@
 			}
 			case UMLPackage.PRIMITIVE_TYPE : {
 				PrimitiveType primitiveType = (PrimitiveType) theEObject;
-				Object result = casePrimitiveType(primitiveType);
+				T result = casePrimitiveType(primitiveType);
 				if (result == null)
 					result = caseDataType(primitiveType);
 				if (result == null)
@@ -2215,7 +2215,7 @@
 			}
 			case UMLPackage.LITERAL_SPECIFICATION : {
 				LiteralSpecification literalSpecification = (LiteralSpecification) theEObject;
-				Object result = caseLiteralSpecification(literalSpecification);
+				T result = caseLiteralSpecification(literalSpecification);
 				if (result == null)
 					result = caseValueSpecification(literalSpecification);
 				if (result == null)
@@ -2236,7 +2236,7 @@
 			}
 			case UMLPackage.LITERAL_INTEGER : {
 				LiteralInteger literalInteger = (LiteralInteger) theEObject;
-				Object result = caseLiteralInteger(literalInteger);
+				T result = caseLiteralInteger(literalInteger);
 				if (result == null)
 					result = caseLiteralSpecification(literalInteger);
 				if (result == null)
@@ -2259,7 +2259,7 @@
 			}
 			case UMLPackage.LITERAL_STRING : {
 				LiteralString literalString = (LiteralString) theEObject;
-				Object result = caseLiteralString(literalString);
+				T result = caseLiteralString(literalString);
 				if (result == null)
 					result = caseLiteralSpecification(literalString);
 				if (result == null)
@@ -2282,7 +2282,7 @@
 			}
 			case UMLPackage.LITERAL_BOOLEAN : {
 				LiteralBoolean literalBoolean = (LiteralBoolean) theEObject;
-				Object result = caseLiteralBoolean(literalBoolean);
+				T result = caseLiteralBoolean(literalBoolean);
 				if (result == null)
 					result = caseLiteralSpecification(literalBoolean);
 				if (result == null)
@@ -2305,7 +2305,7 @@
 			}
 			case UMLPackage.LITERAL_NULL : {
 				LiteralNull literalNull = (LiteralNull) theEObject;
-				Object result = caseLiteralNull(literalNull);
+				T result = caseLiteralNull(literalNull);
 				if (result == null)
 					result = caseLiteralSpecification(literalNull);
 				if (result == null)
@@ -2328,7 +2328,7 @@
 			}
 			case UMLPackage.INSTANCE_VALUE : {
 				InstanceValue instanceValue = (InstanceValue) theEObject;
-				Object result = caseInstanceValue(instanceValue);
+				T result = caseInstanceValue(instanceValue);
 				if (result == null)
 					result = caseValueSpecification(instanceValue);
 				if (result == null)
@@ -2349,7 +2349,7 @@
 			}
 			case UMLPackage.LITERAL_UNLIMITED_NATURAL : {
 				LiteralUnlimitedNatural literalUnlimitedNatural = (LiteralUnlimitedNatural) theEObject;
-				Object result = caseLiteralUnlimitedNatural(literalUnlimitedNatural);
+				T result = caseLiteralUnlimitedNatural(literalUnlimitedNatural);
 				if (result == null)
 					result = caseLiteralSpecification(literalUnlimitedNatural);
 				if (result == null)
@@ -2372,7 +2372,7 @@
 			}
 			case UMLPackage.OPAQUE_BEHAVIOR : {
 				OpaqueBehavior opaqueBehavior = (OpaqueBehavior) theEObject;
-				Object result = caseOpaqueBehavior(opaqueBehavior);
+				T result = caseOpaqueBehavior(opaqueBehavior);
 				if (result == null)
 					result = caseBehavior(opaqueBehavior);
 				if (result == null)
@@ -2409,7 +2409,7 @@
 			}
 			case UMLPackage.FUNCTION_BEHAVIOR : {
 				FunctionBehavior functionBehavior = (FunctionBehavior) theEObject;
-				Object result = caseFunctionBehavior(functionBehavior);
+				T result = caseFunctionBehavior(functionBehavior);
 				if (result == null)
 					result = caseOpaqueBehavior(functionBehavior);
 				if (result == null)
@@ -2448,7 +2448,7 @@
 			}
 			case UMLPackage.OPAQUE_ACTION : {
 				OpaqueAction opaqueAction = (OpaqueAction) theEObject;
-				Object result = caseOpaqueAction(opaqueAction);
+				T result = caseOpaqueAction(opaqueAction);
 				if (result == null)
 					result = caseAction(opaqueAction);
 				if (result == null)
@@ -2469,7 +2469,7 @@
 			}
 			case UMLPackage.ACTION : {
 				Action action = (Action) theEObject;
-				Object result = caseAction(action);
+				T result = caseAction(action);
 				if (result == null)
 					result = caseExecutableNode(action);
 				if (result == null)
@@ -2488,7 +2488,7 @@
 			}
 			case UMLPackage.EXECUTABLE_NODE : {
 				ExecutableNode executableNode = (ExecutableNode) theEObject;
-				Object result = caseExecutableNode(executableNode);
+				T result = caseExecutableNode(executableNode);
 				if (result == null)
 					result = caseActivityNode(executableNode);
 				if (result == null)
@@ -2505,7 +2505,7 @@
 			}
 			case UMLPackage.ACTIVITY_NODE : {
 				ActivityNode activityNode = (ActivityNode) theEObject;
-				Object result = caseActivityNode(activityNode);
+				T result = caseActivityNode(activityNode);
 				if (result == null)
 					result = caseRedefinableElement(activityNode);
 				if (result == null)
@@ -2520,7 +2520,7 @@
 			}
 			case UMLPackage.STRUCTURED_ACTIVITY_NODE : {
 				StructuredActivityNode structuredActivityNode = (StructuredActivityNode) theEObject;
-				Object result = caseStructuredActivityNode(structuredActivityNode);
+				T result = caseStructuredActivityNode(structuredActivityNode);
 				if (result == null)
 					result = caseAction(structuredActivityNode);
 				if (result == null)
@@ -2545,7 +2545,7 @@
 			}
 			case UMLPackage.ACTIVITY_GROUP : {
 				ActivityGroup activityGroup = (ActivityGroup) theEObject;
-				Object result = caseActivityGroup(activityGroup);
+				T result = caseActivityGroup(activityGroup);
 				if (result == null)
 					result = caseElement(activityGroup);
 				if (result == null)
@@ -2556,7 +2556,7 @@
 			}
 			case UMLPackage.ACTIVITY : {
 				Activity activity = (Activity) theEObject;
-				Object result = caseActivity(activity);
+				T result = caseActivity(activity);
 				if (result == null)
 					result = caseBehavior(activity);
 				if (result == null)
@@ -2593,7 +2593,7 @@
 			}
 			case UMLPackage.VARIABLE : {
 				Variable variable = (Variable) theEObject;
-				Object result = caseVariable(variable);
+				T result = caseVariable(variable);
 				if (result == null)
 					result = caseConnectableElement(variable);
 				if (result == null)
@@ -2614,7 +2614,7 @@
 			}
 			case UMLPackage.ACTIVITY_EDGE : {
 				ActivityEdge activityEdge = (ActivityEdge) theEObject;
-				Object result = caseActivityEdge(activityEdge);
+				T result = caseActivityEdge(activityEdge);
 				if (result == null)
 					result = caseRedefinableElement(activityEdge);
 				if (result == null)
@@ -2629,7 +2629,7 @@
 			}
 			case UMLPackage.ACTIVITY_PARTITION : {
 				ActivityPartition activityPartition = (ActivityPartition) theEObject;
-				Object result = caseActivityPartition(activityPartition);
+				T result = caseActivityPartition(activityPartition);
 				if (result == null)
 					result = caseNamedElement(activityPartition);
 				if (result == null)
@@ -2644,7 +2644,7 @@
 			}
 			case UMLPackage.INTERRUPTIBLE_ACTIVITY_REGION : {
 				InterruptibleActivityRegion interruptibleActivityRegion = (InterruptibleActivityRegion) theEObject;
-				Object result = caseInterruptibleActivityRegion(interruptibleActivityRegion);
+				T result = caseInterruptibleActivityRegion(interruptibleActivityRegion);
 				if (result == null)
 					result = caseActivityGroup(interruptibleActivityRegion);
 				if (result == null)
@@ -2657,7 +2657,7 @@
 			}
 			case UMLPackage.EXCEPTION_HANDLER : {
 				ExceptionHandler exceptionHandler = (ExceptionHandler) theEObject;
-				Object result = caseExceptionHandler(exceptionHandler);
+				T result = caseExceptionHandler(exceptionHandler);
 				if (result == null)
 					result = caseElement(exceptionHandler);
 				if (result == null)
@@ -2668,7 +2668,7 @@
 			}
 			case UMLPackage.OBJECT_NODE : {
 				ObjectNode objectNode = (ObjectNode) theEObject;
-				Object result = caseObjectNode(objectNode);
+				T result = caseObjectNode(objectNode);
 				if (result == null)
 					result = caseActivityNode(objectNode);
 				if (result == null)
@@ -2687,7 +2687,7 @@
 			}
 			case UMLPackage.OUTPUT_PIN : {
 				OutputPin outputPin = (OutputPin) theEObject;
-				Object result = caseOutputPin(outputPin);
+				T result = caseOutputPin(outputPin);
 				if (result == null)
 					result = casePin(outputPin);
 				if (result == null)
@@ -2712,7 +2712,7 @@
 			}
 			case UMLPackage.PIN : {
 				Pin pin = (Pin) theEObject;
-				Object result = casePin(pin);
+				T result = casePin(pin);
 				if (result == null)
 					result = caseObjectNode(pin);
 				if (result == null)
@@ -2735,7 +2735,7 @@
 			}
 			case UMLPackage.INPUT_PIN : {
 				InputPin inputPin = (InputPin) theEObject;
-				Object result = caseInputPin(inputPin);
+				T result = caseInputPin(inputPin);
 				if (result == null)
 					result = casePin(inputPin);
 				if (result == null)
@@ -2760,7 +2760,7 @@
 			}
 			case UMLPackage.CALL_ACTION : {
 				CallAction callAction = (CallAction) theEObject;
-				Object result = caseCallAction(callAction);
+				T result = caseCallAction(callAction);
 				if (result == null)
 					result = caseInvocationAction(callAction);
 				if (result == null)
@@ -2783,7 +2783,7 @@
 			}
 			case UMLPackage.INVOCATION_ACTION : {
 				InvocationAction invocationAction = (InvocationAction) theEObject;
-				Object result = caseInvocationAction(invocationAction);
+				T result = caseInvocationAction(invocationAction);
 				if (result == null)
 					result = caseAction(invocationAction);
 				if (result == null)
@@ -2804,7 +2804,7 @@
 			}
 			case UMLPackage.SEND_SIGNAL_ACTION : {
 				SendSignalAction sendSignalAction = (SendSignalAction) theEObject;
-				Object result = caseSendSignalAction(sendSignalAction);
+				T result = caseSendSignalAction(sendSignalAction);
 				if (result == null)
 					result = caseInvocationAction(sendSignalAction);
 				if (result == null)
@@ -2827,7 +2827,7 @@
 			}
 			case UMLPackage.CALL_OPERATION_ACTION : {
 				CallOperationAction callOperationAction = (CallOperationAction) theEObject;
-				Object result = caseCallOperationAction(callOperationAction);
+				T result = caseCallOperationAction(callOperationAction);
 				if (result == null)
 					result = caseCallAction(callOperationAction);
 				if (result == null)
@@ -2852,7 +2852,7 @@
 			}
 			case UMLPackage.CALL_BEHAVIOR_ACTION : {
 				CallBehaviorAction callBehaviorAction = (CallBehaviorAction) theEObject;
-				Object result = caseCallBehaviorAction(callBehaviorAction);
+				T result = caseCallBehaviorAction(callBehaviorAction);
 				if (result == null)
 					result = caseCallAction(callBehaviorAction);
 				if (result == null)
@@ -2877,7 +2877,7 @@
 			}
 			case UMLPackage.SEQUENCE_NODE : {
 				SequenceNode sequenceNode = (SequenceNode) theEObject;
-				Object result = caseSequenceNode(sequenceNode);
+				T result = caseSequenceNode(sequenceNode);
 				if (result == null)
 					result = caseStructuredActivityNode(sequenceNode);
 				if (result == null)
@@ -2904,7 +2904,7 @@
 			}
 			case UMLPackage.USAGE : {
 				Usage usage = (Usage) theEObject;
-				Object result = caseUsage(usage);
+				T result = caseUsage(usage);
 				if (result == null)
 					result = caseDependency(usage);
 				if (result == null)
@@ -2927,7 +2927,7 @@
 			}
 			case UMLPackage.CONTROL_NODE : {
 				ControlNode controlNode = (ControlNode) theEObject;
-				Object result = caseControlNode(controlNode);
+				T result = caseControlNode(controlNode);
 				if (result == null)
 					result = caseActivityNode(controlNode);
 				if (result == null)
@@ -2944,7 +2944,7 @@
 			}
 			case UMLPackage.CONTROL_FLOW : {
 				ControlFlow controlFlow = (ControlFlow) theEObject;
-				Object result = caseControlFlow(controlFlow);
+				T result = caseControlFlow(controlFlow);
 				if (result == null)
 					result = caseActivityEdge(controlFlow);
 				if (result == null)
@@ -2961,7 +2961,7 @@
 			}
 			case UMLPackage.INITIAL_NODE : {
 				InitialNode initialNode = (InitialNode) theEObject;
-				Object result = caseInitialNode(initialNode);
+				T result = caseInitialNode(initialNode);
 				if (result == null)
 					result = caseControlNode(initialNode);
 				if (result == null)
@@ -2980,7 +2980,7 @@
 			}
 			case UMLPackage.ACTIVITY_PARAMETER_NODE : {
 				ActivityParameterNode activityParameterNode = (ActivityParameterNode) theEObject;
-				Object result = caseActivityParameterNode(activityParameterNode);
+				T result = caseActivityParameterNode(activityParameterNode);
 				if (result == null)
 					result = caseObjectNode(activityParameterNode);
 				if (result == null)
@@ -3001,7 +3001,7 @@
 			}
 			case UMLPackage.VALUE_PIN : {
 				ValuePin valuePin = (ValuePin) theEObject;
-				Object result = caseValuePin(valuePin);
+				T result = caseValuePin(valuePin);
 				if (result == null)
 					result = caseInputPin(valuePin);
 				if (result == null)
@@ -3028,7 +3028,7 @@
 			}
 			case UMLPackage.MESSAGE : {
 				Message message = (Message) theEObject;
-				Object result = caseMessage(message);
+				T result = caseMessage(message);
 				if (result == null)
 					result = caseNamedElement(message);
 				if (result == null)
@@ -3041,7 +3041,7 @@
 			}
 			case UMLPackage.MESSAGE_END : {
 				MessageEnd messageEnd = (MessageEnd) theEObject;
-				Object result = caseMessageEnd(messageEnd);
+				T result = caseMessageEnd(messageEnd);
 				if (result == null)
 					result = caseNamedElement(messageEnd);
 				if (result == null)
@@ -3054,7 +3054,7 @@
 			}
 			case UMLPackage.INTERACTION : {
 				Interaction interaction = (Interaction) theEObject;
-				Object result = caseInteraction(interaction);
+				T result = caseInteraction(interaction);
 				if (result == null)
 					result = caseBehavior(interaction);
 				if (result == null)
@@ -3093,7 +3093,7 @@
 			}
 			case UMLPackage.INTERACTION_FRAGMENT : {
 				InteractionFragment interactionFragment = (InteractionFragment) theEObject;
-				Object result = caseInteractionFragment(interactionFragment);
+				T result = caseInteractionFragment(interactionFragment);
 				if (result == null)
 					result = caseNamedElement(interactionFragment);
 				if (result == null)
@@ -3106,7 +3106,7 @@
 			}
 			case UMLPackage.LIFELINE : {
 				Lifeline lifeline = (Lifeline) theEObject;
-				Object result = caseLifeline(lifeline);
+				T result = caseLifeline(lifeline);
 				if (result == null)
 					result = caseNamedElement(lifeline);
 				if (result == null)
@@ -3119,7 +3119,7 @@
 			}
 			case UMLPackage.PART_DECOMPOSITION : {
 				PartDecomposition partDecomposition = (PartDecomposition) theEObject;
-				Object result = casePartDecomposition(partDecomposition);
+				T result = casePartDecomposition(partDecomposition);
 				if (result == null)
 					result = caseInteractionUse(partDecomposition);
 				if (result == null)
@@ -3136,7 +3136,7 @@
 			}
 			case UMLPackage.INTERACTION_USE : {
 				InteractionUse interactionUse = (InteractionUse) theEObject;
-				Object result = caseInteractionUse(interactionUse);
+				T result = caseInteractionUse(interactionUse);
 				if (result == null)
 					result = caseInteractionFragment(interactionUse);
 				if (result == null)
@@ -3151,7 +3151,7 @@
 			}
 			case UMLPackage.GATE : {
 				Gate gate = (Gate) theEObject;
-				Object result = caseGate(gate);
+				T result = caseGate(gate);
 				if (result == null)
 					result = caseMessageEnd(gate);
 				if (result == null)
@@ -3166,7 +3166,7 @@
 			}
 			case UMLPackage.GENERAL_ORDERING : {
 				GeneralOrdering generalOrdering = (GeneralOrdering) theEObject;
-				Object result = caseGeneralOrdering(generalOrdering);
+				T result = caseGeneralOrdering(generalOrdering);
 				if (result == null)
 					result = caseNamedElement(generalOrdering);
 				if (result == null)
@@ -3179,7 +3179,7 @@
 			}
 			case UMLPackage.OCCURRENCE_SPECIFICATION : {
 				OccurrenceSpecification occurrenceSpecification = (OccurrenceSpecification) theEObject;
-				Object result = caseOccurrenceSpecification(occurrenceSpecification);
+				T result = caseOccurrenceSpecification(occurrenceSpecification);
 				if (result == null)
 					result = caseInteractionFragment(occurrenceSpecification);
 				if (result == null)
@@ -3194,7 +3194,7 @@
 			}
 			case UMLPackage.INTERACTION_OPERAND : {
 				InteractionOperand interactionOperand = (InteractionOperand) theEObject;
-				Object result = caseInteractionOperand(interactionOperand);
+				T result = caseInteractionOperand(interactionOperand);
 				if (result == null)
 					result = caseNamespace(interactionOperand);
 				if (result == null)
@@ -3211,7 +3211,7 @@
 			}
 			case UMLPackage.INTERACTION_CONSTRAINT : {
 				InteractionConstraint interactionConstraint = (InteractionConstraint) theEObject;
-				Object result = caseInteractionConstraint(interactionConstraint);
+				T result = caseInteractionConstraint(interactionConstraint);
 				if (result == null)
 					result = caseConstraint(interactionConstraint);
 				if (result == null)
@@ -3230,7 +3230,7 @@
 			}
 			case UMLPackage.EXECUTION_SPECIFICATION : {
 				ExecutionSpecification executionSpecification = (ExecutionSpecification) theEObject;
-				Object result = caseExecutionSpecification(executionSpecification);
+				T result = caseExecutionSpecification(executionSpecification);
 				if (result == null)
 					result = caseInteractionFragment(executionSpecification);
 				if (result == null)
@@ -3245,7 +3245,7 @@
 			}
 			case UMLPackage.STATE_INVARIANT : {
 				StateInvariant stateInvariant = (StateInvariant) theEObject;
-				Object result = caseStateInvariant(stateInvariant);
+				T result = caseStateInvariant(stateInvariant);
 				if (result == null)
 					result = caseInteractionFragment(stateInvariant);
 				if (result == null)
@@ -3260,7 +3260,7 @@
 			}
 			case UMLPackage.ACTION_EXECUTION_SPECIFICATION : {
 				ActionExecutionSpecification actionExecutionSpecification = (ActionExecutionSpecification) theEObject;
-				Object result = caseActionExecutionSpecification(actionExecutionSpecification);
+				T result = caseActionExecutionSpecification(actionExecutionSpecification);
 				if (result == null)
 					result = caseExecutionSpecification(actionExecutionSpecification);
 				if (result == null)
@@ -3277,7 +3277,7 @@
 			}
 			case UMLPackage.BEHAVIOR_EXECUTION_SPECIFICATION : {
 				BehaviorExecutionSpecification behaviorExecutionSpecification = (BehaviorExecutionSpecification) theEObject;
-				Object result = caseBehaviorExecutionSpecification(behaviorExecutionSpecification);
+				T result = caseBehaviorExecutionSpecification(behaviorExecutionSpecification);
 				if (result == null)
 					result = caseExecutionSpecification(behaviorExecutionSpecification);
 				if (result == null)
@@ -3294,7 +3294,7 @@
 			}
 			case UMLPackage.EXECUTION_EVENT : {
 				ExecutionEvent executionEvent = (ExecutionEvent) theEObject;
-				Object result = caseExecutionEvent(executionEvent);
+				T result = caseExecutionEvent(executionEvent);
 				if (result == null)
 					result = caseEvent(executionEvent);
 				if (result == null)
@@ -3313,7 +3313,7 @@
 			}
 			case UMLPackage.CREATION_EVENT : {
 				CreationEvent creationEvent = (CreationEvent) theEObject;
-				Object result = caseCreationEvent(creationEvent);
+				T result = caseCreationEvent(creationEvent);
 				if (result == null)
 					result = caseEvent(creationEvent);
 				if (result == null)
@@ -3332,7 +3332,7 @@
 			}
 			case UMLPackage.DESTRUCTION_EVENT : {
 				DestructionEvent destructionEvent = (DestructionEvent) theEObject;
-				Object result = caseDestructionEvent(destructionEvent);
+				T result = caseDestructionEvent(destructionEvent);
 				if (result == null)
 					result = caseEvent(destructionEvent);
 				if (result == null)
@@ -3351,7 +3351,7 @@
 			}
 			case UMLPackage.SEND_OPERATION_EVENT : {
 				SendOperationEvent sendOperationEvent = (SendOperationEvent) theEObject;
-				Object result = caseSendOperationEvent(sendOperationEvent);
+				T result = caseSendOperationEvent(sendOperationEvent);
 				if (result == null)
 					result = caseMessageEvent(sendOperationEvent);
 				if (result == null)
@@ -3372,7 +3372,7 @@
 			}
 			case UMLPackage.MESSAGE_EVENT : {
 				MessageEvent messageEvent = (MessageEvent) theEObject;
-				Object result = caseMessageEvent(messageEvent);
+				T result = caseMessageEvent(messageEvent);
 				if (result == null)
 					result = caseEvent(messageEvent);
 				if (result == null)
@@ -3391,7 +3391,7 @@
 			}
 			case UMLPackage.SEND_SIGNAL_EVENT : {
 				SendSignalEvent sendSignalEvent = (SendSignalEvent) theEObject;
-				Object result = caseSendSignalEvent(sendSignalEvent);
+				T result = caseSendSignalEvent(sendSignalEvent);
 				if (result == null)
 					result = caseMessageEvent(sendSignalEvent);
 				if (result == null)
@@ -3412,7 +3412,7 @@
 			}
 			case UMLPackage.MESSAGE_OCCURRENCE_SPECIFICATION : {
 				MessageOccurrenceSpecification messageOccurrenceSpecification = (MessageOccurrenceSpecification) theEObject;
-				Object result = caseMessageOccurrenceSpecification(messageOccurrenceSpecification);
+				T result = caseMessageOccurrenceSpecification(messageOccurrenceSpecification);
 				if (result == null)
 					result = caseOccurrenceSpecification(messageOccurrenceSpecification);
 				if (result == null)
@@ -3431,7 +3431,7 @@
 			}
 			case UMLPackage.EXECUTION_OCCURRENCE_SPECIFICATION : {
 				ExecutionOccurrenceSpecification executionOccurrenceSpecification = (ExecutionOccurrenceSpecification) theEObject;
-				Object result = caseExecutionOccurrenceSpecification(executionOccurrenceSpecification);
+				T result = caseExecutionOccurrenceSpecification(executionOccurrenceSpecification);
 				if (result == null)
 					result = caseOccurrenceSpecification(executionOccurrenceSpecification);
 				if (result == null)
@@ -3448,7 +3448,7 @@
 			}
 			case UMLPackage.RECEIVE_OPERATION_EVENT : {
 				ReceiveOperationEvent receiveOperationEvent = (ReceiveOperationEvent) theEObject;
-				Object result = caseReceiveOperationEvent(receiveOperationEvent);
+				T result = caseReceiveOperationEvent(receiveOperationEvent);
 				if (result == null)
 					result = caseMessageEvent(receiveOperationEvent);
 				if (result == null)
@@ -3469,7 +3469,7 @@
 			}
 			case UMLPackage.RECEIVE_SIGNAL_EVENT : {
 				ReceiveSignalEvent receiveSignalEvent = (ReceiveSignalEvent) theEObject;
-				Object result = caseReceiveSignalEvent(receiveSignalEvent);
+				T result = caseReceiveSignalEvent(receiveSignalEvent);
 				if (result == null)
 					result = caseMessageEvent(receiveSignalEvent);
 				if (result == null)
@@ -3490,7 +3490,7 @@
 			}
 			case UMLPackage.ACTOR : {
 				Actor actor = (Actor) theEObject;
-				Object result = caseActor(actor);
+				T result = caseActor(actor);
 				if (result == null)
 					result = caseBehavioredClassifier(actor);
 				if (result == null)
@@ -3519,7 +3519,7 @@
 			}
 			case UMLPackage.CALL_EVENT : {
 				CallEvent callEvent = (CallEvent) theEObject;
-				Object result = caseCallEvent(callEvent);
+				T result = caseCallEvent(callEvent);
 				if (result == null)
 					result = caseMessageEvent(callEvent);
 				if (result == null)
@@ -3540,7 +3540,7 @@
 			}
 			case UMLPackage.CHANGE_EVENT : {
 				ChangeEvent changeEvent = (ChangeEvent) theEObject;
-				Object result = caseChangeEvent(changeEvent);
+				T result = caseChangeEvent(changeEvent);
 				if (result == null)
 					result = caseEvent(changeEvent);
 				if (result == null)
@@ -3559,7 +3559,7 @@
 			}
 			case UMLPackage.SIGNAL_EVENT : {
 				SignalEvent signalEvent = (SignalEvent) theEObject;
-				Object result = caseSignalEvent(signalEvent);
+				T result = caseSignalEvent(signalEvent);
 				if (result == null)
 					result = caseMessageEvent(signalEvent);
 				if (result == null)
@@ -3580,7 +3580,7 @@
 			}
 			case UMLPackage.ANY_RECEIVE_EVENT : {
 				AnyReceiveEvent anyReceiveEvent = (AnyReceiveEvent) theEObject;
-				Object result = caseAnyReceiveEvent(anyReceiveEvent);
+				T result = caseAnyReceiveEvent(anyReceiveEvent);
 				if (result == null)
 					result = caseMessageEvent(anyReceiveEvent);
 				if (result == null)
@@ -3601,7 +3601,7 @@
 			}
 			case UMLPackage.FORK_NODE : {
 				ForkNode forkNode = (ForkNode) theEObject;
-				Object result = caseForkNode(forkNode);
+				T result = caseForkNode(forkNode);
 				if (result == null)
 					result = caseControlNode(forkNode);
 				if (result == null)
@@ -3620,7 +3620,7 @@
 			}
 			case UMLPackage.FLOW_FINAL_NODE : {
 				FlowFinalNode flowFinalNode = (FlowFinalNode) theEObject;
-				Object result = caseFlowFinalNode(flowFinalNode);
+				T result = caseFlowFinalNode(flowFinalNode);
 				if (result == null)
 					result = caseFinalNode(flowFinalNode);
 				if (result == null)
@@ -3641,7 +3641,7 @@
 			}
 			case UMLPackage.FINAL_NODE : {
 				FinalNode finalNode = (FinalNode) theEObject;
-				Object result = caseFinalNode(finalNode);
+				T result = caseFinalNode(finalNode);
 				if (result == null)
 					result = caseControlNode(finalNode);
 				if (result == null)
@@ -3660,7 +3660,7 @@
 			}
 			case UMLPackage.CENTRAL_BUFFER_NODE : {
 				CentralBufferNode centralBufferNode = (CentralBufferNode) theEObject;
-				Object result = caseCentralBufferNode(centralBufferNode);
+				T result = caseCentralBufferNode(centralBufferNode);
 				if (result == null)
 					result = caseObjectNode(centralBufferNode);
 				if (result == null)
@@ -3681,7 +3681,7 @@
 			}
 			case UMLPackage.MERGE_NODE : {
 				MergeNode mergeNode = (MergeNode) theEObject;
-				Object result = caseMergeNode(mergeNode);
+				T result = caseMergeNode(mergeNode);
 				if (result == null)
 					result = caseControlNode(mergeNode);
 				if (result == null)
@@ -3700,7 +3700,7 @@
 			}
 			case UMLPackage.DECISION_NODE : {
 				DecisionNode decisionNode = (DecisionNode) theEObject;
-				Object result = caseDecisionNode(decisionNode);
+				T result = caseDecisionNode(decisionNode);
 				if (result == null)
 					result = caseControlNode(decisionNode);
 				if (result == null)
@@ -3719,7 +3719,7 @@
 			}
 			case UMLPackage.ACTIVITY_FINAL_NODE : {
 				ActivityFinalNode activityFinalNode = (ActivityFinalNode) theEObject;
-				Object result = caseActivityFinalNode(activityFinalNode);
+				T result = caseActivityFinalNode(activityFinalNode);
 				if (result == null)
 					result = caseFinalNode(activityFinalNode);
 				if (result == null)
@@ -3740,7 +3740,7 @@
 			}
 			case UMLPackage.COMPONENT_REALIZATION : {
 				ComponentRealization componentRealization = (ComponentRealization) theEObject;
-				Object result = caseComponentRealization(componentRealization);
+				T result = caseComponentRealization(componentRealization);
 				if (result == null)
 					result = caseRealization(componentRealization);
 				if (result == null)
@@ -3767,7 +3767,7 @@
 			}
 			case UMLPackage.COMPONENT : {
 				Component component = (Component) theEObject;
-				Object result = caseComponent(component);
+				T result = caseComponent(component);
 				if (result == null)
 					result = caseClass(component);
 				if (result == null)
@@ -3802,7 +3802,7 @@
 			}
 			case UMLPackage.NODE : {
 				Node node = (Node) theEObject;
-				Object result = caseNode(node);
+				T result = caseNode(node);
 				if (result == null)
 					result = caseClass(node);
 				if (result == null)
@@ -3839,7 +3839,7 @@
 			}
 			case UMLPackage.DEVICE : {
 				Device device = (Device) theEObject;
-				Object result = caseDevice(device);
+				T result = caseDevice(device);
 				if (result == null)
 					result = caseNode(device);
 				if (result == null)
@@ -3878,7 +3878,7 @@
 			}
 			case UMLPackage.EXECUTION_ENVIRONMENT : {
 				ExecutionEnvironment executionEnvironment = (ExecutionEnvironment) theEObject;
-				Object result = caseExecutionEnvironment(executionEnvironment);
+				T result = caseExecutionEnvironment(executionEnvironment);
 				if (result == null)
 					result = caseNode(executionEnvironment);
 				if (result == null)
@@ -3917,7 +3917,7 @@
 			}
 			case UMLPackage.COMMUNICATION_PATH : {
 				CommunicationPath communicationPath = (CommunicationPath) theEObject;
-				Object result = caseCommunicationPath(communicationPath);
+				T result = caseCommunicationPath(communicationPath);
 				if (result == null)
 					result = caseAssociation(communicationPath);
 				if (result == null)
@@ -3948,7 +3948,7 @@
 			}
 			case UMLPackage.COMBINED_FRAGMENT : {
 				CombinedFragment combinedFragment = (CombinedFragment) theEObject;
-				Object result = caseCombinedFragment(combinedFragment);
+				T result = caseCombinedFragment(combinedFragment);
 				if (result == null)
 					result = caseInteractionFragment(combinedFragment);
 				if (result == null)
@@ -3963,7 +3963,7 @@
 			}
 			case UMLPackage.CONTINUATION : {
 				Continuation continuation = (Continuation) theEObject;
-				Object result = caseContinuation(continuation);
+				T result = caseContinuation(continuation);
 				if (result == null)
 					result = caseInteractionFragment(continuation);
 				if (result == null)
@@ -3978,7 +3978,7 @@
 			}
 			case UMLPackage.CONSIDER_IGNORE_FRAGMENT : {
 				ConsiderIgnoreFragment considerIgnoreFragment = (ConsiderIgnoreFragment) theEObject;
-				Object result = caseConsiderIgnoreFragment(considerIgnoreFragment);
+				T result = caseConsiderIgnoreFragment(considerIgnoreFragment);
 				if (result == null)
 					result = caseCombinedFragment(considerIgnoreFragment);
 				if (result == null)
@@ -3995,7 +3995,7 @@
 			}
 			case UMLPackage.CREATE_OBJECT_ACTION : {
 				CreateObjectAction createObjectAction = (CreateObjectAction) theEObject;
-				Object result = caseCreateObjectAction(createObjectAction);
+				T result = caseCreateObjectAction(createObjectAction);
 				if (result == null)
 					result = caseAction(createObjectAction);
 				if (result == null)
@@ -4016,7 +4016,7 @@
 			}
 			case UMLPackage.DESTROY_OBJECT_ACTION : {
 				DestroyObjectAction destroyObjectAction = (DestroyObjectAction) theEObject;
-				Object result = caseDestroyObjectAction(destroyObjectAction);
+				T result = caseDestroyObjectAction(destroyObjectAction);
 				if (result == null)
 					result = caseAction(destroyObjectAction);
 				if (result == null)
@@ -4037,7 +4037,7 @@
 			}
 			case UMLPackage.TEST_IDENTITY_ACTION : {
 				TestIdentityAction testIdentityAction = (TestIdentityAction) theEObject;
-				Object result = caseTestIdentityAction(testIdentityAction);
+				T result = caseTestIdentityAction(testIdentityAction);
 				if (result == null)
 					result = caseAction(testIdentityAction);
 				if (result == null)
@@ -4058,7 +4058,7 @@
 			}
 			case UMLPackage.READ_SELF_ACTION : {
 				ReadSelfAction readSelfAction = (ReadSelfAction) theEObject;
-				Object result = caseReadSelfAction(readSelfAction);
+				T result = caseReadSelfAction(readSelfAction);
 				if (result == null)
 					result = caseAction(readSelfAction);
 				if (result == null)
@@ -4079,7 +4079,7 @@
 			}
 			case UMLPackage.STRUCTURAL_FEATURE_ACTION : {
 				StructuralFeatureAction structuralFeatureAction = (StructuralFeatureAction) theEObject;
-				Object result = caseStructuralFeatureAction(structuralFeatureAction);
+				T result = caseStructuralFeatureAction(structuralFeatureAction);
 				if (result == null)
 					result = caseAction(structuralFeatureAction);
 				if (result == null)
@@ -4100,7 +4100,7 @@
 			}
 			case UMLPackage.READ_STRUCTURAL_FEATURE_ACTION : {
 				ReadStructuralFeatureAction readStructuralFeatureAction = (ReadStructuralFeatureAction) theEObject;
-				Object result = caseReadStructuralFeatureAction(readStructuralFeatureAction);
+				T result = caseReadStructuralFeatureAction(readStructuralFeatureAction);
 				if (result == null)
 					result = caseStructuralFeatureAction(readStructuralFeatureAction);
 				if (result == null)
@@ -4123,7 +4123,7 @@
 			}
 			case UMLPackage.WRITE_STRUCTURAL_FEATURE_ACTION : {
 				WriteStructuralFeatureAction writeStructuralFeatureAction = (WriteStructuralFeatureAction) theEObject;
-				Object result = caseWriteStructuralFeatureAction(writeStructuralFeatureAction);
+				T result = caseWriteStructuralFeatureAction(writeStructuralFeatureAction);
 				if (result == null)
 					result = caseStructuralFeatureAction(writeStructuralFeatureAction);
 				if (result == null)
@@ -4146,7 +4146,7 @@
 			}
 			case UMLPackage.CLEAR_STRUCTURAL_FEATURE_ACTION : {
 				ClearStructuralFeatureAction clearStructuralFeatureAction = (ClearStructuralFeatureAction) theEObject;
-				Object result = caseClearStructuralFeatureAction(clearStructuralFeatureAction);
+				T result = caseClearStructuralFeatureAction(clearStructuralFeatureAction);
 				if (result == null)
 					result = caseStructuralFeatureAction(clearStructuralFeatureAction);
 				if (result == null)
@@ -4169,7 +4169,7 @@
 			}
 			case UMLPackage.REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION : {
 				RemoveStructuralFeatureValueAction removeStructuralFeatureValueAction = (RemoveStructuralFeatureValueAction) theEObject;
-				Object result = caseRemoveStructuralFeatureValueAction(removeStructuralFeatureValueAction);
+				T result = caseRemoveStructuralFeatureValueAction(removeStructuralFeatureValueAction);
 				if (result == null)
 					result = caseWriteStructuralFeatureAction(removeStructuralFeatureValueAction);
 				if (result == null)
@@ -4194,7 +4194,7 @@
 			}
 			case UMLPackage.ADD_STRUCTURAL_FEATURE_VALUE_ACTION : {
 				AddStructuralFeatureValueAction addStructuralFeatureValueAction = (AddStructuralFeatureValueAction) theEObject;
-				Object result = caseAddStructuralFeatureValueAction(addStructuralFeatureValueAction);
+				T result = caseAddStructuralFeatureValueAction(addStructuralFeatureValueAction);
 				if (result == null)
 					result = caseWriteStructuralFeatureAction(addStructuralFeatureValueAction);
 				if (result == null)
@@ -4219,7 +4219,7 @@
 			}
 			case UMLPackage.LINK_ACTION : {
 				LinkAction linkAction = (LinkAction) theEObject;
-				Object result = caseLinkAction(linkAction);
+				T result = caseLinkAction(linkAction);
 				if (result == null)
 					result = caseAction(linkAction);
 				if (result == null)
@@ -4240,7 +4240,7 @@
 			}
 			case UMLPackage.LINK_END_DATA : {
 				LinkEndData linkEndData = (LinkEndData) theEObject;
-				Object result = caseLinkEndData(linkEndData);
+				T result = caseLinkEndData(linkEndData);
 				if (result == null)
 					result = caseElement(linkEndData);
 				if (result == null)
@@ -4251,7 +4251,7 @@
 			}
 			case UMLPackage.QUALIFIER_VALUE : {
 				QualifierValue qualifierValue = (QualifierValue) theEObject;
-				Object result = caseQualifierValue(qualifierValue);
+				T result = caseQualifierValue(qualifierValue);
 				if (result == null)
 					result = caseElement(qualifierValue);
 				if (result == null)
@@ -4262,7 +4262,7 @@
 			}
 			case UMLPackage.READ_LINK_ACTION : {
 				ReadLinkAction readLinkAction = (ReadLinkAction) theEObject;
-				Object result = caseReadLinkAction(readLinkAction);
+				T result = caseReadLinkAction(readLinkAction);
 				if (result == null)
 					result = caseLinkAction(readLinkAction);
 				if (result == null)
@@ -4285,7 +4285,7 @@
 			}
 			case UMLPackage.LINK_END_CREATION_DATA : {
 				LinkEndCreationData linkEndCreationData = (LinkEndCreationData) theEObject;
-				Object result = caseLinkEndCreationData(linkEndCreationData);
+				T result = caseLinkEndCreationData(linkEndCreationData);
 				if (result == null)
 					result = caseLinkEndData(linkEndCreationData);
 				if (result == null)
@@ -4298,7 +4298,7 @@
 			}
 			case UMLPackage.CREATE_LINK_ACTION : {
 				CreateLinkAction createLinkAction = (CreateLinkAction) theEObject;
-				Object result = caseCreateLinkAction(createLinkAction);
+				T result = caseCreateLinkAction(createLinkAction);
 				if (result == null)
 					result = caseWriteLinkAction(createLinkAction);
 				if (result == null)
@@ -4323,7 +4323,7 @@
 			}
 			case UMLPackage.WRITE_LINK_ACTION : {
 				WriteLinkAction writeLinkAction = (WriteLinkAction) theEObject;
-				Object result = caseWriteLinkAction(writeLinkAction);
+				T result = caseWriteLinkAction(writeLinkAction);
 				if (result == null)
 					result = caseLinkAction(writeLinkAction);
 				if (result == null)
@@ -4346,7 +4346,7 @@
 			}
 			case UMLPackage.DESTROY_LINK_ACTION : {
 				DestroyLinkAction destroyLinkAction = (DestroyLinkAction) theEObject;
-				Object result = caseDestroyLinkAction(destroyLinkAction);
+				T result = caseDestroyLinkAction(destroyLinkAction);
 				if (result == null)
 					result = caseWriteLinkAction(destroyLinkAction);
 				if (result == null)
@@ -4371,7 +4371,7 @@
 			}
 			case UMLPackage.LINK_END_DESTRUCTION_DATA : {
 				LinkEndDestructionData linkEndDestructionData = (LinkEndDestructionData) theEObject;
-				Object result = caseLinkEndDestructionData(linkEndDestructionData);
+				T result = caseLinkEndDestructionData(linkEndDestructionData);
 				if (result == null)
 					result = caseLinkEndData(linkEndDestructionData);
 				if (result == null)
@@ -4384,7 +4384,7 @@
 			}
 			case UMLPackage.CLEAR_ASSOCIATION_ACTION : {
 				ClearAssociationAction clearAssociationAction = (ClearAssociationAction) theEObject;
-				Object result = caseClearAssociationAction(clearAssociationAction);
+				T result = caseClearAssociationAction(clearAssociationAction);
 				if (result == null)
 					result = caseAction(clearAssociationAction);
 				if (result == null)
@@ -4405,7 +4405,7 @@
 			}
 			case UMLPackage.BROADCAST_SIGNAL_ACTION : {
 				BroadcastSignalAction broadcastSignalAction = (BroadcastSignalAction) theEObject;
-				Object result = caseBroadcastSignalAction(broadcastSignalAction);
+				T result = caseBroadcastSignalAction(broadcastSignalAction);
 				if (result == null)
 					result = caseInvocationAction(broadcastSignalAction);
 				if (result == null)
@@ -4428,7 +4428,7 @@
 			}
 			case UMLPackage.SEND_OBJECT_ACTION : {
 				SendObjectAction sendObjectAction = (SendObjectAction) theEObject;
-				Object result = caseSendObjectAction(sendObjectAction);
+				T result = caseSendObjectAction(sendObjectAction);
 				if (result == null)
 					result = caseInvocationAction(sendObjectAction);
 				if (result == null)
@@ -4451,7 +4451,7 @@
 			}
 			case UMLPackage.VALUE_SPECIFICATION_ACTION : {
 				ValueSpecificationAction valueSpecificationAction = (ValueSpecificationAction) theEObject;
-				Object result = caseValueSpecificationAction(valueSpecificationAction);
+				T result = caseValueSpecificationAction(valueSpecificationAction);
 				if (result == null)
 					result = caseAction(valueSpecificationAction);
 				if (result == null)
@@ -4472,7 +4472,7 @@
 			}
 			case UMLPackage.TIME_EXPRESSION : {
 				TimeExpression timeExpression = (TimeExpression) theEObject;
-				Object result = caseTimeExpression(timeExpression);
+				T result = caseTimeExpression(timeExpression);
 				if (result == null)
 					result = caseValueSpecification(timeExpression);
 				if (result == null)
@@ -4493,7 +4493,7 @@
 			}
 			case UMLPackage.OBSERVATION : {
 				Observation observation = (Observation) theEObject;
-				Object result = caseObservation(observation);
+				T result = caseObservation(observation);
 				if (result == null)
 					result = casePackageableElement(observation);
 				if (result == null)
@@ -4510,7 +4510,7 @@
 			}
 			case UMLPackage.DURATION : {
 				Duration duration = (Duration) theEObject;
-				Object result = caseDuration(duration);
+				T result = caseDuration(duration);
 				if (result == null)
 					result = caseValueSpecification(duration);
 				if (result == null)
@@ -4531,7 +4531,7 @@
 			}
 			case UMLPackage.DURATION_INTERVAL : {
 				DurationInterval durationInterval = (DurationInterval) theEObject;
-				Object result = caseDurationInterval(durationInterval);
+				T result = caseDurationInterval(durationInterval);
 				if (result == null)
 					result = caseInterval(durationInterval);
 				if (result == null)
@@ -4554,7 +4554,7 @@
 			}
 			case UMLPackage.INTERVAL : {
 				Interval interval = (Interval) theEObject;
-				Object result = caseInterval(interval);
+				T result = caseInterval(interval);
 				if (result == null)
 					result = caseValueSpecification(interval);
 				if (result == null)
@@ -4575,7 +4575,7 @@
 			}
 			case UMLPackage.TIME_CONSTRAINT : {
 				TimeConstraint timeConstraint = (TimeConstraint) theEObject;
-				Object result = caseTimeConstraint(timeConstraint);
+				T result = caseTimeConstraint(timeConstraint);
 				if (result == null)
 					result = caseIntervalConstraint(timeConstraint);
 				if (result == null)
@@ -4596,7 +4596,7 @@
 			}
 			case UMLPackage.INTERVAL_CONSTRAINT : {
 				IntervalConstraint intervalConstraint = (IntervalConstraint) theEObject;
-				Object result = caseIntervalConstraint(intervalConstraint);
+				T result = caseIntervalConstraint(intervalConstraint);
 				if (result == null)
 					result = caseConstraint(intervalConstraint);
 				if (result == null)
@@ -4615,7 +4615,7 @@
 			}
 			case UMLPackage.TIME_INTERVAL : {
 				TimeInterval timeInterval = (TimeInterval) theEObject;
-				Object result = caseTimeInterval(timeInterval);
+				T result = caseTimeInterval(timeInterval);
 				if (result == null)
 					result = caseInterval(timeInterval);
 				if (result == null)
@@ -4638,7 +4638,7 @@
 			}
 			case UMLPackage.DURATION_CONSTRAINT : {
 				DurationConstraint durationConstraint = (DurationConstraint) theEObject;
-				Object result = caseDurationConstraint(durationConstraint);
+				T result = caseDurationConstraint(durationConstraint);
 				if (result == null)
 					result = caseIntervalConstraint(durationConstraint);
 				if (result == null)
@@ -4659,7 +4659,7 @@
 			}
 			case UMLPackage.TIME_OBSERVATION : {
 				TimeObservation timeObservation = (TimeObservation) theEObject;
-				Object result = caseTimeObservation(timeObservation);
+				T result = caseTimeObservation(timeObservation);
 				if (result == null)
 					result = caseObservation(timeObservation);
 				if (result == null)
@@ -4678,7 +4678,7 @@
 			}
 			case UMLPackage.DURATION_OBSERVATION : {
 				DurationObservation durationObservation = (DurationObservation) theEObject;
-				Object result = caseDurationObservation(durationObservation);
+				T result = caseDurationObservation(durationObservation);
 				if (result == null)
 					result = caseObservation(durationObservation);
 				if (result == null)
@@ -4697,7 +4697,7 @@
 			}
 			case UMLPackage.FINAL_STATE : {
 				FinalState finalState = (FinalState) theEObject;
-				Object result = caseFinalState(finalState);
+				T result = caseFinalState(finalState);
 				if (result == null)
 					result = caseState(finalState);
 				if (result == null)
@@ -4718,7 +4718,7 @@
 			}
 			case UMLPackage.TIME_EVENT : {
 				TimeEvent timeEvent = (TimeEvent) theEObject;
-				Object result = caseTimeEvent(timeEvent);
+				T result = caseTimeEvent(timeEvent);
 				if (result == null)
 					result = caseEvent(timeEvent);
 				if (result == null)
@@ -4737,7 +4737,7 @@
 			}
 			case UMLPackage.VARIABLE_ACTION : {
 				VariableAction variableAction = (VariableAction) theEObject;
-				Object result = caseVariableAction(variableAction);
+				T result = caseVariableAction(variableAction);
 				if (result == null)
 					result = caseAction(variableAction);
 				if (result == null)
@@ -4758,7 +4758,7 @@
 			}
 			case UMLPackage.READ_VARIABLE_ACTION : {
 				ReadVariableAction readVariableAction = (ReadVariableAction) theEObject;
-				Object result = caseReadVariableAction(readVariableAction);
+				T result = caseReadVariableAction(readVariableAction);
 				if (result == null)
 					result = caseVariableAction(readVariableAction);
 				if (result == null)
@@ -4781,7 +4781,7 @@
 			}
 			case UMLPackage.WRITE_VARIABLE_ACTION : {
 				WriteVariableAction writeVariableAction = (WriteVariableAction) theEObject;
-				Object result = caseWriteVariableAction(writeVariableAction);
+				T result = caseWriteVariableAction(writeVariableAction);
 				if (result == null)
 					result = caseVariableAction(writeVariableAction);
 				if (result == null)
@@ -4804,7 +4804,7 @@
 			}
 			case UMLPackage.CLEAR_VARIABLE_ACTION : {
 				ClearVariableAction clearVariableAction = (ClearVariableAction) theEObject;
-				Object result = caseClearVariableAction(clearVariableAction);
+				T result = caseClearVariableAction(clearVariableAction);
 				if (result == null)
 					result = caseVariableAction(clearVariableAction);
 				if (result == null)
@@ -4827,7 +4827,7 @@
 			}
 			case UMLPackage.ADD_VARIABLE_VALUE_ACTION : {
 				AddVariableValueAction addVariableValueAction = (AddVariableValueAction) theEObject;
-				Object result = caseAddVariableValueAction(addVariableValueAction);
+				T result = caseAddVariableValueAction(addVariableValueAction);
 				if (result == null)
 					result = caseWriteVariableAction(addVariableValueAction);
 				if (result == null)
@@ -4852,7 +4852,7 @@
 			}
 			case UMLPackage.REMOVE_VARIABLE_VALUE_ACTION : {
 				RemoveVariableValueAction removeVariableValueAction = (RemoveVariableValueAction) theEObject;
-				Object result = caseRemoveVariableValueAction(removeVariableValueAction);
+				T result = caseRemoveVariableValueAction(removeVariableValueAction);
 				if (result == null)
 					result = caseWriteVariableAction(removeVariableValueAction);
 				if (result == null)
@@ -4877,7 +4877,7 @@
 			}
 			case UMLPackage.RAISE_EXCEPTION_ACTION : {
 				RaiseExceptionAction raiseExceptionAction = (RaiseExceptionAction) theEObject;
-				Object result = caseRaiseExceptionAction(raiseExceptionAction);
+				T result = caseRaiseExceptionAction(raiseExceptionAction);
 				if (result == null)
 					result = caseAction(raiseExceptionAction);
 				if (result == null)
@@ -4898,7 +4898,7 @@
 			}
 			case UMLPackage.ACTION_INPUT_PIN : {
 				ActionInputPin actionInputPin = (ActionInputPin) theEObject;
-				Object result = caseActionInputPin(actionInputPin);
+				T result = caseActionInputPin(actionInputPin);
 				if (result == null)
 					result = caseInputPin(actionInputPin);
 				if (result == null)
@@ -4925,7 +4925,7 @@
 			}
 			case UMLPackage.INFORMATION_ITEM : {
 				InformationItem informationItem = (InformationItem) theEObject;
-				Object result = caseInformationItem(informationItem);
+				T result = caseInformationItem(informationItem);
 				if (result == null)
 					result = caseClassifier(informationItem);
 				if (result == null)
@@ -4952,7 +4952,7 @@
 			}
 			case UMLPackage.INFORMATION_FLOW : {
 				InformationFlow informationFlow = (InformationFlow) theEObject;
-				Object result = caseInformationFlow(informationFlow);
+				T result = caseInformationFlow(informationFlow);
 				if (result == null)
 					result = casePackageableElement(informationFlow);
 				if (result == null)
@@ -4973,7 +4973,7 @@
 			}
 			case UMLPackage.READ_EXTENT_ACTION : {
 				ReadExtentAction readExtentAction = (ReadExtentAction) theEObject;
-				Object result = caseReadExtentAction(readExtentAction);
+				T result = caseReadExtentAction(readExtentAction);
 				if (result == null)
 					result = caseAction(readExtentAction);
 				if (result == null)
@@ -4994,7 +4994,7 @@
 			}
 			case UMLPackage.RECLASSIFY_OBJECT_ACTION : {
 				ReclassifyObjectAction reclassifyObjectAction = (ReclassifyObjectAction) theEObject;
-				Object result = caseReclassifyObjectAction(reclassifyObjectAction);
+				T result = caseReclassifyObjectAction(reclassifyObjectAction);
 				if (result == null)
 					result = caseAction(reclassifyObjectAction);
 				if (result == null)
@@ -5015,7 +5015,7 @@
 			}
 			case UMLPackage.READ_IS_CLASSIFIED_OBJECT_ACTION : {
 				ReadIsClassifiedObjectAction readIsClassifiedObjectAction = (ReadIsClassifiedObjectAction) theEObject;
-				Object result = caseReadIsClassifiedObjectAction(readIsClassifiedObjectAction);
+				T result = caseReadIsClassifiedObjectAction(readIsClassifiedObjectAction);
 				if (result == null)
 					result = caseAction(readIsClassifiedObjectAction);
 				if (result == null)
@@ -5036,7 +5036,7 @@
 			}
 			case UMLPackage.START_CLASSIFIER_BEHAVIOR_ACTION : {
 				StartClassifierBehaviorAction startClassifierBehaviorAction = (StartClassifierBehaviorAction) theEObject;
-				Object result = caseStartClassifierBehaviorAction(startClassifierBehaviorAction);
+				T result = caseStartClassifierBehaviorAction(startClassifierBehaviorAction);
 				if (result == null)
 					result = caseAction(startClassifierBehaviorAction);
 				if (result == null)
@@ -5057,7 +5057,7 @@
 			}
 			case UMLPackage.READ_LINK_OBJECT_END_ACTION : {
 				ReadLinkObjectEndAction readLinkObjectEndAction = (ReadLinkObjectEndAction) theEObject;
-				Object result = caseReadLinkObjectEndAction(readLinkObjectEndAction);
+				T result = caseReadLinkObjectEndAction(readLinkObjectEndAction);
 				if (result == null)
 					result = caseAction(readLinkObjectEndAction);
 				if (result == null)
@@ -5078,7 +5078,7 @@
 			}
 			case UMLPackage.READ_LINK_OBJECT_END_QUALIFIER_ACTION : {
 				ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction = (ReadLinkObjectEndQualifierAction) theEObject;
-				Object result = caseReadLinkObjectEndQualifierAction(readLinkObjectEndQualifierAction);
+				T result = caseReadLinkObjectEndQualifierAction(readLinkObjectEndQualifierAction);
 				if (result == null)
 					result = caseAction(readLinkObjectEndQualifierAction);
 				if (result == null)
@@ -5099,7 +5099,7 @@
 			}
 			case UMLPackage.CREATE_LINK_OBJECT_ACTION : {
 				CreateLinkObjectAction createLinkObjectAction = (CreateLinkObjectAction) theEObject;
-				Object result = caseCreateLinkObjectAction(createLinkObjectAction);
+				T result = caseCreateLinkObjectAction(createLinkObjectAction);
 				if (result == null)
 					result = caseCreateLinkAction(createLinkObjectAction);
 				if (result == null)
@@ -5126,7 +5126,7 @@
 			}
 			case UMLPackage.ACCEPT_EVENT_ACTION : {
 				AcceptEventAction acceptEventAction = (AcceptEventAction) theEObject;
-				Object result = caseAcceptEventAction(acceptEventAction);
+				T result = caseAcceptEventAction(acceptEventAction);
 				if (result == null)
 					result = caseAction(acceptEventAction);
 				if (result == null)
@@ -5147,7 +5147,7 @@
 			}
 			case UMLPackage.ACCEPT_CALL_ACTION : {
 				AcceptCallAction acceptCallAction = (AcceptCallAction) theEObject;
-				Object result = caseAcceptCallAction(acceptCallAction);
+				T result = caseAcceptCallAction(acceptCallAction);
 				if (result == null)
 					result = caseAcceptEventAction(acceptCallAction);
 				if (result == null)
@@ -5170,7 +5170,7 @@
 			}
 			case UMLPackage.REPLY_ACTION : {
 				ReplyAction replyAction = (ReplyAction) theEObject;
-				Object result = caseReplyAction(replyAction);
+				T result = caseReplyAction(replyAction);
 				if (result == null)
 					result = caseAction(replyAction);
 				if (result == null)
@@ -5191,7 +5191,7 @@
 			}
 			case UMLPackage.UNMARSHALL_ACTION : {
 				UnmarshallAction unmarshallAction = (UnmarshallAction) theEObject;
-				Object result = caseUnmarshallAction(unmarshallAction);
+				T result = caseUnmarshallAction(unmarshallAction);
 				if (result == null)
 					result = caseAction(unmarshallAction);
 				if (result == null)
@@ -5212,7 +5212,7 @@
 			}
 			case UMLPackage.REDUCE_ACTION : {
 				ReduceAction reduceAction = (ReduceAction) theEObject;
-				Object result = caseReduceAction(reduceAction);
+				T result = caseReduceAction(reduceAction);
 				if (result == null)
 					result = caseAction(reduceAction);
 				if (result == null)
@@ -5233,7 +5233,7 @@
 			}
 			case UMLPackage.JOIN_NODE : {
 				JoinNode joinNode = (JoinNode) theEObject;
-				Object result = caseJoinNode(joinNode);
+				T result = caseJoinNode(joinNode);
 				if (result == null)
 					result = caseControlNode(joinNode);
 				if (result == null)
@@ -5252,7 +5252,7 @@
 			}
 			case UMLPackage.DATA_STORE_NODE : {
 				DataStoreNode dataStoreNode = (DataStoreNode) theEObject;
-				Object result = caseDataStoreNode(dataStoreNode);
+				T result = caseDataStoreNode(dataStoreNode);
 				if (result == null)
 					result = caseCentralBufferNode(dataStoreNode);
 				if (result == null)
@@ -5275,7 +5275,7 @@
 			}
 			case UMLPackage.OBJECT_FLOW : {
 				ObjectFlow objectFlow = (ObjectFlow) theEObject;
-				Object result = caseObjectFlow(objectFlow);
+				T result = caseObjectFlow(objectFlow);
 				if (result == null)
 					result = caseActivityEdge(objectFlow);
 				if (result == null)
@@ -5292,7 +5292,7 @@
 			}
 			case UMLPackage.CONDITIONAL_NODE : {
 				ConditionalNode conditionalNode = (ConditionalNode) theEObject;
-				Object result = caseConditionalNode(conditionalNode);
+				T result = caseConditionalNode(conditionalNode);
 				if (result == null)
 					result = caseStructuredActivityNode(conditionalNode);
 				if (result == null)
@@ -5319,7 +5319,7 @@
 			}
 			case UMLPackage.CLAUSE : {
 				Clause clause = (Clause) theEObject;
-				Object result = caseClause(clause);
+				T result = caseClause(clause);
 				if (result == null)
 					result = caseElement(clause);
 				if (result == null)
@@ -5330,7 +5330,7 @@
 			}
 			case UMLPackage.LOOP_NODE : {
 				LoopNode loopNode = (LoopNode) theEObject;
-				Object result = caseLoopNode(loopNode);
+				T result = caseLoopNode(loopNode);
 				if (result == null)
 					result = caseStructuredActivityNode(loopNode);
 				if (result == null)
@@ -5357,7 +5357,7 @@
 			}
 			case UMLPackage.EXPANSION_NODE : {
 				ExpansionNode expansionNode = (ExpansionNode) theEObject;
-				Object result = caseExpansionNode(expansionNode);
+				T result = caseExpansionNode(expansionNode);
 				if (result == null)
 					result = caseObjectNode(expansionNode);
 				if (result == null)
@@ -5378,7 +5378,7 @@
 			}
 			case UMLPackage.EXPANSION_REGION : {
 				ExpansionRegion expansionRegion = (ExpansionRegion) theEObject;
-				Object result = caseExpansionRegion(expansionRegion);
+				T result = caseExpansionRegion(expansionRegion);
 				if (result == null)
 					result = caseStructuredActivityNode(expansionRegion);
 				if (result == null)
@@ -5405,7 +5405,7 @@
 			}
 			case UMLPackage.PROTOCOL_TRANSITION : {
 				ProtocolTransition protocolTransition = (ProtocolTransition) theEObject;
-				Object result = caseProtocolTransition(protocolTransition);
+				T result = caseProtocolTransition(protocolTransition);
 				if (result == null)
 					result = caseTransition(protocolTransition);
 				if (result == null)
@@ -5424,7 +5424,7 @@
 			}
 			case UMLPackage.ASSOCIATION_CLASS : {
 				AssociationClass associationClass = (AssociationClass) theEObject;
-				Object result = caseAssociationClass(associationClass);
+				T result = caseAssociationClass(associationClass);
 				if (result == null)
 					result = caseClass(associationClass);
 				if (result == null)
@@ -5477,7 +5477,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseComment(Comment object) {
+	public T caseComment(Comment object) {
 		return null;
 	}
 
@@ -5492,7 +5492,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseElement(Element object) {
+	public T caseElement(Element object) {
 		return null;
 	}
 
@@ -5507,7 +5507,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDirectedRelationship(DirectedRelationship object) {
+	public T caseDirectedRelationship(DirectedRelationship object) {
 		return null;
 	}
 
@@ -5522,7 +5522,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRelationship(Relationship object) {
+	public T caseRelationship(Relationship object) {
 		return null;
 	}
 
@@ -5537,7 +5537,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralSpecification(LiteralSpecification object) {
+	public T caseLiteralSpecification(LiteralSpecification object) {
 		return null;
 	}
 
@@ -5552,7 +5552,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseValueSpecification(ValueSpecification object) {
+	public T caseValueSpecification(ValueSpecification object) {
 		return null;
 	}
 
@@ -5567,7 +5567,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTypedElement(TypedElement object) {
+	public T caseTypedElement(TypedElement object) {
 		return null;
 	}
 
@@ -5582,7 +5582,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseNamedElement(NamedElement object) {
+	public T caseNamedElement(NamedElement object) {
 		return null;
 	}
 
@@ -5597,7 +5597,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDependency(Dependency object) {
+	public T caseDependency(Dependency object) {
 		return null;
 	}
 
@@ -5612,7 +5612,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePackageableElement(PackageableElement object) {
+	public T casePackageableElement(PackageableElement object) {
 		return null;
 	}
 
@@ -5627,7 +5627,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseParameterableElement(ParameterableElement object) {
+	public T caseParameterableElement(ParameterableElement object) {
 		return null;
 	}
 
@@ -5642,7 +5642,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTemplateParameter(TemplateParameter object) {
+	public T caseTemplateParameter(TemplateParameter object) {
 		return null;
 	}
 
@@ -5657,7 +5657,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTemplateSignature(TemplateSignature object) {
+	public T caseTemplateSignature(TemplateSignature object) {
 		return null;
 	}
 
@@ -5672,7 +5672,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTemplateableElement(TemplateableElement object) {
+	public T caseTemplateableElement(TemplateableElement object) {
 		return null;
 	}
 
@@ -5687,7 +5687,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTemplateBinding(TemplateBinding object) {
+	public T caseTemplateBinding(TemplateBinding object) {
 		return null;
 	}
 
@@ -5702,7 +5702,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTemplateParameterSubstitution(
+	public T caseTemplateParameterSubstitution(
 			TemplateParameterSubstitution object) {
 		return null;
 	}
@@ -5718,7 +5718,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseNamespace(Namespace object) {
+	public T caseNamespace(Namespace object) {
 		return null;
 	}
 
@@ -5733,7 +5733,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseElementImport(ElementImport object) {
+	public T caseElementImport(ElementImport object) {
 		return null;
 	}
 
@@ -5748,7 +5748,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePackageImport(PackageImport object) {
+	public T casePackageImport(PackageImport object) {
 		return null;
 	}
 
@@ -5763,7 +5763,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePackage(org.eclipse.uml2.uml.Package object) {
+	public T casePackage(org.eclipse.uml2.uml.Package object) {
 		return null;
 	}
 
@@ -5778,7 +5778,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePackageMerge(PackageMerge object) {
+	public T casePackageMerge(PackageMerge object) {
 		return null;
 	}
 
@@ -5793,7 +5793,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseType(Type object) {
+	public T caseType(Type object) {
 		return null;
 	}
 
@@ -5808,7 +5808,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProfileApplication(ProfileApplication object) {
+	public T caseProfileApplication(ProfileApplication object) {
 		return null;
 	}
 
@@ -5823,7 +5823,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProfile(Profile object) {
+	public T caseProfile(Profile object) {
 		return null;
 	}
 
@@ -5838,7 +5838,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStereotype(Stereotype object) {
+	public T caseStereotype(Stereotype object) {
 		return null;
 	}
 
@@ -5853,7 +5853,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClass(org.eclipse.uml2.uml.Class object) {
+	public T caseClass(org.eclipse.uml2.uml.Class object) {
 		return null;
 	}
 
@@ -5868,7 +5868,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseBehavioredClassifier(BehavioredClassifier object) {
+	public T caseBehavioredClassifier(BehavioredClassifier object) {
 		return null;
 	}
 
@@ -5883,7 +5883,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClassifier(Classifier object) {
+	public T caseClassifier(Classifier object) {
 		return null;
 	}
 
@@ -5898,7 +5898,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRedefinableElement(RedefinableElement object) {
+	public T caseRedefinableElement(RedefinableElement object) {
 		return null;
 	}
 
@@ -5913,7 +5913,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseGeneralization(Generalization object) {
+	public T caseGeneralization(Generalization object) {
 		return null;
 	}
 
@@ -5928,7 +5928,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseGeneralizationSet(GeneralizationSet object) {
+	public T caseGeneralizationSet(GeneralizationSet object) {
 		return null;
 	}
 
@@ -5943,7 +5943,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseFeature(Feature object) {
+	public T caseFeature(Feature object) {
 		return null;
 	}
 
@@ -5958,7 +5958,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseUseCase(UseCase object) {
+	public T caseUseCase(UseCase object) {
 		return null;
 	}
 
@@ -5973,7 +5973,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInclude(Include object) {
+	public T caseInclude(Include object) {
 		return null;
 	}
 
@@ -5988,7 +5988,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExtend(Extend object) {
+	public T caseExtend(Extend object) {
 		return null;
 	}
 
@@ -6003,7 +6003,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConstraint(Constraint object) {
+	public T caseConstraint(Constraint object) {
 		return null;
 	}
 
@@ -6018,7 +6018,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExtensionPoint(ExtensionPoint object) {
+	public T caseExtensionPoint(ExtensionPoint object) {
 		return null;
 	}
 
@@ -6033,7 +6033,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSubstitution(Substitution object) {
+	public T caseSubstitution(Substitution object) {
 		return null;
 	}
 
@@ -6048,7 +6048,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRealization(Realization object) {
+	public T caseRealization(Realization object) {
 		return null;
 	}
 
@@ -6063,7 +6063,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAbstraction(Abstraction object) {
+	public T caseAbstraction(Abstraction object) {
 		return null;
 	}
 
@@ -6078,7 +6078,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOpaqueExpression(OpaqueExpression object) {
+	public T caseOpaqueExpression(OpaqueExpression object) {
 		return null;
 	}
 
@@ -6093,7 +6093,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseParameter(Parameter object) {
+	public T caseParameter(Parameter object) {
 		return null;
 	}
 
@@ -6108,7 +6108,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMultiplicityElement(MultiplicityElement object) {
+	public T caseMultiplicityElement(MultiplicityElement object) {
 		return null;
 	}
 
@@ -6123,7 +6123,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConnectableElement(ConnectableElement object) {
+	public T caseConnectableElement(ConnectableElement object) {
 		return null;
 	}
 
@@ -6138,7 +6138,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConnectorEnd(ConnectorEnd object) {
+	public T caseConnectorEnd(ConnectorEnd object) {
 		return null;
 	}
 
@@ -6153,7 +6153,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProperty(Property object) {
+	public T caseProperty(Property object) {
 		return null;
 	}
 
@@ -6168,7 +6168,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDeploymentTarget(DeploymentTarget object) {
+	public T caseDeploymentTarget(DeploymentTarget object) {
 		return null;
 	}
 
@@ -6183,7 +6183,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDeployment(Deployment object) {
+	public T caseDeployment(Deployment object) {
 		return null;
 	}
 
@@ -6198,7 +6198,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDeployedArtifact(DeployedArtifact object) {
+	public T caseDeployedArtifact(DeployedArtifact object) {
 		return null;
 	}
 
@@ -6213,7 +6213,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDeploymentSpecification(DeploymentSpecification object) {
+	public T caseDeploymentSpecification(DeploymentSpecification object) {
 		return null;
 	}
 
@@ -6228,7 +6228,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseArtifact(Artifact object) {
+	public T caseArtifact(Artifact object) {
 		return null;
 	}
 
@@ -6243,7 +6243,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseManifestation(Manifestation object) {
+	public T caseManifestation(Manifestation object) {
 		return null;
 	}
 
@@ -6258,7 +6258,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOperation(Operation object) {
+	public T caseOperation(Operation object) {
 		return null;
 	}
 
@@ -6273,7 +6273,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseBehavioralFeature(BehavioralFeature object) {
+	public T caseBehavioralFeature(BehavioralFeature object) {
 		return null;
 	}
 
@@ -6288,7 +6288,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseBehavior(Behavior object) {
+	public T caseBehavior(Behavior object) {
 		return null;
 	}
 
@@ -6303,7 +6303,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseParameterSet(ParameterSet object) {
+	public T caseParameterSet(ParameterSet object) {
 		return null;
 	}
 
@@ -6318,7 +6318,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDataType(DataType object) {
+	public T caseDataType(DataType object) {
 		return null;
 	}
 
@@ -6333,7 +6333,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInterface(Interface object) {
+	public T caseInterface(Interface object) {
 		return null;
 	}
 
@@ -6348,7 +6348,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReception(Reception object) {
+	public T caseReception(Reception object) {
 		return null;
 	}
 
@@ -6363,7 +6363,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSignal(Signal object) {
+	public T caseSignal(Signal object) {
 		return null;
 	}
 
@@ -6378,7 +6378,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProtocolStateMachine(ProtocolStateMachine object) {
+	public T caseProtocolStateMachine(ProtocolStateMachine object) {
 		return null;
 	}
 
@@ -6393,7 +6393,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStateMachine(StateMachine object) {
+	public T caseStateMachine(StateMachine object) {
 		return null;
 	}
 
@@ -6408,7 +6408,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRegion(Region object) {
+	public T caseRegion(Region object) {
 		return null;
 	}
 
@@ -6423,7 +6423,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseVertex(Vertex object) {
+	public T caseVertex(Vertex object) {
 		return null;
 	}
 
@@ -6438,7 +6438,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTransition(Transition object) {
+	public T caseTransition(Transition object) {
 		return null;
 	}
 
@@ -6453,7 +6453,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTrigger(Trigger object) {
+	public T caseTrigger(Trigger object) {
 		return null;
 	}
 
@@ -6468,7 +6468,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseEvent(Event object) {
+	public T caseEvent(Event object) {
 		return null;
 	}
 
@@ -6483,7 +6483,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePort(Port object) {
+	public T casePort(Port object) {
 		return null;
 	}
 
@@ -6498,7 +6498,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseState(State object) {
+	public T caseState(State object) {
 		return null;
 	}
 
@@ -6513,7 +6513,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConnectionPointReference(ConnectionPointReference object) {
+	public T caseConnectionPointReference(ConnectionPointReference object) {
 		return null;
 	}
 
@@ -6528,7 +6528,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePseudostate(Pseudostate object) {
+	public T casePseudostate(Pseudostate object) {
 		return null;
 	}
 
@@ -6543,7 +6543,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProtocolConformance(ProtocolConformance object) {
+	public T caseProtocolConformance(ProtocolConformance object) {
 		return null;
 	}
 
@@ -6558,8 +6558,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOperationTemplateParameter(
-			OperationTemplateParameter object) {
+	public T caseOperationTemplateParameter(OperationTemplateParameter object) {
 		return null;
 	}
 
@@ -6574,7 +6573,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStructuralFeature(StructuralFeature object) {
+	public T caseStructuralFeature(StructuralFeature object) {
 		return null;
 	}
 
@@ -6589,7 +6588,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAssociation(Association object) {
+	public T caseAssociation(Association object) {
 		return null;
 	}
 
@@ -6604,7 +6603,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConnectableElementTemplateParameter(
+	public T caseConnectableElementTemplateParameter(
 			ConnectableElementTemplateParameter object) {
 		return null;
 	}
@@ -6620,7 +6619,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCollaborationUse(CollaborationUse object) {
+	public T caseCollaborationUse(CollaborationUse object) {
 		return null;
 	}
 
@@ -6635,7 +6634,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCollaboration(Collaboration object) {
+	public T caseCollaboration(Collaboration object) {
 		return null;
 	}
 
@@ -6650,7 +6649,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStructuredClassifier(StructuredClassifier object) {
+	public T caseStructuredClassifier(StructuredClassifier object) {
 		return null;
 	}
 
@@ -6665,7 +6664,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConnector(Connector object) {
+	public T caseConnector(Connector object) {
 		return null;
 	}
 
@@ -6680,7 +6679,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRedefinableTemplateSignature(
+	public T caseRedefinableTemplateSignature(
 			RedefinableTemplateSignature object) {
 		return null;
 	}
@@ -6696,8 +6695,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClassifierTemplateParameter(
-			ClassifierTemplateParameter object) {
+	public T caseClassifierTemplateParameter(ClassifierTemplateParameter object) {
 		return null;
 	}
 
@@ -6712,7 +6710,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInterfaceRealization(InterfaceRealization object) {
+	public T caseInterfaceRealization(InterfaceRealization object) {
 		return null;
 	}
 
@@ -6727,7 +6725,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseEncapsulatedClassifier(EncapsulatedClassifier object) {
+	public T caseEncapsulatedClassifier(EncapsulatedClassifier object) {
 		return null;
 	}
 
@@ -6742,7 +6740,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExtension(Extension object) {
+	public T caseExtension(Extension object) {
 		return null;
 	}
 
@@ -6757,7 +6755,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExtensionEnd(ExtensionEnd object) {
+	public T caseExtensionEnd(ExtensionEnd object) {
 		return null;
 	}
 
@@ -6772,7 +6770,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseImage(Image object) {
+	public T caseImage(Image object) {
 		return null;
 	}
 
@@ -6787,7 +6785,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStringExpression(StringExpression object) {
+	public T caseStringExpression(StringExpression object) {
 		return null;
 	}
 
@@ -6802,7 +6800,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExpression(Expression object) {
+	public T caseExpression(Expression object) {
 		return null;
 	}
 
@@ -6817,7 +6815,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralInteger(LiteralInteger object) {
+	public T caseLiteralInteger(LiteralInteger object) {
 		return null;
 	}
 
@@ -6832,7 +6830,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralString(LiteralString object) {
+	public T caseLiteralString(LiteralString object) {
 		return null;
 	}
 
@@ -6847,7 +6845,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralBoolean(LiteralBoolean object) {
+	public T caseLiteralBoolean(LiteralBoolean object) {
 		return null;
 	}
 
@@ -6862,7 +6860,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralNull(LiteralNull object) {
+	public T caseLiteralNull(LiteralNull object) {
 		return null;
 	}
 
@@ -6877,7 +6875,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSlot(Slot object) {
+	public T caseSlot(Slot object) {
 		return null;
 	}
 
@@ -6892,7 +6890,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInstanceSpecification(InstanceSpecification object) {
+	public T caseInstanceSpecification(InstanceSpecification object) {
 		return null;
 	}
 
@@ -6907,7 +6905,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseEnumeration(Enumeration object) {
+	public T caseEnumeration(Enumeration object) {
 		return null;
 	}
 
@@ -6922,7 +6920,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseEnumerationLiteral(EnumerationLiteral object) {
+	public T caseEnumerationLiteral(EnumerationLiteral object) {
 		return null;
 	}
 
@@ -6937,7 +6935,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePrimitiveType(PrimitiveType object) {
+	public T casePrimitiveType(PrimitiveType object) {
 		return null;
 	}
 
@@ -6952,7 +6950,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInstanceValue(InstanceValue object) {
+	public T caseInstanceValue(InstanceValue object) {
 		return null;
 	}
 
@@ -6967,7 +6965,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLiteralUnlimitedNatural(LiteralUnlimitedNatural object) {
+	public T caseLiteralUnlimitedNatural(LiteralUnlimitedNatural object) {
 		return null;
 	}
 
@@ -6982,7 +6980,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOpaqueBehavior(OpaqueBehavior object) {
+	public T caseOpaqueBehavior(OpaqueBehavior object) {
 		return null;
 	}
 
@@ -6997,7 +6995,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseFunctionBehavior(FunctionBehavior object) {
+	public T caseFunctionBehavior(FunctionBehavior object) {
 		return null;
 	}
 
@@ -7012,7 +7010,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActor(Actor object) {
+	public T caseActor(Actor object) {
 		return null;
 	}
 
@@ -7027,7 +7025,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseUsage(Usage object) {
+	public T caseUsage(Usage object) {
 		return null;
 	}
 
@@ -7042,7 +7040,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMessage(Message object) {
+	public T caseMessage(Message object) {
 		return null;
 	}
 
@@ -7057,7 +7055,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMessageEnd(MessageEnd object) {
+	public T caseMessageEnd(MessageEnd object) {
 		return null;
 	}
 
@@ -7072,7 +7070,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInteraction(Interaction object) {
+	public T caseInteraction(Interaction object) {
 		return null;
 	}
 
@@ -7087,7 +7085,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInteractionFragment(InteractionFragment object) {
+	public T caseInteractionFragment(InteractionFragment object) {
 		return null;
 	}
 
@@ -7102,7 +7100,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLifeline(Lifeline object) {
+	public T caseLifeline(Lifeline object) {
 		return null;
 	}
 
@@ -7117,7 +7115,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePartDecomposition(PartDecomposition object) {
+	public T casePartDecomposition(PartDecomposition object) {
 		return null;
 	}
 
@@ -7132,7 +7130,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInteractionUse(InteractionUse object) {
+	public T caseInteractionUse(InteractionUse object) {
 		return null;
 	}
 
@@ -7147,7 +7145,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseGate(Gate object) {
+	public T caseGate(Gate object) {
 		return null;
 	}
 
@@ -7162,7 +7160,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAction(Action object) {
+	public T caseAction(Action object) {
 		return null;
 	}
 
@@ -7177,7 +7175,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExecutableNode(ExecutableNode object) {
+	public T caseExecutableNode(ExecutableNode object) {
 		return null;
 	}
 
@@ -7192,7 +7190,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityNode(ActivityNode object) {
+	public T caseActivityNode(ActivityNode object) {
 		return null;
 	}
 
@@ -7207,7 +7205,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityEdge(ActivityEdge object) {
+	public T caseActivityEdge(ActivityEdge object) {
 		return null;
 	}
 
@@ -7222,7 +7220,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivity(Activity object) {
+	public T caseActivity(Activity object) {
 		return null;
 	}
 
@@ -7237,7 +7235,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityPartition(ActivityPartition object) {
+	public T caseActivityPartition(ActivityPartition object) {
 		return null;
 	}
 
@@ -7252,7 +7250,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityGroup(ActivityGroup object) {
+	public T caseActivityGroup(ActivityGroup object) {
 		return null;
 	}
 
@@ -7267,7 +7265,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStructuredActivityNode(StructuredActivityNode object) {
+	public T caseStructuredActivityNode(StructuredActivityNode object) {
 		return null;
 	}
 
@@ -7282,7 +7280,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseVariable(Variable object) {
+	public T caseVariable(Variable object) {
 		return null;
 	}
 
@@ -7297,8 +7295,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInterruptibleActivityRegion(
-			InterruptibleActivityRegion object) {
+	public T caseInterruptibleActivityRegion(InterruptibleActivityRegion object) {
 		return null;
 	}
 
@@ -7313,7 +7310,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExceptionHandler(ExceptionHandler object) {
+	public T caseExceptionHandler(ExceptionHandler object) {
 		return null;
 	}
 
@@ -7328,7 +7325,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseObjectNode(ObjectNode object) {
+	public T caseObjectNode(ObjectNode object) {
 		return null;
 	}
 
@@ -7343,7 +7340,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOutputPin(OutputPin object) {
+	public T caseOutputPin(OutputPin object) {
 		return null;
 	}
 
@@ -7358,7 +7355,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object casePin(Pin object) {
+	public T casePin(Pin object) {
 		return null;
 	}
 
@@ -7373,7 +7370,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInputPin(InputPin object) {
+	public T caseInputPin(InputPin object) {
 		return null;
 	}
 
@@ -7388,7 +7385,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseGeneralOrdering(GeneralOrdering object) {
+	public T caseGeneralOrdering(GeneralOrdering object) {
 		return null;
 	}
 
@@ -7403,7 +7400,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOccurrenceSpecification(OccurrenceSpecification object) {
+	public T caseOccurrenceSpecification(OccurrenceSpecification object) {
 		return null;
 	}
 
@@ -7418,7 +7415,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInteractionOperand(InteractionOperand object) {
+	public T caseInteractionOperand(InteractionOperand object) {
 		return null;
 	}
 
@@ -7433,7 +7430,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInteractionConstraint(InteractionConstraint object) {
+	public T caseInteractionConstraint(InteractionConstraint object) {
 		return null;
 	}
 
@@ -7448,7 +7445,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExecutionSpecification(ExecutionSpecification object) {
+	public T caseExecutionSpecification(ExecutionSpecification object) {
 		return null;
 	}
 
@@ -7463,7 +7460,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExecutionOccurrenceSpecification(
+	public T caseExecutionOccurrenceSpecification(
 			ExecutionOccurrenceSpecification object) {
 		return null;
 	}
@@ -7479,7 +7476,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExecutionEvent(ExecutionEvent object) {
+	public T caseExecutionEvent(ExecutionEvent object) {
 		return null;
 	}
 
@@ -7494,7 +7491,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStateInvariant(StateInvariant object) {
+	public T caseStateInvariant(StateInvariant object) {
 		return null;
 	}
 
@@ -7509,7 +7506,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActionExecutionSpecification(
+	public T caseActionExecutionSpecification(
 			ActionExecutionSpecification object) {
 		return null;
 	}
@@ -7525,7 +7522,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseBehaviorExecutionSpecification(
+	public T caseBehaviorExecutionSpecification(
 			BehaviorExecutionSpecification object) {
 		return null;
 	}
@@ -7541,7 +7538,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCreationEvent(CreationEvent object) {
+	public T caseCreationEvent(CreationEvent object) {
 		return null;
 	}
 
@@ -7556,7 +7553,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDestructionEvent(DestructionEvent object) {
+	public T caseDestructionEvent(DestructionEvent object) {
 		return null;
 	}
 
@@ -7571,7 +7568,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSendOperationEvent(SendOperationEvent object) {
+	public T caseSendOperationEvent(SendOperationEvent object) {
 		return null;
 	}
 
@@ -7586,7 +7583,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMessageEvent(MessageEvent object) {
+	public T caseMessageEvent(MessageEvent object) {
 		return null;
 	}
 
@@ -7601,7 +7598,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSendSignalEvent(SendSignalEvent object) {
+	public T caseSendSignalEvent(SendSignalEvent object) {
 		return null;
 	}
 
@@ -7616,7 +7613,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMessageOccurrenceSpecification(
+	public T caseMessageOccurrenceSpecification(
 			MessageOccurrenceSpecification object) {
 		return null;
 	}
@@ -7632,7 +7629,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReceiveOperationEvent(ReceiveOperationEvent object) {
+	public T caseReceiveOperationEvent(ReceiveOperationEvent object) {
 		return null;
 	}
 
@@ -7647,7 +7644,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReceiveSignalEvent(ReceiveSignalEvent object) {
+	public T caseReceiveSignalEvent(ReceiveSignalEvent object) {
 		return null;
 	}
 
@@ -7662,7 +7659,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCombinedFragment(CombinedFragment object) {
+	public T caseCombinedFragment(CombinedFragment object) {
 		return null;
 	}
 
@@ -7677,7 +7674,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseContinuation(Continuation object) {
+	public T caseContinuation(Continuation object) {
 		return null;
 	}
 
@@ -7692,7 +7689,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConsiderIgnoreFragment(ConsiderIgnoreFragment object) {
+	public T caseConsiderIgnoreFragment(ConsiderIgnoreFragment object) {
 		return null;
 	}
 
@@ -7707,7 +7704,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCallEvent(CallEvent object) {
+	public T caseCallEvent(CallEvent object) {
 		return null;
 	}
 
@@ -7722,7 +7719,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseChangeEvent(ChangeEvent object) {
+	public T caseChangeEvent(ChangeEvent object) {
 		return null;
 	}
 
@@ -7737,7 +7734,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSignalEvent(SignalEvent object) {
+	public T caseSignalEvent(SignalEvent object) {
 		return null;
 	}
 
@@ -7752,7 +7749,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAnyReceiveEvent(AnyReceiveEvent object) {
+	public T caseAnyReceiveEvent(AnyReceiveEvent object) {
 		return null;
 	}
 
@@ -7767,7 +7764,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCreateObjectAction(CreateObjectAction object) {
+	public T caseCreateObjectAction(CreateObjectAction object) {
 		return null;
 	}
 
@@ -7782,7 +7779,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDestroyObjectAction(DestroyObjectAction object) {
+	public T caseDestroyObjectAction(DestroyObjectAction object) {
 		return null;
 	}
 
@@ -7797,7 +7794,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTestIdentityAction(TestIdentityAction object) {
+	public T caseTestIdentityAction(TestIdentityAction object) {
 		return null;
 	}
 
@@ -7812,7 +7809,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadSelfAction(ReadSelfAction object) {
+	public T caseReadSelfAction(ReadSelfAction object) {
 		return null;
 	}
 
@@ -7827,7 +7824,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStructuralFeatureAction(StructuralFeatureAction object) {
+	public T caseStructuralFeatureAction(StructuralFeatureAction object) {
 		return null;
 	}
 
@@ -7842,8 +7839,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadStructuralFeatureAction(
-			ReadStructuralFeatureAction object) {
+	public T caseReadStructuralFeatureAction(ReadStructuralFeatureAction object) {
 		return null;
 	}
 
@@ -7858,7 +7854,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseWriteStructuralFeatureAction(
+	public T caseWriteStructuralFeatureAction(
 			WriteStructuralFeatureAction object) {
 		return null;
 	}
@@ -7874,7 +7870,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClearStructuralFeatureAction(
+	public T caseClearStructuralFeatureAction(
 			ClearStructuralFeatureAction object) {
 		return null;
 	}
@@ -7890,7 +7886,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRemoveStructuralFeatureValueAction(
+	public T caseRemoveStructuralFeatureValueAction(
 			RemoveStructuralFeatureValueAction object) {
 		return null;
 	}
@@ -7906,7 +7902,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAddStructuralFeatureValueAction(
+	public T caseAddStructuralFeatureValueAction(
 			AddStructuralFeatureValueAction object) {
 		return null;
 	}
@@ -7922,7 +7918,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLinkAction(LinkAction object) {
+	public T caseLinkAction(LinkAction object) {
 		return null;
 	}
 
@@ -7937,7 +7933,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLinkEndData(LinkEndData object) {
+	public T caseLinkEndData(LinkEndData object) {
 		return null;
 	}
 
@@ -7952,7 +7948,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseQualifierValue(QualifierValue object) {
+	public T caseQualifierValue(QualifierValue object) {
 		return null;
 	}
 
@@ -7967,7 +7963,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadLinkAction(ReadLinkAction object) {
+	public T caseReadLinkAction(ReadLinkAction object) {
 		return null;
 	}
 
@@ -7982,7 +7978,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLinkEndCreationData(LinkEndCreationData object) {
+	public T caseLinkEndCreationData(LinkEndCreationData object) {
 		return null;
 	}
 
@@ -7997,7 +7993,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCreateLinkAction(CreateLinkAction object) {
+	public T caseCreateLinkAction(CreateLinkAction object) {
 		return null;
 	}
 
@@ -8012,7 +8008,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseWriteLinkAction(WriteLinkAction object) {
+	public T caseWriteLinkAction(WriteLinkAction object) {
 		return null;
 	}
 
@@ -8027,7 +8023,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDestroyLinkAction(DestroyLinkAction object) {
+	public T caseDestroyLinkAction(DestroyLinkAction object) {
 		return null;
 	}
 
@@ -8042,7 +8038,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLinkEndDestructionData(LinkEndDestructionData object) {
+	public T caseLinkEndDestructionData(LinkEndDestructionData object) {
 		return null;
 	}
 
@@ -8057,7 +8053,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClearAssociationAction(ClearAssociationAction object) {
+	public T caseClearAssociationAction(ClearAssociationAction object) {
 		return null;
 	}
 
@@ -8072,7 +8068,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseBroadcastSignalAction(BroadcastSignalAction object) {
+	public T caseBroadcastSignalAction(BroadcastSignalAction object) {
 		return null;
 	}
 
@@ -8087,7 +8083,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInvocationAction(InvocationAction object) {
+	public T caseInvocationAction(InvocationAction object) {
 		return null;
 	}
 
@@ -8102,7 +8098,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSendObjectAction(SendObjectAction object) {
+	public T caseSendObjectAction(SendObjectAction object) {
 		return null;
 	}
 
@@ -8117,7 +8113,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseValueSpecificationAction(ValueSpecificationAction object) {
+	public T caseValueSpecificationAction(ValueSpecificationAction object) {
 		return null;
 	}
 
@@ -8132,7 +8128,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTimeExpression(TimeExpression object) {
+	public T caseTimeExpression(TimeExpression object) {
 		return null;
 	}
 
@@ -8147,7 +8143,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseObservation(Observation object) {
+	public T caseObservation(Observation object) {
 		return null;
 	}
 
@@ -8162,7 +8158,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDuration(Duration object) {
+	public T caseDuration(Duration object) {
 		return null;
 	}
 
@@ -8177,7 +8173,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseValuePin(ValuePin object) {
+	public T caseValuePin(ValuePin object) {
 		return null;
 	}
 
@@ -8192,7 +8188,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDurationInterval(DurationInterval object) {
+	public T caseDurationInterval(DurationInterval object) {
 		return null;
 	}
 
@@ -8207,7 +8203,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInterval(Interval object) {
+	public T caseInterval(Interval object) {
 		return null;
 	}
 
@@ -8222,7 +8218,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTimeConstraint(TimeConstraint object) {
+	public T caseTimeConstraint(TimeConstraint object) {
 		return null;
 	}
 
@@ -8237,7 +8233,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseIntervalConstraint(IntervalConstraint object) {
+	public T caseIntervalConstraint(IntervalConstraint object) {
 		return null;
 	}
 
@@ -8252,7 +8248,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTimeInterval(TimeInterval object) {
+	public T caseTimeInterval(TimeInterval object) {
 		return null;
 	}
 
@@ -8267,7 +8263,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDurationConstraint(DurationConstraint object) {
+	public T caseDurationConstraint(DurationConstraint object) {
 		return null;
 	}
 
@@ -8282,7 +8278,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTimeObservation(TimeObservation object) {
+	public T caseTimeObservation(TimeObservation object) {
 		return null;
 	}
 
@@ -8297,7 +8293,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDurationObservation(DurationObservation object) {
+	public T caseDurationObservation(DurationObservation object) {
 		return null;
 	}
 
@@ -8312,7 +8308,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseOpaqueAction(OpaqueAction object) {
+	public T caseOpaqueAction(OpaqueAction object) {
 		return null;
 	}
 
@@ -8327,7 +8323,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCallAction(CallAction object) {
+	public T caseCallAction(CallAction object) {
 		return null;
 	}
 
@@ -8342,7 +8338,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSendSignalAction(SendSignalAction object) {
+	public T caseSendSignalAction(SendSignalAction object) {
 		return null;
 	}
 
@@ -8357,7 +8353,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCallOperationAction(CallOperationAction object) {
+	public T caseCallOperationAction(CallOperationAction object) {
 		return null;
 	}
 
@@ -8372,7 +8368,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCallBehaviorAction(CallBehaviorAction object) {
+	public T caseCallBehaviorAction(CallBehaviorAction object) {
 		return null;
 	}
 
@@ -8387,7 +8383,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInformationItem(InformationItem object) {
+	public T caseInformationItem(InformationItem object) {
 		return null;
 	}
 
@@ -8402,7 +8398,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInformationFlow(InformationFlow object) {
+	public T caseInformationFlow(InformationFlow object) {
 		return null;
 	}
 
@@ -8417,7 +8413,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseModel(Model object) {
+	public T caseModel(Model object) {
 		return null;
 	}
 
@@ -8432,7 +8428,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseVariableAction(VariableAction object) {
+	public T caseVariableAction(VariableAction object) {
 		return null;
 	}
 
@@ -8447,7 +8443,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadVariableAction(ReadVariableAction object) {
+	public T caseReadVariableAction(ReadVariableAction object) {
 		return null;
 	}
 
@@ -8462,7 +8458,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseWriteVariableAction(WriteVariableAction object) {
+	public T caseWriteVariableAction(WriteVariableAction object) {
 		return null;
 	}
 
@@ -8477,7 +8473,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClearVariableAction(ClearVariableAction object) {
+	public T caseClearVariableAction(ClearVariableAction object) {
 		return null;
 	}
 
@@ -8492,7 +8488,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAddVariableValueAction(AddVariableValueAction object) {
+	public T caseAddVariableValueAction(AddVariableValueAction object) {
 		return null;
 	}
 
@@ -8507,7 +8503,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRemoveVariableValueAction(RemoveVariableValueAction object) {
+	public T caseRemoveVariableValueAction(RemoveVariableValueAction object) {
 		return null;
 	}
 
@@ -8522,7 +8518,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseRaiseExceptionAction(RaiseExceptionAction object) {
+	public T caseRaiseExceptionAction(RaiseExceptionAction object) {
 		return null;
 	}
 
@@ -8537,7 +8533,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActionInputPin(ActionInputPin object) {
+	public T caseActionInputPin(ActionInputPin object) {
 		return null;
 	}
 
@@ -8552,7 +8548,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadExtentAction(ReadExtentAction object) {
+	public T caseReadExtentAction(ReadExtentAction object) {
 		return null;
 	}
 
@@ -8567,7 +8563,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReclassifyObjectAction(ReclassifyObjectAction object) {
+	public T caseReclassifyObjectAction(ReclassifyObjectAction object) {
 		return null;
 	}
 
@@ -8582,7 +8578,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadIsClassifiedObjectAction(
+	public T caseReadIsClassifiedObjectAction(
 			ReadIsClassifiedObjectAction object) {
 		return null;
 	}
@@ -8598,7 +8594,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseStartClassifierBehaviorAction(
+	public T caseStartClassifierBehaviorAction(
 			StartClassifierBehaviorAction object) {
 		return null;
 	}
@@ -8614,7 +8610,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadLinkObjectEndAction(ReadLinkObjectEndAction object) {
+	public T caseReadLinkObjectEndAction(ReadLinkObjectEndAction object) {
 		return null;
 	}
 
@@ -8629,7 +8625,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReadLinkObjectEndQualifierAction(
+	public T caseReadLinkObjectEndQualifierAction(
 			ReadLinkObjectEndQualifierAction object) {
 		return null;
 	}
@@ -8645,7 +8641,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCreateLinkObjectAction(CreateLinkObjectAction object) {
+	public T caseCreateLinkObjectAction(CreateLinkObjectAction object) {
 		return null;
 	}
 
@@ -8660,7 +8656,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAcceptEventAction(AcceptEventAction object) {
+	public T caseAcceptEventAction(AcceptEventAction object) {
 		return null;
 	}
 
@@ -8675,7 +8671,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAcceptCallAction(AcceptCallAction object) {
+	public T caseAcceptCallAction(AcceptCallAction object) {
 		return null;
 	}
 
@@ -8690,7 +8686,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReplyAction(ReplyAction object) {
+	public T caseReplyAction(ReplyAction object) {
 		return null;
 	}
 
@@ -8705,7 +8701,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseUnmarshallAction(UnmarshallAction object) {
+	public T caseUnmarshallAction(UnmarshallAction object) {
 		return null;
 	}
 
@@ -8720,7 +8716,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseReduceAction(ReduceAction object) {
+	public T caseReduceAction(ReduceAction object) {
 		return null;
 	}
 
@@ -8735,7 +8731,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseControlNode(ControlNode object) {
+	public T caseControlNode(ControlNode object) {
 		return null;
 	}
 
@@ -8750,7 +8746,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseControlFlow(ControlFlow object) {
+	public T caseControlFlow(ControlFlow object) {
 		return null;
 	}
 
@@ -8765,7 +8761,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseInitialNode(InitialNode object) {
+	public T caseInitialNode(InitialNode object) {
 		return null;
 	}
 
@@ -8780,7 +8776,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityParameterNode(ActivityParameterNode object) {
+	public T caseActivityParameterNode(ActivityParameterNode object) {
 		return null;
 	}
 
@@ -8795,7 +8791,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseForkNode(ForkNode object) {
+	public T caseForkNode(ForkNode object) {
 		return null;
 	}
 
@@ -8810,7 +8806,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseFlowFinalNode(FlowFinalNode object) {
+	public T caseFlowFinalNode(FlowFinalNode object) {
 		return null;
 	}
 
@@ -8825,7 +8821,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseFinalNode(FinalNode object) {
+	public T caseFinalNode(FinalNode object) {
 		return null;
 	}
 
@@ -8840,7 +8836,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCentralBufferNode(CentralBufferNode object) {
+	public T caseCentralBufferNode(CentralBufferNode object) {
 		return null;
 	}
 
@@ -8855,7 +8851,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseMergeNode(MergeNode object) {
+	public T caseMergeNode(MergeNode object) {
 		return null;
 	}
 
@@ -8870,7 +8866,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDecisionNode(DecisionNode object) {
+	public T caseDecisionNode(DecisionNode object) {
 		return null;
 	}
 
@@ -8885,7 +8881,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseActivityFinalNode(ActivityFinalNode object) {
+	public T caseActivityFinalNode(ActivityFinalNode object) {
 		return null;
 	}
 
@@ -8900,7 +8896,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseJoinNode(JoinNode object) {
+	public T caseJoinNode(JoinNode object) {
 		return null;
 	}
 
@@ -8915,7 +8911,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDataStoreNode(DataStoreNode object) {
+	public T caseDataStoreNode(DataStoreNode object) {
 		return null;
 	}
 
@@ -8930,7 +8926,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseObjectFlow(ObjectFlow object) {
+	public T caseObjectFlow(ObjectFlow object) {
 		return null;
 	}
 
@@ -8945,7 +8941,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseSequenceNode(SequenceNode object) {
+	public T caseSequenceNode(SequenceNode object) {
 		return null;
 	}
 
@@ -8960,7 +8956,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseConditionalNode(ConditionalNode object) {
+	public T caseConditionalNode(ConditionalNode object) {
 		return null;
 	}
 
@@ -8975,7 +8971,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseClause(Clause object) {
+	public T caseClause(Clause object) {
 		return null;
 	}
 
@@ -8990,7 +8986,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseLoopNode(LoopNode object) {
+	public T caseLoopNode(LoopNode object) {
 		return null;
 	}
 
@@ -9005,7 +9001,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExpansionNode(ExpansionNode object) {
+	public T caseExpansionNode(ExpansionNode object) {
 		return null;
 	}
 
@@ -9020,7 +9016,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExpansionRegion(ExpansionRegion object) {
+	public T caseExpansionRegion(ExpansionRegion object) {
 		return null;
 	}
 
@@ -9035,7 +9031,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseComponentRealization(ComponentRealization object) {
+	public T caseComponentRealization(ComponentRealization object) {
 		return null;
 	}
 
@@ -9050,7 +9046,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseComponent(Component object) {
+	public T caseComponent(Component object) {
 		return null;
 	}
 
@@ -9065,7 +9061,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseNode(Node object) {
+	public T caseNode(Node object) {
 		return null;
 	}
 
@@ -9080,7 +9076,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseDevice(Device object) {
+	public T caseDevice(Device object) {
 		return null;
 	}
 
@@ -9095,7 +9091,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseExecutionEnvironment(ExecutionEnvironment object) {
+	public T caseExecutionEnvironment(ExecutionEnvironment object) {
 		return null;
 	}
 
@@ -9110,7 +9106,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseCommunicationPath(CommunicationPath object) {
+	public T caseCommunicationPath(CommunicationPath object) {
 		return null;
 	}
 
@@ -9125,7 +9121,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseFinalState(FinalState object) {
+	public T caseFinalState(FinalState object) {
 		return null;
 	}
 
@@ -9140,7 +9136,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseTimeEvent(TimeEvent object) {
+	public T caseTimeEvent(TimeEvent object) {
 		return null;
 	}
 
@@ -9155,7 +9151,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseProtocolTransition(ProtocolTransition object) {
+	public T caseProtocolTransition(ProtocolTransition object) {
 		return null;
 	}
 
@@ -9170,7 +9166,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseAssociationClass(AssociationClass object) {
+	public T caseAssociationClass(AssociationClass object) {
 		return null;
 	}
 
@@ -9185,7 +9181,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public Object caseEModelElement(EModelElement object) {
+	public T caseEModelElement(EModelElement object) {
 		return null;
 	}
 
@@ -9200,7 +9196,7 @@
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
 	 * @generated
 	 */
-	public Object defaultCase(EObject object) {
+	public T defaultCase(EObject object) {
 		return null;
 	}
 
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
index 1a8e3d2..623bca6 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLUtil.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLUtil.java,v 1.42 2006/12/06 13:46:53 khussey Exp $
+ * $Id: UMLUtil.java,v 1.43 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.util;
 
@@ -31,6 +31,7 @@
 import org.eclipse.emf.common.util.ECollections;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.common.util.UniqueEList;
 import org.eclipse.emf.ecore.EAnnotation;
@@ -40,6 +41,7 @@
 import org.eclipse.emf.ecore.EDataType;
 import org.eclipse.emf.ecore.EEnum;
 import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EGenericType;
 import org.eclipse.emf.ecore.EModelElement;
 import org.eclipse.emf.ecore.ENamedElement;
 import org.eclipse.emf.ecore.EObject;
@@ -124,11 +126,7 @@
 		 */
 		public static final QualifiedTextProvider DEFAULT = new QualifiedTextProvider();
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.common.util.UML2Util.QualifiedTextProvider#getText(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public String getText(EObject eObject) {
 
 			return eObject instanceof NamedElement
@@ -136,11 +134,7 @@
 				: super.getText(eObject);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.common.util.UML2Util.QualifiedTextProvider#getSeparator()
-		 */
+		@Override
 		public String getSeparator() {
 			return NamedElement.SEPARATOR;
 		}
@@ -154,6 +148,8 @@
 	public static class PackageMerger
 			extends EcoreUtil.Copier {
 
+		private static final long serialVersionUID = 1L;
+
 		protected class BodyMatcher
 				extends EStructuralFeatureMatcher {
 
@@ -173,10 +169,11 @@
 		protected class KeyMatcher
 				extends EClassMatcher {
 
-			protected KeyMatcher(BasicEMap.Entry entry) {
+			protected KeyMatcher(BasicEMap.Entry<String, String> entry) {
 				super((EObject) entry);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 				return super.matches(otherEObject)
 					&& safeEquals(((BasicEMap.Entry) eObject).getKey(),
@@ -191,6 +188,7 @@
 				super(eObject);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 				return super.matches(otherEObject)
 					&& safeEquals(getResultingQName(eObject),
@@ -205,6 +203,7 @@
 				super(valueSpecification);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 				return super.matches(otherEObject)
 					&& safeEquals(((ValueSpecification) eObject).stringValue(),
@@ -227,6 +226,7 @@
 				super(typedElement);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 
 				if (super.matches(otherEObject)) {
@@ -369,150 +369,113 @@
 
 		protected org.eclipse.uml2.uml.Package receivingPackage = null;
 
-		protected Collection mergedPackages = null;
+		protected Collection<org.eclipse.uml2.uml.Package> mergedPackages = null;
 
-		protected final Map resultingToMergedEObjectMap = new LinkedHashMap();
+		protected final Map<EObject, List<EObject>> resultingToMergedEObjectMap = new LinkedHashMap<EObject, List<EObject>>();
 
-		private final Map<EObject, EObject> copierMap = new LinkedHashMap();
+		private final Map<EObject, EObject> copierMap = new LinkedHashMap<EObject, EObject>();
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#clear()
-		 */
+		@Override
 		public void clear() {
 			copierMap.clear();
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#containsKey(java.lang.Object)
-		 */
+		@Override
 		public boolean containsKey(Object key) {
 			return copierMap.containsKey(key);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#containsValue(java.lang.Object)
-		 */
+		@Override
 		public boolean containsValue(Object value) {
 			return copierMap.containsValue(value);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#entrySet()
-		 */
-		public Set entrySet() {
+		@Override
+		public Set<Map.Entry<EObject, EObject>> entrySet() {
 			return copierMap.entrySet();
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#get(java.lang.Object)
-		 */
-		public EObject get(EObject key) {
+		@Override
+		public EObject get(Object key) {
 			return copierMap.get(key);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#isEmpty()
-		 */
+		@Override
 		public boolean isEmpty() {
 			return copierMap.isEmpty();
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#keySet()
-		 */
-		public Set keySet() {
+		@Override
+		public Set<EObject> keySet() {
 			return copierMap.keySet();
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#put(K, V)
-		 */
+		@Override
 		public EObject put(EObject key, EObject value) {
 			return copierMap.put(key, value);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#putAll(java.util.Map)
-		 */
-		public void putAll(Map t) {
+		@Override
+		public void putAll(Map<? extends EObject, ? extends EObject> t) {
 			copierMap.putAll(t);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#remove(java.lang.Object)
-		 */
-		public EObject remove(EObject key) {
+		@Override
+		public EObject remove(Object key) {
 			return copierMap.remove(key);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#size()
-		 */
+		@Override
 		public int size() {
 			return copierMap.size();
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see java.util.HashMap#values()
-		 */
-		public Collection values() {
+		@Override
+		public Collection<EObject> values() {
 			return copierMap.values();
 		}
 
-		protected List getMatchCandidates(EObject eObject) {
+		protected <EO extends EObject> List<EO> getMatchCandidates(EO eObject) {
 			Element baseElement = getBaseElement(eObject);
 
 			if (baseElement == null) {
 				EStructuralFeature eContainingFeature = eObject
 					.eContainingFeature();
 
-				return eContainingFeature.isMany()
-					? (List) ((EObject) get(eObject.eContainer()))
-						.eGet(eContainingFeature)
-					: Collections.singletonList(((EObject) get(eObject
-						.eContainer())).eGet(eContainingFeature));
+				if (eContainingFeature.isMany()) {
+					@SuppressWarnings("unchecked")
+					List<EO> values = (List<EO>) get(eObject.eContainer())
+						.eGet(eContainingFeature);
+					return values;
+				} else {
+					@SuppressWarnings("unchecked")
+					EO value = (EO) get(eObject.eContainer()).eGet(
+						eContainingFeature);
+					return Collections.<EO> singletonList(value);
+				}
 			} else {
-				return ((Element) get(baseElement)).getStereotypeApplications();
+				@SuppressWarnings("unchecked")
+				List<EO> stereotypeApplications = (List<EO>) ((Element) get(baseElement))
+					.getStereotypeApplications();
+				return stereotypeApplications;
 			}
 		}
 
-		protected List getMergedEObjects(EObject resultingEObject) {
-			Object mergedEObjects = resultingToMergedEObjectMap
+		protected <EO extends EObject> List<EO> getMergedEObjects(
+				EO resultingEObject) {
+			@SuppressWarnings("unchecked")
+			List<EO> mergedEObjects = (List<EO>) resultingToMergedEObjectMap
 				.get(resultingEObject);
 
 			return mergedEObjects == null
-				? Collections.singletonList(resultingEObject)
-				: (List) mergedEObjects;
+				? Collections.<EO> singletonList(resultingEObject)
+				: (List<EO>) mergedEObjects;
 		}
 
-		protected EObject getPreviouslyMergedEObject(EObject resultingEObject) {
-			List mergedEObjects = getMergedEObjects(resultingEObject);
-
-			return (EObject) mergedEObjects.get(mergedEObjects.size() - 1);
+		protected <EO extends EObject> EO getPreviouslyMergedEObject(
+				EO resultingEObject) {
+			List<EO> mergedEObjects = getMergedEObjects(resultingEObject);
+			return mergedEObjects.get(mergedEObjects.size() - 1);
 		}
 
 		protected String getResultingQName(EObject eObject) {
@@ -623,6 +586,7 @@
 				&& mergedStructuralFeature.isReadOnly());
 		}
 
+		@Override
 		protected void copyAttribute(EAttribute eAttribute, EObject eObject,
 				EObject copyEObject) {
 
@@ -679,19 +643,21 @@
 			}
 		}
 
+		@Override
 		protected void copyContainment(EReference eReference, EObject eObject,
 				EObject copyEObject) {
 
 			if (eObject != copyEObject) {
 
 				if (eReference.isMany()) {
-					InternalEList targetList = (InternalEList) copyEObject
+					@SuppressWarnings("unchecked")
+					List<EObject> sourceList = (List<EObject>) eObject
+						.eGet(eReference);
+					@SuppressWarnings("unchecked")
+					InternalEList<EObject> targetList = (InternalEList<EObject>) copyEObject
 						.eGet(getTarget(eReference));
 
-					for (Iterator i = ((List) eObject.eGet(eReference))
-						.iterator(); i.hasNext();) {
-
-						EObject childEObject = (EObject) i.next();
+					for (EObject childEObject : sourceList) {
 						EObject copyChildEObject = copy(childEObject);
 
 						if (childEObject != copyChildEObject) {
@@ -719,12 +685,10 @@
 			Type mergedType = mergedTypedElement.getType();
 
 			if (receivingType != null && mergedType instanceof Classifier) {
-				EList allParents = ((Classifier) mergedType).allParents();
+				EList<Classifier> allParents = ((Classifier) mergedType)
+					.allParents();
 
-				for (Iterator mergedEObjects = getMergedEObjects(receivingType)
-					.iterator(); mergedEObjects.hasNext();) {
-
-					EObject mergedEObject = (EObject) mergedEObjects.next();
+				for (EObject mergedEObject : getMergedEObjects(receivingType)) {
 
 					if (findEObject(allParents, new ResultingQNameMatcher(
 						mergedEObject)) != null) {
@@ -743,6 +707,7 @@
 				: resultingType);
 		}
 
+		@Override
 		protected void copyReference(EReference eReference, EObject eObject,
 				EObject copyEObject) {
 
@@ -752,17 +717,18 @@
 					mergeTypedElement_Type((TypedElement) copyEObject,
 						(TypedElement) eObject);
 				} else if (eReference.isMany()) {
-					InternalEList targetList = (InternalEList) copyEObject
+					@SuppressWarnings("unchecked")
+					List<EObject> sourceList = (List<EObject>) eObject
+						.eGet(eReference);
+					@SuppressWarnings("unchecked")
+					InternalEList<EObject> targetList = (InternalEList<EObject>) copyEObject
 						.eGet(getTarget(eReference));
 
 					boolean isBidirectional = eReference.getEOpposite() != null;
 					int index = 0;
 
-					for (Iterator i = ((List) eObject.eGet(eReference))
-						.iterator(); i.hasNext();) {
-
-						Object referencedEObject = i.next();
-						Object copyReferencedEObject = get(referencedEObject);
+					for (EObject referencedEObject : sourceList) {
+						EObject copyReferencedEObject = get(referencedEObject);
 
 						if (copyReferencedEObject == null) {
 
@@ -804,33 +770,34 @@
 			}
 		}
 
+		@Override
 		protected EObject createCopy(EObject eObject) {
-			return (EObject) new UMLSwitch() {
+			return new UMLSwitch<EObject>() {
 
-				public Object caseAssociation(Association association) {
-					Association matchingAssociation = (Association) findEObject(
+				@Override
+				public EObject caseAssociation(Association association) {
+					Association matchingAssociation = findEObject(
 						getMatchCandidates(association), new NameMatcher(
 							association) {
 
+							@Override
 							public boolean matches(EObject otherEObject) {
 
 								if (super.matches(otherEObject)) {
 									otherEObject = getPreviouslyMergedEObject(otherEObject);
 
-									List memberEnds = ((Association) eObject)
+									List<Property> memberEnds = ((Association) eObject)
 										.getMemberEnds();
-									List otherMemberEnds = ((Association) otherEObject)
+									List<Property> otherMemberEnds = ((Association) otherEObject)
 										.getMemberEnds();
 
 									if (memberEnds.size() == otherMemberEnds
 										.size()) {
 
-										for (Iterator i = memberEnds.iterator(); i
-											.hasNext();) {
+										for (Property memberEnd : memberEnds) {
 
 											if (findEObject(otherMemberEnds,
-												new TypeMatcher(
-													(TypedElement) i.next())) == null) {
+												new TypeMatcher(memberEnd)) == null) {
 
 												return false;
 											}
@@ -850,8 +817,9 @@
 						: matchingAssociation;
 				}
 
-				public Object caseClass(org.eclipse.uml2.uml.Class class_) {
-					org.eclipse.uml2.uml.Class matchingClass = (org.eclipse.uml2.uml.Class) findEObject(
+				@Override
+				public EObject caseClass(org.eclipse.uml2.uml.Class class_) {
+					org.eclipse.uml2.uml.Class matchingClass = findEObject(
 						getMatchCandidates(class_), new NameMatcher(class_));
 
 					return matchingClass == null
@@ -859,8 +827,9 @@
 						: matchingClass;
 				}
 
-				public Object caseComment(Comment comment) {
-					Comment matchingComment = (Comment) findEObject(
+				@Override
+				public EObject caseComment(Comment comment) {
+					Comment matchingComment = findEObject(
 						getMatchCandidates(comment), new BodyMatcher(comment));
 
 					return matchingComment == null
@@ -868,8 +837,9 @@
 						: matchingComment;
 				}
 
-				public Object caseConstraint(Constraint constraint) {
-					Constraint matchingConstraint = (Constraint) findEObject(
+				@Override
+				public EObject caseConstraint(Constraint constraint) {
+					Constraint matchingConstraint = findEObject(
 						getMatchCandidates(constraint), new NameMatcher(
 							constraint));
 
@@ -878,8 +848,9 @@
 						: matchingConstraint;
 				}
 
-				public Object caseDataType(DataType dataType) {
-					DataType matchingDataType = (DataType) findEObject(
+				@Override
+				public EObject caseDataType(DataType dataType) {
+					DataType matchingDataType = findEObject(
 						getMatchCandidates(dataType), new NameMatcher(dataType));
 
 					return matchingDataType == null
@@ -887,7 +858,8 @@
 						: matchingDataType;
 				}
 
-				public Object caseDirectedRelationship(
+				@Override
+				public EObject caseDirectedRelationship(
 						DirectedRelationship directedRelationship) {
 
 					if (mergedPackages.containsAll(directedRelationship
@@ -896,28 +868,28 @@
 						return directedRelationship;
 					}
 
-					DirectedRelationship matchingDirectedRelationship = (DirectedRelationship) findEObject(
+					DirectedRelationship matchingDirectedRelationship = findEObject(
 						getMatchCandidates(directedRelationship),
 						new EClassMatcher(directedRelationship) {
 
+							@Override
 							public boolean matches(EObject otherEObject) {
 
 								if (super.matches(otherEObject)) {
 									otherEObject = getPreviouslyMergedEObject(otherEObject);
 
-									List targets = ((DirectedRelationship) eObject)
+									List<Element> targets = ((DirectedRelationship) eObject)
 										.getTargets();
-									List otherTargets = ((DirectedRelationship) otherEObject)
+									List<Element> otherTargets = ((DirectedRelationship) otherEObject)
 										.getTargets();
 
 									if (targets.size() == otherTargets.size()) {
 
-										for (Iterator i = targets.iterator(); i
-											.hasNext();) {
+										for (Element target : targets) {
 
 											if (findEObject(otherTargets,
 												new ResultingQNameMatcher(
-													(EObject) i.next())) == null) {
+													target)) == null) {
 
 												return false;
 											}
@@ -936,9 +908,10 @@
 						: matchingDirectedRelationship;
 				}
 
-				public Object caseEnumerationLiteral(
+				@Override
+				public EObject caseEnumerationLiteral(
 						EnumerationLiteral enumerationLiteral) {
-					EnumerationLiteral matchingEnumerationLiteral = (EnumerationLiteral) findEObject(
+					EnumerationLiteral matchingEnumerationLiteral = findEObject(
 						getMatchCandidates(enumerationLiteral),
 						new NameMatcher(enumerationLiteral));
 
@@ -947,19 +920,21 @@
 						: matchingEnumerationLiteral;
 				}
 
-				public Object caseOperation(Operation operation) {
-					Operation matchingOperation = (Operation) findEObject(
+				@Override
+				public EObject caseOperation(Operation operation) {
+					Operation matchingOperation = findEObject(
 						getMatchCandidates(operation), new NameMatcher(
 							operation) {
 
+							@Override
 							public boolean matches(EObject otherEObject) {
 
 								if (super.matches(otherEObject)) {
 									otherEObject = getPreviouslyMergedEObject(otherEObject);
 
-									List ownedParameters = ((Operation) eObject)
+									List<Parameter> ownedParameters = ((Operation) eObject)
 										.getOwnedParameters();
-									List otherOwnedParameters = ((Operation) otherEObject)
+									List<Parameter> otherOwnedParameters = ((Operation) otherEObject)
 										.getOwnedParameters();
 
 									if (ownedParameters.size() == otherOwnedParameters
@@ -969,9 +944,8 @@
 											.size(); i++) {
 
 											if (!new TypeMatcher(
-												(TypedElement) ownedParameters
-													.get(i))
-												.matches((EObject) otherOwnedParameters
+												ownedParameters.get(i))
+												.matches(otherOwnedParameters
 													.get(i))) {
 
 												return false;
@@ -991,13 +965,14 @@
 						: matchingOperation;
 				}
 
-				public Object casePackage(org.eclipse.uml2.uml.Package package_) {
+				@Override
+				public EObject casePackage(org.eclipse.uml2.uml.Package package_) {
 					org.eclipse.uml2.uml.Package matchingPackage = null;
 
 					if (mergedPackages.contains(package_)) {
 						matchingPackage = receivingPackage;
 					} else {
-						matchingPackage = (org.eclipse.uml2.uml.Package) findEObject(
+						matchingPackage = findEObject(
 							getMatchCandidates(package_), new NameMatcher(
 								package_));
 					}
@@ -1007,8 +982,9 @@
 						: matchingPackage;
 				}
 
-				public Object caseParameter(Parameter parameter) {
-					Parameter matchingParameter = (Parameter) findEObject(
+				@Override
+				public EObject caseParameter(Parameter parameter) {
+					Parameter matchingParameter = findEObject(
 						getMatchCandidates(parameter), new NameMatcher(
 							parameter));
 
@@ -1017,8 +993,9 @@
 						: matchingParameter;
 				}
 
-				public Object caseProperty(Property property) {
-					Property matchingProperty = (Property) findEObject(
+				@Override
+				public EObject caseProperty(Property property) {
+					Property matchingProperty = findEObject(
 						getMatchCandidates(property), new NameMatcher(property));
 
 					return matchingProperty == null
@@ -1026,7 +1003,8 @@
 						: matchingProperty;
 				}
 
-				public Object defaultCase(EObject eObject) {
+				@Override
+				public EObject defaultCase(EObject eObject) {
 					Element baseElement = getBaseElement(eObject);
 
 					return baseElement == null
@@ -1035,12 +1013,13 @@
 							getTarget(eObject.eClass()));
 				}
 
-				protected Object doSwitch(EClass theEClass, EObject theEObject) {
+				@Override
+				protected EObject doSwitch(EClass theEClass, EObject theEObject) {
 
 					if (theEClass.eContainer() != modelPackage) {
 
 						if (theEClass == EcorePackage.Literals.EANNOTATION) {
-							EAnnotation matchingEAnnotation = (EAnnotation) findEObject(
+							EAnnotation matchingEAnnotation = findEObject(
 								getMatchCandidates(theEObject),
 								new SourceMatcher((EAnnotation) theEObject));
 
@@ -1048,12 +1027,14 @@
 								return matchingEAnnotation;
 							}
 						} else if (theEClass == EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY) {
-							BasicEMap.Entry matchingEntry = (BasicEMap.Entry) findEObject(
-								getMatchCandidates(theEObject), new KeyMatcher(
-									(BasicEMap.Entry) theEObject));
+							@SuppressWarnings("unchecked")
+							BasicEMap.Entry<String, String> matchingEntry = findEObject(
+								getMatchCandidates(theEObject),
+								new KeyMatcher(
+									(BasicEMap.Entry<String, String>) theEObject));
 
 							if (matchingEntry != null) {
-								return matchingEntry;
+								return (EObject) matchingEntry;
 							}
 						} else if (getStereotype(theEClass) != null) {
 							EObject matchingEObject = findEObject(
@@ -1071,21 +1052,20 @@
 			}.doSwitch(eObject);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreUtil.Copier#copy(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public EObject copy(EObject eObject) {
 			EObject copyEObject = super.copy(eObject);
 
 			if (eObject != copyEObject) {
-				List mergedEObjects = (List) resultingToMergedEObjectMap
+				List<EObject> mergedEObjects = resultingToMergedEObjectMap
 					.get(copyEObject);
 
 				if (mergedEObjects == null) {
-					resultingToMergedEObjectMap.put(copyEObject,
-						mergedEObjects = new UniqueEList.FastCompare(1));
+					resultingToMergedEObjectMap
+						.put(
+							copyEObject,
+							mergedEObjects = new UniqueEList.FastCompare<EObject>(
+								1));
 				}
 
 				mergedEObjects.add(eObject);
@@ -1099,26 +1079,26 @@
 			return copyEObject;
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreUtil.Copier#copyAll(java.util.Collection)
-		 */
-		public Collection copyAll(Collection eObjects) {
-			Collection result = new ArrayList(eObjects.size());
+		@Override
+		public <T> Collection<T> copyAll(Collection<? extends T> eObjects) {
+			Collection<T> result = new ArrayList<T>(eObjects.size());
 
-			for (Iterator o = eObjects.iterator(); o.hasNext();) {
-				EObject eObject = (EObject) o.next();
-				result.add(copy(eObject));
+			for (Object object : eObjects) {
+				@SuppressWarnings("unchecked")
+				T copy = (T) copy((EObject) object);
+				result.add(copy);
 
-				for (Iterator eAllContents = eObject.eAllContents(); eAllContents
-					.hasNext();) {
+				for (TreeIterator<EObject> eAllContents = ((EObject) object)
+					.eAllContents(); eAllContents.hasNext();) {
 
-					EObject childEObject = (EObject) eAllContents.next();
+					EObject childEObject = eAllContents.next();
 
 					if (childEObject instanceof Element) {
-						result.addAll(super.copyAll(((Element) childEObject)
-							.getStereotypeApplications()));
+						@SuppressWarnings("unchecked")
+						Collection<T> copies = (Collection<T>) super
+							.copyAll(((Element) childEObject)
+								.getStereotypeApplications());
+						result.addAll(copies);
 					}
 				}
 			}
@@ -1126,20 +1106,19 @@
 			return result;
 		}
 
-		protected Collection getAllMergedPackages(
+		protected Collection<org.eclipse.uml2.uml.Package> getAllMergedPackages(
 				org.eclipse.uml2.uml.Package package_) {
-			return getAllMergedPackages(package_, new UniqueEList.FastCompare());
+			return getAllMergedPackages(package_,
+				new UniqueEList.FastCompare<org.eclipse.uml2.uml.Package>());
 		}
 
-		private Collection getAllMergedPackages(
+		private Collection<org.eclipse.uml2.uml.Package> getAllMergedPackages(
 				org.eclipse.uml2.uml.Package package_,
-				Collection allMergedPackages) {
+				Collection<org.eclipse.uml2.uml.Package> allMergedPackages) {
 
-			for (Iterator packageMerges = package_.getPackageMerges()
-				.iterator(); packageMerges.hasNext();) {
-
-				org.eclipse.uml2.uml.Package mergedPackage = ((PackageMerge) packageMerges
-					.next()).getMergedPackage();
+			for (PackageMerge packageMerge : package_.getPackageMerges()) {
+				org.eclipse.uml2.uml.Package mergedPackage = packageMerge
+					.getMergedPackage();
 
 				if (mergedPackage != null) {
 					getAllMergedPackages(mergedPackage, allMergedPackages);
@@ -1151,29 +1130,24 @@
 			return allMergedPackages;
 		}
 
-		protected void processDifferentPropertyStaticity(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processDifferentPropertyStaticity(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator entries = resultingToMergedEObjectMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Object key = entry.getKey();
+			for (Map.Entry<EObject, List<EObject>> entry : resultingToMergedEObjectMap
+				.entrySet()) {
+				EObject key = entry.getKey();
 
 				if (key instanceof Property) {
 					Property property = (Property) key;
 
-					for (Iterator mergedProperties = ((List) entry.getValue())
-						.iterator(); mergedProperties.hasNext();) {
-
-						Property mergedProperty = (Property) mergedProperties
-							.next();
+					for (EObject mergedProperty : entry.getValue()) {
 
 						if (OPTION__REPORT.equals(options
 							.get(OPTION__DIFFERENT_PROPERTY_STATICITY))
 							&& diagnostics != null) {
 
-							if (property.isStatic() != mergedProperty
+							if (property.isStatic() != ((Property) mergedProperty)
 								.isStatic()) {
 
 								diagnostics
@@ -1195,29 +1169,24 @@
 			}
 		}
 
-		protected void processDifferentPropertyUniqueness(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processDifferentPropertyUniqueness(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator entries = resultingToMergedEObjectMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Object key = entry.getKey();
+			for (Map.Entry<EObject, List<EObject>> entry : resultingToMergedEObjectMap
+				.entrySet()) {
+				EObject key = entry.getKey();
 
 				if (key instanceof Property) {
 					Property property = (Property) key;
 
-					for (Iterator mergedProperties = ((List) entry.getValue())
-						.iterator(); mergedProperties.hasNext();) {
-
-						Property mergedProperty = (Property) mergedProperties
-							.next();
+					for (EObject mergedProperty : entry.getValue()) {
 
 						if (OPTION__REPORT.equals(options
 							.get(OPTION__DIFFERENT_PROPERTY_UNIQUENESS))
 							&& diagnostics != null) {
 
-							if (property.isUnique() != mergedProperty
+							if (property.isUnique() != ((Property) mergedProperty)
 								.isUnique()) {
 
 								diagnostics
@@ -1239,26 +1208,21 @@
 			}
 		}
 
-		protected void processImplicitRedefinitions(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processImplicitRedefinitions(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator resultingEObjects = resultingToMergedEObjectMap
-				.keySet().iterator(); resultingEObjects.hasNext();) {
-
-				EObject resultingEObject = (EObject) resultingEObjects.next();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Feature) {
 					Feature redefiningFeature = (Feature) resultingEObject;
-					List redefinedFeatures = getRedefinedFeatures(redefiningFeature);
+					EList<Feature> redefinedFeatures = getRedefinedFeatures(redefiningFeature);
 
-					for (Iterator validRedefinitions = findValidRedefinitions(
-						redefiningFeature, redefiningFeature.getName())
-						.iterator(); validRedefinitions.hasNext();) {
+					for (Feature validRedefinition : findValidRedefinitions(
+						redefiningFeature, redefiningFeature.getName())) {
 
-						Feature redefinedFeature = (Feature) validRedefinitions
-							.next();
-
-						if (!redefinedFeatures.contains(redefinedFeature)) {
+						if (!redefinedFeatures.contains(validRedefinition)) {
 
 							if (OPTION__PROCESS.equals(options
 								.get(OPTION__IMPLICIT_REDEFINITIONS))) {
@@ -1275,12 +1239,12 @@
 													getMessageSubstitutions(
 														context,
 														redefiningFeature,
-														redefinedFeature)),
+														validRedefinition)),
 											new Object[]{redefiningFeature,
-												redefinedFeature}));
+												validRedefinition}));
 								}
 
-								redefinedFeatures.add(redefinedFeature);
+								redefinedFeatures.add(validRedefinition);
 							} else if (OPTION__REPORT.equals(options
 								.get(OPTION__IMPLICIT_REDEFINITIONS))
 								&& diagnostics != null) {
@@ -1295,9 +1259,9 @@
 												"_UI_PackageMerger_ReportImplicitFeatureRedefinition_diagnostic", //$NON-NLS-1$
 												getMessageSubstitutions(
 													context, redefiningFeature,
-													redefinedFeature)),
+													validRedefinition)),
 										new Object[]{redefiningFeature,
-											redefinedFeature}));
+											validRedefinition}));
 							}
 						}
 					}
@@ -1305,22 +1269,18 @@
 			}
 		}
 
-		protected void processInvalidRedefinitions(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processInvalidRedefinitions(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator resultingEObjects = resultingToMergedEObjectMap
-				.keySet().iterator(); resultingEObjects.hasNext();) {
-
-				EObject resultingEObject = (EObject) resultingEObjects.next();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Feature) {
 					Feature redefiningFeature = (Feature) resultingEObject;
-					List redefinedFeatures = getRedefinedFeatures(redefiningFeature);
+					EList<Feature> redefinedFeatures = getRedefinedFeatures(redefiningFeature);
 
-					for (Iterator i = new ArrayList(redefinedFeatures)
-						.iterator(); i.hasNext();) {
-
-						Feature redefinedFeature = (Feature) i.next();
+					for (Feature redefinedFeature : new ArrayList<Feature>(
+						redefinedFeatures)) {
 
 						if (!UMLUtil.isRedefinitionValid(redefiningFeature,
 							redefinedFeature)) {
@@ -1371,16 +1331,12 @@
 						if (OPTION__PROCESS.equals(options
 							.get(OPTION__INVALID_REDEFINITIONS))) {
 
-							Collection validRedefinitions = findValidRedefinitions(
+							Collection<Feature> validRedefinitions = findValidRedefinitions(
 								redefiningFeature, redefinedFeature.getName());
 
 							if (!validRedefinitions.isEmpty()) {
 
-								for (Iterator j = validRedefinitions.iterator(); j
-									.hasNext();) {
-
-									Feature validRedefinition = (Feature) j
-										.next();
+								for (Feature validRedefinition : validRedefinitions) {
 
 									if (!redefinedFeatures
 										.contains(validRedefinition)) {
@@ -1421,23 +1377,19 @@
 			}
 		}
 
-		protected void processInvalidSubsets(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processInvalidSubsets(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator resultingEObjects = resultingToMergedEObjectMap
-				.keySet().iterator(); resultingEObjects.hasNext();) {
-
-				EObject resultingEObject = (EObject) resultingEObjects.next();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Property) {
 					Property subsettingProperty = (Property) resultingEObject;
-					List subsettedProperties = subsettingProperty
+					EList<Property> subsettedProperties = subsettingProperty
 						.getSubsettedProperties();
 
-					for (Iterator i = new ArrayList(subsettedProperties)
-						.iterator(); i.hasNext();) {
-
-						Property subsettedProperty = (Property) i.next();
+					for (Property subsettedProperty : new ArrayList<Property>(
+						subsettedProperties)) {
 
 						if (!UMLUtil.isSubsetValid(subsettingProperty,
 							subsettedProperty)) {
@@ -1489,15 +1441,12 @@
 						if (OPTION__PROCESS.equals(options
 							.get(OPTION__INVALID_SUBSETS))) {
 
-							Collection validSubsets = findValidSubsets(
+							Collection<Property> validSubsets = findValidSubsets(
 								subsettingProperty, subsettedProperty.getName());
 
 							if (!validSubsets.isEmpty()) {
 
-								for (Iterator j = validSubsets.iterator(); j
-									.hasNext();) {
-
-									Property validSubset = (Property) j.next();
+								for (Property validSubset : validSubsets) {
 
 									if (!subsettedProperties
 										.contains(validSubset)) {
@@ -1536,14 +1485,12 @@
 			}
 		}
 
-		protected void processEmptyUnions(Map options,
-				DiagnosticChain diagnostics, Map context) {
-			Map unionToSubsettingPropertyMap = new LinkedHashMap();
+		protected void processEmptyUnions(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
+			Map<Property, EList<Property>> unionToSubsettingPropertyMap = new LinkedHashMap<Property, EList<Property>>();
 
-			for (Iterator resultingEObjects = resultingToMergedEObjectMap
-				.keySet().iterator(); resultingEObjects.hasNext();) {
-
-				EObject resultingEObject = (EObject) resultingEObjects.next();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Property) {
 					Property property = (Property) resultingEObject;
@@ -1552,25 +1499,21 @@
 						&& !unionToSubsettingPropertyMap.containsKey(property)) {
 
 						unionToSubsettingPropertyMap.put(property,
-							new UniqueEList.FastCompare());
+							new UniqueEList.FastCompare<Property>());
 					}
 
-					for (Iterator subsettedProperties = property
-						.getSubsettedProperties().iterator(); subsettedProperties
-						.hasNext();) {
-
-						Property subsettedProperty = (Property) subsettedProperties
-							.next();
+					for (Property subsettedProperty : property
+						.getSubsettedProperties()) {
 
 						if (subsettedProperty.isDerivedUnion()) {
-							List subsettingProperties = (List) unionToSubsettingPropertyMap
+							EList<Property> subsettingProperties = unionToSubsettingPropertyMap
 								.get(subsettedProperty);
 
 							if (subsettingProperties == null) {
 								unionToSubsettingPropertyMap
 									.put(
 										subsettedProperty,
-										subsettingProperties = new UniqueEList.FastCompare());
+										subsettingProperties = new UniqueEList.FastCompare<Property>());
 							}
 
 							subsettingProperties.add(property);
@@ -1579,13 +1522,11 @@
 				}
 			}
 
-			for (Iterator entries = unionToSubsettingPropertyMap.entrySet()
-				.iterator(); entries.hasNext();) {
+			for (Map.Entry<Property, EList<Property>> entry : unionToSubsettingPropertyMap
+				.entrySet()) {
 
-				Map.Entry entry = (Map.Entry) entries.next();
-
-				if (((List) entry.getValue()).isEmpty()) {
-					Property unionProperty = (Property) entry.getKey();
+				if (entry.getValue().isEmpty()) {
+					Property unionProperty = entry.getKey();
 
 					if (OPTION__PROCESS.equals(options
 						.get(OPTION__EMPTY_UNIONS))) {
@@ -1625,32 +1566,30 @@
 			}
 		}
 
-		protected void processRedundantGeneralizations(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processRedundantGeneralizations(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator resultingEObjects = resultingToMergedEObjectMap
-				.keySet().iterator(); resultingEObjects.hasNext();) {
-
-				EObject resultingEObject = (EObject) resultingEObjects.next();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Classifier) {
 					Classifier classifier = (Classifier) resultingEObject;
-					EList generalizations = classifier.getGeneralizations();
+					EList<Generalization> generalizations = classifier
+						.getGeneralizations();
 
-					for (Iterator i = new ArrayList(generalizations).iterator(); i
-						.hasNext();) {
-
-						Classifier general = ((Generalization) i.next())
-							.getGeneral();
+					for (Generalization generalization : new ArrayList<Generalization>(
+						generalizations)) {
+						Classifier general = generalization.getGeneral();
 
 						if (general != null) {
-							EList generalAllParents = general.allParents();
+							EList<Classifier> generalAllParents = general
+								.allParents();
 
-							for (Iterator j = generalizations.iterator(); j
-								.hasNext();) {
+							for (Iterator<Generalization> g = generalizations
+								.iterator(); g.hasNext();) {
 
-								Generalization otherGeneralization = (Generalization) j
-									.next();
+								Generalization otherGeneralization = g.next();
 								Classifier otherGeneral = otherGeneralization
 									.getGeneral();
 
@@ -1681,7 +1620,7 @@
 														otherGeneral}));
 										}
 
-										j.remove();
+										g.remove();
 									} else if (OPTION__REPORT
 										.equals(options
 											.get(OPTION__REDUNDANT_GENERALIZATIONS))
@@ -1713,43 +1652,36 @@
 			}
 		}
 
-		protected void processAssociationSpecializations(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processAssociationSpecializations(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator entries = resultingToMergedEObjectMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				EObject resultingEObject = (EObject) entry.getKey();
+			for (EObject resultingEObject : resultingToMergedEObjectMap
+				.keySet()) {
 
 				if (resultingEObject instanceof Association) {
 					Association association = (Association) resultingEObject;
 
-					List generalAssociations = new UniqueEList.FastCompare();
+					EList<Association> generalAssociations = new UniqueEList.FastCompare<Association>();
 
-					for (Iterator memberEnds = association.getMemberEnds()
-						.iterator(); memberEnds.hasNext();) {
+					for (Property memberEnd : association.getMemberEnds()) {
 
-						Property memberEnd = (Property) memberEnds.next();
+						for (Property redefinedProperty : memberEnd
+							.getRedefinedProperties()) {
 
-						for (Iterator redefinedProperties = memberEnd
-							.getRedefinedProperties().iterator(); redefinedProperties
-							.hasNext();) {
-
-							Association redefinedAssociation = ((Property) redefinedProperties
-								.next()).getAssociation();
+							Association redefinedAssociation = redefinedProperty
+								.getAssociation();
 
 							if (redefinedAssociation != null) {
 								generalAssociations.add(redefinedAssociation);
 							}
 						}
 
-						for (Iterator subsettedProperties = memberEnd
-							.getSubsettedProperties().iterator(); subsettedProperties
-							.hasNext();) {
+						for (Property subsettedProperty : memberEnd
+							.getSubsettedProperties()) {
 
-							Association subsettedAssociation = ((Property) subsettedProperties
-								.next()).getAssociation();
+							Association subsettedAssociation = subsettedProperty
+								.getAssociation();
 
 							if (subsettedAssociation != null) {
 								generalAssociations.add(subsettedAssociation);
@@ -1757,13 +1689,10 @@
 						}
 					}
 
-					for (Iterator i = generalAssociations.iterator(); i
-						.hasNext();) {
-
-						Association generalAssocation = (Association) i.next();
+					for (Association generalAssociation : generalAssociations) {
 
 						if (!association.allParents().contains(
-							generalAssocation)) {
+							generalAssociation)) {
 
 							if (OPTION__PROCESS.equals(options
 								.get(OPTION__ASSOCIATION_SPECIALIZATIONS))) {
@@ -1779,13 +1708,13 @@
 													"_UI_PackageMerger_ProcessAssociationSpecialization_diagnostic", //$NON-NLS-1$
 													getMessageSubstitutions(
 														context, association,
-														generalAssocation)),
+														generalAssociation)),
 											new Object[]{association,
-												generalAssocation}));
+												generalAssociation}));
 								}
 
 								association
-									.createGeneralization(generalAssocation);
+									.createGeneralization(generalAssociation);
 							} else if (OPTION__REPORT.equals(options
 								.get(OPTION__ASSOCIATION_SPECIALIZATIONS))
 								&& diagnostics != null) {
@@ -1800,9 +1729,9 @@
 												"_UI_PackageMerger_ReportAssociationSpecialization_diagnostic", //$NON-NLS-1$
 												getMessageSubstitutions(
 													context, association,
-													generalAssocation)),
+													generalAssociation)),
 										new Object[]{association,
-											generalAssocation}));
+											generalAssociation}));
 							}
 						}
 					}
@@ -1810,24 +1739,20 @@
 			}
 		}
 
-		protected void processCapabilities(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processCapabilities(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator entries = resultingToMergedEObjectMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				EObject resultingEObject = (EObject) entry.getKey();
+			for (Map.Entry<EObject, List<EObject>> entry : resultingToMergedEObjectMap
+				.entrySet()) {
+				EObject resultingEObject = entry.getKey();
 
 				if (resultingEObject instanceof RedefinableElement) {
 					org.eclipse.uml2.uml.Package resultingPackage = ((RedefinableElement) resultingEObject)
 						.getNearestPackage();
 
-					for (Iterator mergedEObjects = ((List) entry.getValue())
-						.iterator(); mergedEObjects.hasNext();) {
-
-						org.eclipse.uml2.uml.Package mergedPackage = ((Element) mergedEObjects
-							.next()).getNearestPackage();
+					for (EObject mergedEObject : entry.getValue()) {
+						org.eclipse.uml2.uml.Package mergedPackage = ((Element) mergedEObject)
+							.getNearestPackage();
 
 						if (OPTION__PROCESS.equals(options
 							.get(OPTION__CAPABILITIES))) {
@@ -1875,8 +1800,8 @@
 			}
 		}
 
-		protected void processOptions(Map options, DiagnosticChain diagnostics,
-				Map context) {
+		protected void processOptions(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 			if (!OPTION__IGNORE.equals(options
 				.get(OPTION__DIFFERENT_PROPERTY_STATICITY))) {
@@ -1943,8 +1868,9 @@
 		 * @param context
 		 *            The cache of context-specific information.
 		 */
-		public void merge(org.eclipse.uml2.uml.Package package_, Map options,
-				DiagnosticChain diagnostics, Map context) {
+		public void merge(org.eclipse.uml2.uml.Package package_,
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 			receivingPackage = package_;
 
 			mergedPackages = getAllMergedPackages(package_);
@@ -1965,7 +1891,7 @@
 	 * elements.
 	 */
 	public static class UML2EcoreConverter
-			extends UMLSwitch
+			extends UMLSwitch<Object>
 			implements Converter {
 
 		protected class NameMatcher
@@ -1983,6 +1909,7 @@
 				super(eTypedElement);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 				return super.matches(otherEObject)
 					&& safeEquals(((ETypedElement) eObject).getEType(),
@@ -1997,21 +1924,22 @@
 				super(eOperation);
 			}
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 
 				if (super.matches(otherEObject)) {
-					List eParameters = ((EOperation) eObject).getEParameters();
+					List<EParameter> eParameters = ((EOperation) eObject)
+						.getEParameters();
 					int eParametersSize = eParameters.size();
-					List otherEParameters = ((EOperation) otherEObject)
+					List<EParameter> otherEParameters = ((EOperation) otherEObject)
 						.getEParameters();
 
 					if (eParametersSize == otherEParameters.size()) {
 
 						for (int i = 0; i < eParametersSize; i++) {
 
-							if (!new ETypeMatcher((ETypedElement) eParameters
-								.get(i)).matches((EObject) otherEParameters
-								.get(i))) {
+							if (!new ETypeMatcher(eParameters.get(i))
+								.matches(otherEParameters.get(i))) {
 
 								return false;
 							}
@@ -2186,9 +2114,9 @@
 		 */
 		public static final int ANNOTATION_DETAILS = DIAGNOSTIC_CODE_OFFSET + 12;
 
-		protected final Map elementToEModelElementMap = new LinkedHashMap();
+		protected final Map<Element, EModelElement> elementToEModelElementMap = new LinkedHashMap<Element, EModelElement>();
 
-		protected Collection packages = null;
+		protected Collection<org.eclipse.uml2.uml.Package> packages = null;
 
 		protected void setName(ENamedElement eNamedElement, String name,
 				boolean validate) {
@@ -2211,29 +2139,29 @@
 				if (!isEmpty(qualifiedName) && type instanceof PrimitiveType) {
 
 					if ("UMLPrimitiveTypes::Boolean".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEBoolean();
+						eType = EcorePackage.Literals.EBOOLEAN;
 					} else if ("UMLPrimitiveTypes::Integer".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEInt();
+						eType = EcorePackage.Literals.EINT;
 					} else if ("UMLPrimitiveTypes::String".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEString();
+						eType = EcorePackage.Literals.ESTRING;
 					} else if ("UMLPrimitiveTypes::UnlimitedNatural".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEInt();
+						eType = EcorePackage.Literals.EINT;
 					} else if ("JavaPrimitiveTypes::boolean".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEBoolean();
+						eType = EcorePackage.Literals.EBOOLEAN;
 					} else if ("JavaPrimitiveTypes::byte".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEByte();
+						eType = EcorePackage.Literals.EBYTE;
 					} else if ("JavaPrimitiveTypes::char".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEChar();
+						eType = EcorePackage.Literals.ECHAR;
 					} else if ("JavaPrimitiveTypes::double".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEDouble();
+						eType = EcorePackage.Literals.EDOUBLE;
 					} else if ("JavaPrimitiveTypes::float".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEFloat();
+						eType = EcorePackage.Literals.EFLOAT;
 					} else if ("JavaPrimitiveTypes::int".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEInt();
+						eType = EcorePackage.Literals.EINT;
 					} else if ("JavaPrimitiveTypes::long".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getELong();
+						eType = EcorePackage.Literals.ELONG;
 					} else if ("JavaPrimitiveTypes::short".equals(qualifiedName)) { //$NON-NLS-1$
-						eType = EcorePackage.eINSTANCE.getEShort();
+						eType = EcorePackage.Literals.ESHORT;
 					} else if (qualifiedName
 						.startsWith("EcorePrimitiveTypes::")) { //$NON-NLS-1$
 
@@ -2267,11 +2195,7 @@
 				+ NamedElement.SEPARATOR + name);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseClass(org.eclipse.uml2.uml.Class)
-		 */
+		@Override
 		public Object caseClass(org.eclipse.uml2.uml.Class class_) {
 			org.eclipse.uml2.uml.Package package_ = class_.getNearestPackage();
 
@@ -2294,18 +2218,11 @@
 			return super.caseClass(class_);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseComment(org.eclipse.uml2.uml.Comment)
-		 */
+		@Override
 		public Object caseComment(Comment comment) {
 
-			for (Iterator annotatedElements = comment.getAnnotatedElements()
-				.iterator(); annotatedElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) doSwitch((Element) annotatedElements
-					.next());
+			for (Element annotatedElement : comment.getAnnotatedElements()) {
+				EModelElement eModelElement = (EModelElement) doSwitch(annotatedElement);
 
 				if (eModelElement != null) {
 					addDocumentation(eModelElement, comment.getBody());
@@ -2315,11 +2232,7 @@
 			return super.caseComment(comment);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseConstraint(org.eclipse.uml2.uml.Constraint)
-		 */
+		@Override
 		public Object caseConstraint(Constraint constraint) {
 			Namespace context = constraint.getContext();
 
@@ -2346,8 +2259,8 @@
 
 								setName(eOperation, name, true);
 
-								eOperation.setEType(EcorePackage.eINSTANCE
-									.getEBoolean());
+								eOperation
+									.setEType(EcorePackage.Literals.EBOOLEAN);
 
 								EParameter eParameter = EcoreFactory.eINSTANCE
 									.createEParameter();
@@ -2355,8 +2268,8 @@
 								eOperation.getEParameters().add(eParameter);
 
 								setName(eParameter, "diagnostics", false); //$NON-NLS-1$
-								eParameter.setEType(EcorePackage.eINSTANCE
-									.getEDiagnosticChain());
+								eParameter
+									.setEType(EcorePackage.Literals.EDIAGNOSTIC_CHAIN);
 
 								eParameter = EcoreFactory.eINSTANCE
 									.createEParameter();
@@ -2364,8 +2277,25 @@
 								eOperation.getEParameters().add(eParameter);
 
 								setName(eParameter, "context", false); //$NON-NLS-1$
-								eParameter.setEType(EcorePackage.eINSTANCE
-									.getEMap());
+
+								EGenericType eGenericType = EcoreFactory.eINSTANCE
+									.createEGenericType();
+								eGenericType
+									.setEClassifier(EcorePackage.Literals.EMAP);
+								EGenericType eGenericKeyType = EcoreFactory.eINSTANCE
+									.createEGenericType();
+								eGenericKeyType
+									.setEClassifier(EcorePackage.Literals.EJAVA_OBJECT);
+								eGenericType.getETypeArguments().add(
+									eGenericKeyType);
+								EGenericType eGenericValueType = EcoreFactory.eINSTANCE
+									.createEGenericType();
+								eGenericValueType
+									.setEClassifier(EcorePackage.Literals.EJAVA_OBJECT);
+								eGenericType.getETypeArguments().add(
+									eGenericValueType);
+
+								eParameter.setEGenericType(eGenericType);
 
 								defaultCase(constraint);
 
@@ -2394,20 +2324,12 @@
 			return super.caseConstraint(constraint);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseEModelElement(org.eclipse.emf.ecore.EModelElement)
-		 */
+		@Override
 		public Object caseEModelElement(EModelElement eModelElement) {
 			return eModelElement;
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseEnumeration(org.eclipse.uml2.uml.Enumeration)
-		 */
+		@Override
 		public Object caseEnumeration(Enumeration enumeration) {
 			org.eclipse.uml2.uml.Package package_ = enumeration
 				.getNearestPackage();
@@ -2429,11 +2351,7 @@
 			return super.caseEnumeration(enumeration);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseEnumerationLiteral(org.eclipse.uml2.uml.EnumerationLiteral)
-		 */
+		@Override
 		public Object caseEnumerationLiteral(
 				EnumerationLiteral enumerationLiteral) {
 			Enumeration enumeration = enumerationLiteral.getEnumeration();
@@ -2472,11 +2390,7 @@
 			return super.caseEnumerationLiteral(enumerationLiteral);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseGeneralization(org.eclipse.uml2.uml.Generalization)
-		 */
+		@Override
 		public Object caseGeneralization(Generalization generalization) {
 			Classifier specific = generalization.getSpecific();
 
@@ -2518,11 +2432,7 @@
 			return super.caseGeneralization(generalization);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseInterfaceRealization(org.eclipse.uml2.uml.InterfaceRealization)
-		 */
+		@Override
 		public Object caseInterfaceRealization(
 				InterfaceRealization interfaceRealization) {
 			BehavioredClassifier implementingClassifier = interfaceRealization
@@ -2549,11 +2459,7 @@
 			return super.caseInterfaceRealization(interfaceRealization);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseInterface(org.eclipse.uml2.uml.Interface)
-		 */
+		@Override
 		public Object caseInterface(Interface interface_) {
 			org.eclipse.uml2.uml.Package package_ = interface_
 				.getNearestPackage();
@@ -2578,11 +2484,7 @@
 			return super.caseInterface(interface_);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseMultiplicityElement(org.eclipse.uml2.uml.MultiplicityElement)
-		 */
+		@Override
 		public Object caseMultiplicityElement(
 				MultiplicityElement multiplicityElement) {
 			Object eModelElement = elementToEModelElementMap
@@ -2612,11 +2514,7 @@
 			}
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseOperation(org.eclipse.uml2.uml.Operation)
-		 */
+		@Override
 		public Object caseOperation(Operation operation) {
 			Namespace namespace = operation.getNamespace();
 
@@ -2632,13 +2530,10 @@
 
 				setName(eOperation, operation);
 
-				EList eExceptions = eOperation.getEExceptions();
+				EList<EClassifier> eExceptions = eOperation.getEExceptions();
 
-				for (Iterator raisedExceptions = operation
-					.getRaisedExceptions().iterator(); raisedExceptions
-					.hasNext();) {
-
-					EClassifier eType = getEType((Type) raisedExceptions.next());
+				for (Type raisedException : operation.getRaisedExceptions()) {
+					EClassifier eType = getEType(raisedException);
 
 					if (eType != null) {
 						eExceptions.add(eType);
@@ -2670,11 +2565,7 @@
 			return super.caseOperation(operation);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#casePackage(org.eclipse.uml2.uml.Package)
-		 */
+		@Override
 		public Object casePackage(org.eclipse.uml2.uml.Package package_) {
 			EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
 			elementToEModelElementMap.put(package_, ePackage);
@@ -2709,11 +2600,7 @@
 			return ePackage;
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseParameter(org.eclipse.uml2.uml.Parameter)
-		 */
+		@Override
 		public Object caseParameter(Parameter parameter) {
 			Operation operation = parameter.getOperation();
 
@@ -2740,11 +2627,7 @@
 			return super.caseParameter(parameter);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#casePrimitiveType(org.eclipse.uml2.uml.PrimitiveType)
-		 */
+		@Override
 		public Object casePrimitiveType(PrimitiveType primitiveType) {
 			org.eclipse.uml2.uml.Package package_ = primitiveType
 				.getNearestPackage();
@@ -2768,11 +2651,7 @@
 			return super.casePrimitiveType(primitiveType);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseDataType(org.eclipse.uml2.uml.DataType)
-		 */
+		@Override
 		public Object caseDataType(DataType dataType) {
 			org.eclipse.uml2.uml.Package package_ = dataType
 				.getNearestPackage();
@@ -2794,11 +2673,7 @@
 			return super.caseDataType(dataType);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseProperty(org.eclipse.uml2.uml.Property)
-		 */
+		@Override
 		public Object caseProperty(Property property) {
 			Namespace namespace = property.getNamespace();
 
@@ -2867,11 +2742,7 @@
 			return super.caseProperty(property);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseTypedElement(org.eclipse.uml2.uml.TypedElement)
-		 */
+		@Override
 		public Object caseTypedElement(TypedElement typedElement) {
 			Object eModelElement = elementToEModelElementMap.get(typedElement);
 
@@ -2886,27 +2757,17 @@
 			return super.caseTypedElement(typedElement);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#defaultCase(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public Object defaultCase(EObject eObject) {
 
-			for (Iterator eContents = eObject.eContents().iterator(); eContents
-				.hasNext();) {
-
-				doSwitch((EObject) eContents.next());
+			for (EObject eContent : eObject.eContents()) {
+				doSwitch(eContent);
 			}
 
 			return super.defaultCase(eObject);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#doSwitch(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public Object doSwitch(EObject eObject) {
 
 			if (!elementToEModelElementMap.containsKey(eObject)) {
@@ -2918,8 +2779,9 @@
 
 		protected void processEcoreTaggedValue(EModelElement eModelElement,
 				EStructuralFeature eStructuralFeature, Element element,
-				Stereotype stereotype, String propertyName, Map options,
-				DiagnosticChain diagnostics, Map context) {
+				Stereotype stereotype, String propertyName,
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
 			if (element.hasValue(stereotype, propertyName)) {
 				Object value = element.getValue(stereotype, propertyName);
@@ -3147,19 +3009,22 @@
 		}
 
 		protected void processEcoreTaggedValues(EClassifier eClassifier,
-				final Element element, final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
-			Stereotype eClassifierStereotype = (Stereotype) new EcoreSwitch() {
+				final Element element, final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
+			Stereotype eClassifierStereotype = new EcoreSwitch<Stereotype>() {
 
-				public Object caseEClass(EClass eClass) {
+				@Override
+				public Stereotype caseEClass(EClass eClass) {
 					Stereotype eClassStereotype = getAppliedEcoreStereotype(
 						element, STEREOTYPE__E_CLASS);
 
 					if (eClassStereotype != null) {
-						processEcoreTaggedValue(eClass, EcorePackage.eINSTANCE
-							.getENamedElement_Name(), element,
-							eClassStereotype, TAG_DEFINITION__CLASS_NAME,
-							options, diagnostics, context);
+						processEcoreTaggedValue(eClass,
+							EcorePackage.Literals.ENAMED_ELEMENT__NAME,
+							element, eClassStereotype,
+							TAG_DEFINITION__CLASS_NAME, options, diagnostics,
+							context);
 
 						processEcoreTaggedValue(eClass, null, element,
 							eClassStereotype, TAG_DEFINITION__XML_CONTENT_KIND,
@@ -3169,13 +3034,14 @@
 					return eClassStereotype;
 				}
 
-				public Object caseEDataType(EDataType eDataType) {
+				@Override
+				public Stereotype caseEDataType(EDataType eDataType) {
 					Stereotype eDataTypeStereotype = getAppliedEcoreStereotype(
 						element, STEREOTYPE__E_DATA_TYPE);
 
 					if (eDataTypeStereotype != null) {
 						processEcoreTaggedValue(eDataType,
-							EcorePackage.eINSTANCE.getENamedElement_Name(),
+							EcorePackage.Literals.ENAMED_ELEMENT__NAME,
 							element, eDataTypeStereotype,
 							TAG_DEFINITION__DATA_TYPE_NAME, options,
 							diagnostics, context);
@@ -3190,22 +3056,25 @@
 					eClassifierStereotype, TAG_DEFINITION__XML_NAME, options,
 					diagnostics, context);
 
-				processEcoreTaggedValue(eClassifier, EcorePackage.eINSTANCE
-					.getEClassifier_InstanceClassName(), element,
-					eClassifierStereotype, TAG_DEFINITION__INSTANCE_CLASS_NAME,
-					options, diagnostics, context);
+				processEcoreTaggedValue(eClassifier,
+					EcorePackage.Literals.ECLASSIFIER__INSTANCE_CLASS_NAME,
+					element, eClassifierStereotype,
+					TAG_DEFINITION__INSTANCE_CLASS_NAME, options, diagnostics,
+					context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(EEnum eEnum, Element element,
-				Map options, DiagnosticChain diagnostics, Map context) {
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 			Stereotype eEnumStereotype = getAppliedEcoreStereotype(element,
 				STEREOTYPE__E_ENUM);
 
 			if (eEnumStereotype != null) {
-				processEcoreTaggedValue(eEnum, EcorePackage.eINSTANCE
-					.getENamedElement_Name(), element, eEnumStereotype,
-					TAG_DEFINITION__ENUM_NAME, options, diagnostics, context);
+				processEcoreTaggedValue(eEnum,
+					EcorePackage.Literals.ENAMED_ELEMENT__NAME, element,
+					eEnumStereotype, TAG_DEFINITION__ENUM_NAME, options,
+					diagnostics, context);
 
 				processEcoreTaggedValue(eEnum, null, element, eEnumStereotype,
 					TAG_DEFINITION__XML_NAME, options, diagnostics, context);
@@ -3213,53 +3082,55 @@
 		}
 
 		protected void processEcoreTaggedValues(EEnumLiteral eEnumLiteral,
-				Element element, Map options, DiagnosticChain diagnostics,
-				Map context) {
+				Element element, Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 			Stereotype eEnumLiteralStereotype = getAppliedEcoreStereotype(
 				element, STEREOTYPE__E_ENUM_LITERAL);
 
 			if (eEnumLiteralStereotype != null) {
-				processEcoreTaggedValue(eEnumLiteral, EcorePackage.eINSTANCE
-					.getENamedElement_Name(), element, eEnumLiteralStereotype,
-					TAG_DEFINITION__ENUM_LITERAL_NAME, options, diagnostics,
-					context);
+				processEcoreTaggedValue(eEnumLiteral,
+					EcorePackage.Literals.ENAMED_ELEMENT__NAME, element,
+					eEnumLiteralStereotype, TAG_DEFINITION__ENUM_LITERAL_NAME,
+					options, diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(EOperation eOperation,
-				Element element, Map options, DiagnosticChain diagnostics,
-				Map context) {
+				Element element, Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 			Stereotype eOperationStereotype = getAppliedEcoreStereotype(
 				element, STEREOTYPE__E_OPERATION);
 
 			if (eOperationStereotype != null) {
-				processEcoreTaggedValue(eOperation, EcorePackage.eINSTANCE
-					.getENamedElement_Name(), element, eOperationStereotype,
-					TAG_DEFINITION__OPERATION_NAME, options, diagnostics,
-					context);
+				processEcoreTaggedValue(eOperation,
+					EcorePackage.Literals.ENAMED_ELEMENT__NAME, element,
+					eOperationStereotype, TAG_DEFINITION__OPERATION_NAME,
+					options, diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(EPackage ePackage,
-				Element element, Map options, DiagnosticChain diagnostics,
-				Map context) {
+				Element element, Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 			Stereotype ePackageStereotype = getAppliedEcoreStereotype(element,
 				STEREOTYPE__E_PACKAGE);
 
 			if (ePackageStereotype != null) {
-				processEcoreTaggedValue(ePackage, EcorePackage.eINSTANCE
-					.getENamedElement_Name(), element, ePackageStereotype,
-					TAG_DEFINITION__PACKAGE_NAME, options, diagnostics, context);
+				processEcoreTaggedValue(ePackage,
+					EcorePackage.Literals.ENAMED_ELEMENT__NAME, element,
+					ePackageStereotype, TAG_DEFINITION__PACKAGE_NAME, options,
+					diagnostics, context);
 
-				processEcoreTaggedValue(ePackage, EcorePackage.eINSTANCE
-					.getEPackage_NsPrefix(), element, ePackageStereotype,
-					TAG_DEFINITION__NS_PREFIX, options, diagnostics, context);
+				processEcoreTaggedValue(ePackage,
+					EcorePackage.Literals.EPACKAGE__NS_PREFIX, element,
+					ePackageStereotype, TAG_DEFINITION__NS_PREFIX, options,
+					diagnostics, context);
 
 				if (isEmpty(ePackage.getNsPrefix())) {
-					processEcoreTaggedValue(ePackage, EcorePackage.eINSTANCE
-						.getEPackage_NsPrefix(), element, ePackageStereotype,
-						TAG_DEFINITION__BASE_PACKAGE, options, diagnostics,
-						context);
+					processEcoreTaggedValue(ePackage,
+						EcorePackage.Literals.EPACKAGE__NS_PREFIX, element,
+						ePackageStereotype, TAG_DEFINITION__BASE_PACKAGE,
+						options, diagnostics, context);
 
 					String nsPrefix = ePackage.getNsPrefix();
 
@@ -3269,45 +3140,48 @@
 					}
 				}
 
-				processEcoreTaggedValue(ePackage, EcorePackage.eINSTANCE
-					.getEPackage_NsURI(), element, ePackageStereotype,
-					TAG_DEFINITION__NS_URI, options, diagnostics, context);
+				processEcoreTaggedValue(ePackage,
+					EcorePackage.Literals.EPACKAGE__NS_URI, element,
+					ePackageStereotype, TAG_DEFINITION__NS_URI, options,
+					diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(EParameter eParameter,
-				Element element, Map options, DiagnosticChain diagnostics,
-				Map context) {
+				Element element, Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 			Stereotype eParameterStereotype = getAppliedEcoreStereotype(
 				element, STEREOTYPE__E_PARAMETER);
 
 			if (eParameterStereotype != null) {
-				processEcoreTaggedValue(eParameter, EcorePackage.eINSTANCE
-					.getENamedElement_Name(), element, eParameterStereotype,
-					TAG_DEFINITION__PARAMETER_NAME, options, diagnostics,
-					context);
+				processEcoreTaggedValue(eParameter,
+					EcorePackage.Literals.ENAMED_ELEMENT__NAME, element,
+					eParameterStereotype, TAG_DEFINITION__PARAMETER_NAME,
+					options, diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(
 				EStructuralFeature eStructuralFeature, final Element element,
-				final Map options, final DiagnosticChain diagnostics,
-				final Map context) {
-			Stereotype eStructuralFeatureStereotype = (Stereotype) new EcoreSwitch() {
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
+			Stereotype eStructuralFeatureStereotype = new EcoreSwitch<Stereotype>() {
 
-				public Object caseEAttribute(EAttribute eAttribute) {
+				@Override
+				public Stereotype caseEAttribute(EAttribute eAttribute) {
 					Stereotype eAttributeStereotype = getAppliedEcoreStereotype(
 						element, STEREOTYPE__E_ATTRIBUTE);
 
 					if (eAttributeStereotype != null) {
 						processEcoreTaggedValue(eAttribute,
-							EcorePackage.eINSTANCE.getENamedElement_Name(),
+							EcorePackage.Literals.ENAMED_ELEMENT__NAME,
 							element, eAttributeStereotype,
 							TAG_DEFINITION__ATTRIBUTE_NAME, options,
 							diagnostics, context);
 
 						processEcoreTaggedValue(eAttribute,
-							EcorePackage.eINSTANCE.getEAttribute_ID(), element,
+							EcorePackage.Literals.EATTRIBUTE__ID, element,
 							eAttributeStereotype, TAG_DEFINITION__IS_ID,
 							options, diagnostics, context);
 					}
@@ -3315,21 +3189,21 @@
 					return eAttributeStereotype;
 				}
 
-				public Object caseEReference(EReference eReference) {
+				@Override
+				public Stereotype caseEReference(EReference eReference) {
 					Stereotype eReferenceStereotype = getAppliedEcoreStereotype(
 						element, STEREOTYPE__E_REFERENCE);
 
 					if (eReferenceStereotype != null) {
 						processEcoreTaggedValue(eReference,
-							EcorePackage.eINSTANCE.getENamedElement_Name(),
+							EcorePackage.Literals.ENAMED_ELEMENT__NAME,
 							element, eReferenceStereotype,
 							TAG_DEFINITION__REFERENCE_NAME, options,
 							diagnostics, context);
 
 						processEcoreTaggedValue(eReference,
-							EcorePackage.eINSTANCE
-								.getEReference_ResolveProxies(), element,
-							eReferenceStereotype,
+							EcorePackage.Literals.EREFERENCE__RESOLVE_PROXIES,
+							element, eReferenceStereotype,
 							TAG_DEFINITION__IS_RESOLVE_PROXIES, options,
 							diagnostics, context);
 					}
@@ -3340,18 +3214,18 @@
 
 			if (eStructuralFeatureStereotype != null) {
 				processEcoreTaggedValue(eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Transient(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__TRANSIENT,
 					element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_TRANSIENT, options, diagnostics, context);
 
 				processEcoreTaggedValue(eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Unsettable(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__UNSETTABLE,
 					element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_UNSETTABLE, options, diagnostics,
 					context);
 
 				processEcoreTaggedValue(eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Volatile(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__TRANSIENT,
 					element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_VOLATILE, options, diagnostics, context);
 
@@ -3375,66 +3249,71 @@
 			}
 		}
 
-		protected void processEcoreTaggedValues(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processEcoreTaggedValues(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
+			for (final Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				EModelElement eModelElement = entry.getValue();
 
-				final Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+				new EcoreSwitch<Object>() {
 
-				new EcoreSwitch() {
-
+					@Override
 					public Object caseEClassifier(EClassifier eClassifier) {
-						processEcoreTaggedValues(eClassifier, (Element) entry
-							.getKey(), options, diagnostics, context);
+						processEcoreTaggedValues(eClassifier, entry.getKey(),
+							options, diagnostics, context);
 
 						return eClassifier;
 					}
 
+					@Override
 					public Object caseEEnum(EEnum eEnum) {
-						processEcoreTaggedValues(eEnum, (Element) entry
-							.getKey(), options, diagnostics, context);
+						processEcoreTaggedValues(eEnum, entry.getKey(),
+							options, diagnostics, context);
 
 						return eEnum;
 					}
 
+					@Override
 					public Object caseEEnumLiteral(EEnumLiteral eEnumLiteral) {
-						processEcoreTaggedValues(eEnumLiteral, (Element) entry
-							.getKey(), options, diagnostics, context);
+						processEcoreTaggedValues(eEnumLiteral, entry.getKey(),
+							options, diagnostics, context);
 
 						return eEnumLiteral;
 					}
 
+					@Override
 					public Object caseEOperation(EOperation eOperation) {
-						processEcoreTaggedValues(eOperation, (Element) entry
-							.getKey(), options, diagnostics, context);
+						processEcoreTaggedValues(eOperation, entry.getKey(),
+							options, diagnostics, context);
 
 						return eOperation;
 					}
 
+					@Override
 					public Object caseEPackage(EPackage ePackage) {
 						processEcoreTaggedValues(
 
-						ePackage, (Element) entry.getKey(), options,
-							diagnostics, context);
+						ePackage, entry.getKey(), options, diagnostics, context);
 
 						return ePackage;
 					}
 
+					@Override
 					public Object caseEParameter(EParameter eParameter) {
-						processEcoreTaggedValues(eParameter, (Element) entry
-							.getKey(), options, diagnostics, context);
+						processEcoreTaggedValues(eParameter, entry.getKey(),
+							options, diagnostics, context);
 
 						return eParameter;
 					}
 
+					@Override
 					public Object caseEStructuralFeature(
 							EStructuralFeature eStructuralFeature) {
-						processEcoreTaggedValues(eStructuralFeature,
-							(Element) entry.getKey(), options, diagnostics,
-							context);
+						processEcoreTaggedValues(eStructuralFeature, entry
+							.getKey(), options, diagnostics, context);
 
 						return eStructuralFeature;
 					}
@@ -3443,27 +3322,21 @@
 			}
 		}
 
-		protected void processRedefiningOperations(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processRedefiningOperations(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Element element = (Element) entry.getKey();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+			for (Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				Element element = entry.getKey();
+				EModelElement eModelElement = entry.getValue();
 
 				if (eModelElement instanceof EOperation
 					&& element instanceof Operation) {
 
 					Operation operation = (Operation) element;
 
-					for (Iterator redefinedOperations = operation
-						.getRedefinedOperations().iterator(); redefinedOperations
-						.hasNext();) {
-
-						Operation redefinedOperation = (Operation) redefinedOperations
-							.next();
+					for (Operation redefinedOperation : operation
+						.getRedefinedOperations()) {
 
 						EOperation eOperation = (EOperation) elementToEModelElementMap
 							.get(redefinedOperation);
@@ -3515,27 +3388,22 @@
 			}
 		}
 
-		protected void processRedefiningProperties(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processRedefiningProperties(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
+			for (Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
 
-				Map.Entry entry = (Map.Entry) entries.next();
-				Element element = (Element) entry.getKey();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+				Element element = entry.getKey();
+				EModelElement eModelElement = entry.getValue();
 
 				if (eModelElement instanceof EStructuralFeature
 					&& element instanceof Property) {
 
 					Property property = (Property) element;
 
-					for (Iterator redefinedProperties = property
-						.getRedefinedProperties().iterator(); redefinedProperties
-						.hasNext();) {
-
-						Property redefinedProperty = (Property) redefinedProperties
-							.next();
+					for (Property redefinedProperty : property
+						.getRedefinedProperties()) {
 
 						if (redefinedProperty.getOwningAssociation() == null) {
 							EStructuralFeature eStructuralFeature = (EStructuralFeature) elementToEModelElementMap
@@ -3596,12 +3464,7 @@
 
 		protected boolean isCompositeSubset(Property property) {
 
-			for (Iterator subsettedProperties = property
-				.getSubsettedProperties().iterator(); subsettedProperties
-				.hasNext();) {
-
-				Property subsettedProperty = (Property) subsettedProperties
-					.next();
+			for (Property subsettedProperty : property.getSubsettedProperties()) {
 
 				if (subsettedProperty.isComposite()
 					|| isCompositeSubset(subsettedProperty)) {
@@ -3613,27 +3476,21 @@
 			return false;
 		}
 
-		protected void processSubsettingProperties(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processSubsettingProperties(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Element element = (Element) entry.getKey();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+			for (Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				Element element = entry.getKey();
+				EModelElement eModelElement = entry.getValue();
 
 				if (eModelElement instanceof EStructuralFeature
 					&& element instanceof Property) {
 
 					Property property = (Property) element;
 
-					for (Iterator subsettedProperties = property
-						.getSubsettedProperties().iterator(); subsettedProperties
-						.hasNext();) {
-
-						Property subsettedProperty = (Property) subsettedProperties
-							.next();
+					for (Property subsettedProperty : property
+						.getSubsettedProperties()) {
 
 						if (subsettedProperty.getOwningAssociation() == null) {
 							EStructuralFeature subsettedEStructuralFeature = (EStructuralFeature) elementToEModelElementMap
@@ -3687,7 +3544,7 @@
 								getEAnnotation(eModelElement,
 									ANNOTATION__SUBSETS, true).getReferences()
 									.add(
-										(EObject) elementToEModelElementMap
+										elementToEModelElementMap
 											.get(subsettedProperty));
 							} else if (OPTION__REPORT.equals(options
 								.get(OPTION__SUBSETTING_PROPERTIES))
@@ -3713,15 +3570,13 @@
 			}
 		}
 
-		protected void processUnionProperties(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processUnionProperties(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Element element = (Element) entry.getKey();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+			for (Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				Element element = entry.getKey();
+				EModelElement eModelElement = entry.getValue();
 
 				if (eModelElement instanceof EStructuralFeature
 					&& element instanceof Property
@@ -3776,14 +3631,11 @@
 			}
 		}
 
-		protected void processDerivedFeatures(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processDerivedFeatures(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
-			for (Iterator eModelElements = elementToEModelElementMap.values()
-				.iterator(); eModelElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) eModelElements
-					.next();
+			for (EModelElement eModelElement : elementToEModelElementMap
+				.values()) {
 
 				if (eModelElement instanceof EStructuralFeature) {
 					EStructuralFeature.Internal eStructuralFeature = (EStructuralFeature.Internal) eModelElement;
@@ -3961,35 +3813,27 @@
 			}
 		}
 
-		protected void processDuplicateOperations(Map options,
-				DiagnosticChain diagnostics, Map context) {
-			List operationsToDuplicate = new UniqueEList.FastCompare();
+		protected void processDuplicateOperations(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
+			List<EOperation> operationsToDuplicate = new UniqueEList.FastCompare<EOperation>();
 
-			for (Iterator eModelElements = elementToEModelElementMap.values()
-				.iterator(); eModelElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) eModelElements
-					.next();
+			for (EModelElement eModelElement : elementToEModelElementMap
+				.values()) {
 
 				if (eModelElement instanceof EClass) {
 					EClass eClass = (EClass) eModelElement;
 
-					for (Iterator eOperations = eClass.getEOperations()
-						.iterator(); eOperations.hasNext();) {
+					for (Iterator<EOperation> eOperations = eClass
+						.getEOperations().iterator(); eOperations.hasNext();) {
+						EOperation eOperation = eOperations.next();
 
-						EOperation eOperation = (EOperation) eOperations.next();
+						for (EOperation otherEOperation : eClass
+							.getEAllOperations()) {
 
-						for (Iterator eAllOperations = eClass
-							.getEAllOperations().iterator(); eAllOperations
-							.hasNext();) {
-
-							EOperation eAllOperation = (EOperation) eAllOperations
-								.next();
-
-							if (eAllOperation == eOperation) {
+							if (otherEOperation == eOperation) {
 								break;
 							} else if (new SignatureMatcher(eOperation)
-								.matches(eAllOperation)) {
+								.matches(otherEOperation)) {
 
 								if (OPTION__PROCESS.equals(options
 									.get(OPTION__DUPLICATE_OPERATIONS))) {
@@ -4006,23 +3850,25 @@
 														getMessageSubstitutions(
 															context,
 															eOperation,
-															eAllOperation)),
+															otherEOperation)),
 												new Object[]{eClass,
-													eAllOperation}));
+													otherEOperation}));
 									}
 
 									operationsToDuplicate.add(eOperation);
 
-									ensureConformity(eOperation, eAllOperation);
+									ensureConformity(eOperation,
+										otherEOperation);
 
-									List redefinedOperations = getEAnnotation(
+									List<EObject> redefinedOperations = getEAnnotation(
 										eOperation, ANNOTATION__REDEFINES, true)
 										.getReferences();
 
 									if (!redefinedOperations
-										.contains(eAllOperation)) {
+										.contains(otherEOperation)) {
 
-										redefinedOperations.add(eAllOperation);
+										redefinedOperations
+											.add(otherEOperation);
 									}
 								} else if (OPTION__DISCARD.equals(options
 									.get(OPTION__DUPLICATE_OPERATIONS))) {
@@ -4039,9 +3885,9 @@
 														getMessageSubstitutions(
 															context,
 															eOperation,
-															eAllOperation)),
+															otherEOperation)),
 												new Object[]{eClass,
-													eAllOperation}));
+													otherEOperation}));
 									}
 
 									eOperations.remove();
@@ -4060,9 +3906,9 @@
 													"_UI_UML2EcoreConverter_ReportDuplicateOperation_diagnostic", //$NON-NLS-1$
 													getMessageSubstitutions(
 														context, eOperation,
-														eAllOperation)),
+														otherEOperation)),
 											new Object[]{eOperation,
-												eAllOperation}));
+												otherEOperation}));
 								}
 							}
 						}
@@ -4070,49 +3916,35 @@
 				}
 			}
 
-			for (Iterator eOperations = operationsToDuplicate.iterator(); eOperations
-				.hasNext();) {
-
-				EOperation eOperation = (EOperation) eOperations.next();
-
+			for (EOperation eOperation : operationsToDuplicate) {
 				getEAnnotation(eOperation.getEContainingClass(),
 					ANNOTATION__DUPLICATES, true).getContents().add(eOperation);
 			}
 		}
 
-		protected void processDuplicateOperationInheritance(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processDuplicateOperationInheritance(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator eModelElements = elementToEModelElementMap.values()
-				.iterator(); eModelElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) eModelElements
-					.next();
+			for (EModelElement eModelElement : elementToEModelElementMap
+				.values()) {
 
 				if (eModelElement instanceof EClass) {
 					EClass eClass = (EClass) eModelElement;
 
 					if (eClass.getESuperTypes().size() > 1) {
-						Iterator eSuperTypes = eClass.getESuperTypes()
+						Iterator<EClass> eSuperTypes = eClass.getESuperTypes()
 							.iterator();
 						eSuperTypes.next();
 
 						while (eSuperTypes.hasNext()) {
-							EClass mixinEClass = (EClass) eSuperTypes.next();
+							EClass mixinEClass = eSuperTypes.next();
 
-							mixinEOperationsLoop : for (Iterator mixinEOperations = mixinEClass
-								.getEAllOperations().iterator(); mixinEOperations
-								.hasNext();) {
+							mixinEOperationLoop : for (EOperation mixinEOperation : mixinEClass
+								.getEAllOperations()) {
 
-								EOperation mixinEOperation = (EOperation) mixinEOperations
-									.next();
-
-								for (Iterator eOperations = eClass
-									.getEAllOperations().iterator(); eOperations
-									.hasNext();) {
-
-									EOperation eOperation = (EOperation) eOperations
-										.next();
+								for (EOperation eOperation : eClass
+									.getEAllOperations()) {
 
 									if (eOperation == mixinEOperation) {
 										break;
@@ -4144,7 +3976,7 @@
 
 											qualifyName(mixinEOperation);
 
-											List redefinedOperations = getEAnnotation(
+											List<EObject> redefinedOperations = getEAnnotation(
 												mixinEOperation,
 												ANNOTATION__REDEFINES, true)
 												.getReferences();
@@ -4179,7 +4011,7 @@
 											}
 
 											eSuperTypes.remove();
-											break mixinEOperationsLoop;
+											break mixinEOperationLoop;
 										} else if (OPTION__REPORT
 											.equals(options
 												.get(OPTION__DUPLICATE_OPERATION_INHERITANCE))
@@ -4211,38 +4043,31 @@
 			}
 		}
 
-		protected void processDuplicateFeatures(Map options,
-				DiagnosticChain diagnostics, Map context) {
-			List featuresToDuplicate = new UniqueEList.FastCompare();
-			List featuresToRemove = new UniqueEList.FastCompare();
+		protected void processDuplicateFeatures(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
+			EList<EStructuralFeature.Internal> featuresToDuplicate = new UniqueEList.FastCompare<EStructuralFeature.Internal>();
+			EList<EStructuralFeature> featuresToRemove = new UniqueEList.FastCompare<EStructuralFeature>();
 
-			for (Iterator eModelElements = elementToEModelElementMap.values()
-				.iterator(); eModelElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) eModelElements
-					.next();
+			for (EModelElement eModelElement : elementToEModelElementMap
+				.values()) {
 
 				if (eModelElement instanceof EClass) {
 					EClass eClass = (EClass) eModelElement;
 
-					for (Iterator eStructuralFeatures = eClass
+					for (Iterator<EStructuralFeature> eStructuralFeatures = eClass
 						.getEStructuralFeatures().iterator(); eStructuralFeatures
 						.hasNext();) {
 
 						EStructuralFeature.Internal eStructuralFeature = (EStructuralFeature.Internal) eStructuralFeatures
 							.next();
 
-						for (Iterator eAllStructuralFeatures = eClass
-							.getEAllStructuralFeatures().iterator(); eAllStructuralFeatures
-							.hasNext();) {
+						for (EStructuralFeature otherEStructuralFeature : eClass
+							.getEAllStructuralFeatures()) {
 
-							EStructuralFeature eAllStructuralFeature = (EStructuralFeature) eAllStructuralFeatures
-								.next();
-
-							if (eAllStructuralFeature == eStructuralFeature) {
+							if (otherEStructuralFeature == eStructuralFeature) {
 								break;
 							} else if (new NameMatcher(eStructuralFeature)
-								.matches(eAllStructuralFeature)) {
+								.matches(otherEStructuralFeature)) {
 
 								if (OPTION__PROCESS.equals(options
 									.get(OPTION__DUPLICATE_FEATURES))) {
@@ -4259,48 +4084,48 @@
 														getMessageSubstitutions(
 															context,
 															eStructuralFeature,
-															eAllStructuralFeature)),
+															otherEStructuralFeature)),
 												new Object[]{
 													eStructuralFeature,
-													eAllStructuralFeature}));
+													otherEStructuralFeature}));
 									}
 
 									if (!featuresToDuplicate
 										.contains(eStructuralFeature)) {
 
-										EStructuralFeature duplicateEStructuralFeature = eAllStructuralFeature
+										EStructuralFeature.Internal duplicateEStructuralFeature = otherEStructuralFeature
 											.isDerived()
 											&& !eStructuralFeature.isDerived()
-											? eAllStructuralFeature
+											? (EStructuralFeature.Internal) otherEStructuralFeature
 											: eStructuralFeature;
 
 										if (DEBUG
-											&& duplicateEStructuralFeature == eAllStructuralFeature) {
+											&& duplicateEStructuralFeature == otherEStructuralFeature) {
 
 											System.err
 												.println("Non-derived feature " //$NON-NLS-1$
 													+ getQualifiedText(eStructuralFeature)
 													+ " is a duplicate of derived feature " //$NON-NLS-1$
-													+ getQualifiedText(eAllStructuralFeature));
+													+ getQualifiedText(otherEStructuralFeature));
 										}
 
 										featuresToDuplicate
 											.add(duplicateEStructuralFeature);
 
 										ensureConformity(eStructuralFeature,
-											eAllStructuralFeature);
+											otherEStructuralFeature);
 									}
 
-									EList redefinedFeatures = getEAnnotation(
+									EList<EObject> redefinedFeatures = getEAnnotation(
 										eStructuralFeature,
 										ANNOTATION__REDEFINES, true)
 										.getReferences();
 
 									if (!redefinedFeatures
-										.contains(eAllStructuralFeature)) {
+										.contains(otherEStructuralFeature)) {
 
 										redefinedFeatures
-											.add(eAllStructuralFeature);
+											.add(otherEStructuralFeature);
 									}
 								} else if (OPTION__DISCARD.equals(options
 									.get(OPTION__DUPLICATE_FEATURES))) {
@@ -4317,9 +4142,9 @@
 														getMessageSubstitutions(
 															context,
 															eStructuralFeature,
-															eAllStructuralFeature)),
+															otherEStructuralFeature)),
 												new Object[]{eClass,
-													eAllStructuralFeature}));
+													otherEStructuralFeature}));
 									}
 
 									EReference eOpposite = eStructuralFeature
@@ -4346,9 +4171,9 @@
 													getMessageSubstitutions(
 														context,
 														eStructuralFeature,
-														eAllStructuralFeature)),
+														otherEStructuralFeature)),
 											new Object[]{eStructuralFeature,
-												eAllStructuralFeature}));
+												otherEStructuralFeature}));
 								}
 							}
 						}
@@ -4356,12 +4181,7 @@
 				}
 			}
 
-			for (Iterator eStructuralFeatures = featuresToDuplicate.iterator(); eStructuralFeatures
-				.hasNext();) {
-
-				EStructuralFeature.Internal eStructuralFeature = (EStructuralFeature.Internal) eStructuralFeatures
-					.next();
-
+			for (EStructuralFeature.Internal eStructuralFeature : featuresToDuplicate) {
 				getEAnnotation(eStructuralFeature.getEContainingClass(),
 					ANNOTATION__DUPLICATES, true).getContents().add(
 					eStructuralFeature);
@@ -4382,11 +4202,7 @@
 				}
 			}
 
-			for (Iterator eStructuralFeatures = featuresToRemove.iterator(); eStructuralFeatures
-				.hasNext();) {
-
-				EStructuralFeature eStructuralFeature = (EStructuralFeature) eStructuralFeatures
-					.next();
+			for (EStructuralFeature eStructuralFeature : featuresToRemove) {
 				EClass eContainingClass = eStructuralFeature
 					.getEContainingClass();
 
@@ -4397,39 +4213,29 @@
 			}
 		}
 
-		protected void processDuplicateFeatureInheritance(Map options,
-				DiagnosticChain diagnostics, Map context) {
+		protected void processDuplicateFeatureInheritance(
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 
-			for (Iterator eModelElements = elementToEModelElementMap.values()
-				.iterator(); eModelElements.hasNext();) {
-
-				EModelElement eModelElement = (EModelElement) eModelElements
-					.next();
+			for (EModelElement eModelElement : elementToEModelElementMap
+				.values()) {
 
 				if (eModelElement instanceof EClass) {
 					EClass eClass = (EClass) eModelElement;
 
 					if (eClass.getESuperTypes().size() > 1) {
-						Iterator eSuperTypes = eClass.getESuperTypes()
+						Iterator<EClass> eSuperTypes = eClass.getESuperTypes()
 							.iterator();
 						eSuperTypes.next();
 
 						while (eSuperTypes.hasNext()) {
-							EClass mixinEClass = (EClass) eSuperTypes.next();
+							EClass mixinEClass = eSuperTypes.next();
 
-							mixinEStructuralFeaturesLoop : for (Iterator mixinEStructuralFeatures = mixinEClass
-								.getEAllStructuralFeatures().iterator(); mixinEStructuralFeatures
-								.hasNext();) {
+							mixinEStructuralFeatureLoop : for (EStructuralFeature mixinEStructuralFeature : mixinEClass
+								.getEAllStructuralFeatures()) {
 
-								EStructuralFeature mixinEStructuralFeature = (EStructuralFeature) mixinEStructuralFeatures
-									.next();
-
-								for (Iterator eStructuralFeatures = eClass
-									.getEAllStructuralFeatures().iterator(); eStructuralFeatures
-									.hasNext();) {
-
-									EStructuralFeature eStructuralFeature = (EStructuralFeature) eStructuralFeatures
-										.next();
+								for (EStructuralFeature eStructuralFeature : eClass
+									.getEAllStructuralFeatures()) {
 
 									if (eStructuralFeature == mixinEStructuralFeature) {
 										break;
@@ -4462,7 +4268,7 @@
 
 											qualifyName(mixinEStructuralFeature);
 
-											EList redefinedFeatures = getEAnnotation(
+											EList<EObject> redefinedFeatures = getEAnnotation(
 												mixinEStructuralFeature,
 												ANNOTATION__REDEFINES, true)
 												.getReferences();
@@ -4497,7 +4303,7 @@
 											}
 
 											eSuperTypes.remove();
-											break mixinEStructuralFeaturesLoop;
+											break mixinEStructuralFeatureLoop;
 										} else if (OPTION__REPORT
 											.equals(options
 												.get(OPTION__DUPLICATE_FEATURE_INHERITANCE))
@@ -4529,14 +4335,11 @@
 			}
 		}
 
-		protected void processSuperClassOrder(Map options,
-				DiagnosticChain diagnostics, Map context) {
-			Comparator eClassComparator = new Comparator() {
+		protected void processSuperClassOrder(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
+			Comparator<EClass> eClassComparator = new Comparator<EClass>() {
 
-				public int compare(Object object, Object otherObject) {
-					EClass eClass = (EClass) object;
-					EClass otherEClass = (EClass) otherObject;
-
+				public int compare(EClass eClass, EClass otherEClass) {
 					int eAllStructuralFeaturesSize = eClass
 						.getEAllStructuralFeatures().size();
 					int otherEAllStructuralFeaturesSize = otherEClass
@@ -4550,41 +4353,38 @@
 				}
 			};
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				Object key = entry.getKey();
-				Object value = entry.getValue();
+			for (Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				Element key = entry.getKey();
+				EModelElement value = entry.getValue();
 
 				if (key instanceof Classifier && value instanceof EClass) {
 					EClass eClass = (EClass) value;
-					EList eSuperTypes = eClass.getESuperTypes();
+					EList<EClass> eSuperTypes = eClass.getESuperTypes();
 
-					List extendSuperClasses = new ArrayList();
-					List unspecifiedSuperClasses = new ArrayList();
-					List mixinSuperClasses = new ArrayList();
+					List<EClass> extendSuperClasses = new ArrayList<EClass>();
+					List<EClass> unspecifiedSuperClasses = new ArrayList<EClass>();
+					List<EClass> mixinSuperClasses = new ArrayList<EClass>();
 
-					for (Iterator generalizations = ((Classifier) key)
-						.getGeneralizations().iterator(); generalizations
-						.hasNext();) {
-
-						Generalization generalization = (Generalization) generalizations
-							.next();
+					for (Generalization generalization : ((Classifier) key)
+						.getGeneralizations()) {
 						Classifier general = generalization.getGeneral();
 
 						if (general != null) {
-							EModelElement eModelElement = (EModelElement) elementToEModelElementMap
+							EModelElement eModelElement = elementToEModelElementMap
 								.get(general);
 
 							if (eSuperTypes.contains(eModelElement)) {
 
 								if (generalization.hasKeyword("extend")) { //$NON-NLS-1$
-									extendSuperClasses.add(eModelElement);
+									extendSuperClasses
+										.add((EClass) eModelElement);
 								} else if (generalization.hasKeyword("mixin")) { //$NON-NLS-1$
-									mixinSuperClasses.add(eModelElement);
+									mixinSuperClasses
+										.add((EClass) eModelElement);
 								} else {
-									unspecifiedSuperClasses.add(eModelElement);
+									unspecifiedSuperClasses
+										.add((EClass) eModelElement);
 								}
 							}
 						}
@@ -4595,7 +4395,7 @@
 					Collections.sort(unspecifiedSuperClasses, eClassComparator);
 					Collections.sort(mixinSuperClasses, eClassComparator);
 
-					List superClasses = new UniqueEList.FastCompare(
+					List<EClass> superClasses = new UniqueEList.FastCompare<EClass>(
 						extendSuperClasses);
 					superClasses.addAll(unspecifiedSuperClasses);
 					superClasses.addAll(mixinSuperClasses);
@@ -4619,10 +4419,10 @@
 										new Object[]{eClass}));
 							}
 
-							for (ListIterator sc = superClasses.listIterator(); sc
-								.hasNext();) {
+							for (ListIterator<EClass> sc = superClasses
+								.listIterator(); sc.hasNext();) {
 
-								Object superClass = sc.next();
+								EClass superClass = sc.next();
 								eSuperTypes
 									.move(sc.previousIndex(), superClass);
 							}
@@ -4647,24 +4447,20 @@
 			}
 		}
 
-		protected void processAnnotationDetails(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processAnnotationDetails(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = elementToEModelElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				final Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getValue();
+			for (final Map.Entry<Element, EModelElement> entry : elementToEModelElementMap
+				.entrySet()) {
+				EModelElement eModelElement = entry.getValue();
 
 				if (eModelElement != null) {
-					Element element = (Element) entry.getKey();
+					Element element = entry.getKey();
 
-					for (Iterator eAnnotations = element.getEAnnotations()
-						.iterator(); eAnnotations.hasNext();) {
-
-						EAnnotation eAnnotation = (EAnnotation) eAnnotations
-							.next();
-						EMap details = eAnnotation.getDetails();
+					for (EAnnotation eAnnotation : element.getEAnnotations()) {
+						EMap<String, String> details = eAnnotation.getDetails();
 
 						if (!details.isEmpty()) {
 
@@ -4712,8 +4508,8 @@
 			}
 		}
 
-		protected void processOptions(Map options, DiagnosticChain diagnostics,
-				Map context) {
+		protected void processOptions(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 			if (!OPTION__IGNORE
 				.equals(options.get(OPTION__ECORE_TAGGED_VALUES))) {
@@ -4780,27 +4576,22 @@
 			}
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.common.util.UML2Util.Converter#convert(java.util.Collection,
-		 *      java.util.Map, org.eclipse.emf.common.util.DiagnosticChain,
-		 *      java.util.Map)
-		 */
-		public Collection convert(Collection eObjects, Map options,
-				DiagnosticChain diagnostics, Map context) {
+		public Collection<? extends EObject> convert(
+				Collection<? extends EObject> eObjects,
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 			packages = EcoreUtil.getObjectsByType(eObjects,
 				UMLPackage.Literals.PACKAGE);
 
-			for (Iterator p = packages.iterator(); p.hasNext();) {
-				doSwitch((org.eclipse.uml2.uml.Package) p.next());
+			for (org.eclipse.uml2.uml.Package package_ : packages) {
+				doSwitch(package_);
 			}
 
 			if (options != null) {
 				processOptions(options, diagnostics, context);
 			}
 
-			return getRootContainers(EcoreUtil.getObjectsByType(
+			return getRootContainers(EcoreUtil.<EObject> getObjectsByType(
 				elementToEModelElementMap.values(),
 				EcorePackage.Literals.EPACKAGE));
 		}
@@ -4813,27 +4604,20 @@
 	public static class Profile2EPackageConverter
 			extends UML2EcoreConverter {
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLUtil.UML2EcoreConverter#casePackage(org.eclipse.uml2.uml.Package)
-		 */
+		@Override
 		public Object casePackage(org.eclipse.uml2.uml.Package package_) {
 
 			if (packages.contains(package_)) {
 				return super.casePackage(package_);
 			} else {
-				Object ePackage = doSwitch((Profile) packages.iterator().next());
+				EPackage ePackage = (EPackage) doSwitch(packages.iterator()
+					.next());
 				elementToEModelElementMap.put(package_, ePackage);
 				return ePackage;
 			}
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLSwitch#caseProfile(org.eclipse.uml2.uml.Profile)
-		 */
+		@Override
 		public Object caseProfile(Profile profile) {
 			EPackage ePackage = (EPackage) casePackage(profile);
 
@@ -4886,6 +4670,7 @@
 			return ePackage;
 		}
 
+		@Override
 		protected EClassifier getEType(Type type) {
 
 			if (type instanceof org.eclipse.uml2.uml.Class) {
@@ -4903,11 +4688,13 @@
 			return super.getEType(type);
 		}
 
+		@Override
 		protected void setName(final ENamedElement eNamedElement,
 				NamedElement namedElement) {
 
-			new UMLSwitch() {
+			new UMLSwitch<Object>() {
 
+				@Override
 				public Object caseClassifier(Classifier classifier) {
 					setName(eNamedElement, packages.contains(classifier
 						.getPackage())
@@ -4916,12 +4703,14 @@
 					return classifier;
 				}
 
+				@Override
 				public Object caseEnumerationLiteral(
 						EnumerationLiteral enumerationLiteral) {
 					setName(eNamedElement, enumerationLiteral.getName(), false);
 					return enumerationLiteral;
 				}
 
+				@Override
 				public Object caseNamedElement(NamedElement namedElement) {
 					setName(eNamedElement, namedElement.getName(), true);
 					return namedElement;
@@ -4930,17 +4719,14 @@
 			}.doSwitch(namedElement);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.uml.util.UMLUtil.UML2EcoreConverter#doSwitch(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public Object doSwitch(EObject eObject) {
-			Object eModelElement = super.doSwitch(eObject);
+			EObject eModelElement = (EObject) super.doSwitch(eObject);
 
 			if (eModelElement instanceof EClassifier) {
-				EList references = getEAnnotation((EClassifier) eModelElement,
-					UMLPackage.eNS_URI, true).getReferences();
+				EList<EObject> references = getEAnnotation(
+					(EClassifier) eModelElement, UMLPackage.eNS_URI, true)
+					.getReferences();
 
 				if (references.isEmpty()) {
 					references.add(eObject);
@@ -4956,7 +4742,7 @@
 	 * elements.
 	 */
 	public static class Ecore2UMLConverter
-			extends EcoreSwitch
+			extends EcoreSwitch<Object>
 			implements Converter {
 
 		/**
@@ -5028,9 +4814,9 @@
 		 */
 		public static final int ANNOTATION_DETAILS = DIAGNOSTIC_CODE_OFFSET + 5;
 
-		protected final Map eModelElementToElementMap = new LinkedHashMap();
+		protected final Map<EModelElement, Element> eModelElementToElementMap = new LinkedHashMap<EModelElement, Element>();
 
-		protected Collection ePackages = null;
+		protected Collection<EPackage> ePackages = null;
 
 		protected Model getEcorePrimitiveTypesLibrary(
 				EModelElement eModelElement) {
@@ -5040,7 +4826,7 @@
 				ResourceSet resourceSet = eResource.getResourceSet();
 
 				if (resourceSet != null) {
-					return (Model) load(
+					return load(
 						resourceSet,
 						URI
 							.createURI(UMLResource.ECORE_PRIMITIVE_TYPES_LIBRARY_URI),
@@ -5058,7 +4844,7 @@
 				ResourceSet resourceSet = eResource.getResourceSet();
 
 				if (resourceSet != null) {
-					return (Model) load(
+					return load(
 						resourceSet,
 						URI
 							.createURI(UMLResource.XML_PRIMITIVE_TYPES_LIBRARY_URI),
@@ -5119,11 +4905,7 @@
 			return getType(eTypedElement, eTypedElement.getEType());
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEAttribute(org.eclipse.emf.ecore.EAttribute)
-		 */
+		@Override
 		public Object caseEAttribute(EAttribute eAttribute) {
 			EClass eContainingClass = eAttribute.getEContainingClass();
 
@@ -5149,11 +4931,7 @@
 			return super.caseEAttribute(eAttribute);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEClass(org.eclipse.emf.ecore.EClass)
-		 */
+		@Override
 		public Object caseEClass(EClass eClass) {
 			EPackage ePackage = eClass.getEPackage();
 
@@ -5174,10 +4952,7 @@
 					classifier.setIsAbstract(eClass.isAbstract());
 				}
 
-				for (Iterator eSuperTypes = eClass.getESuperTypes().iterator(); eSuperTypes
-					.hasNext();) {
-
-					EClass eSuperType = (EClass) eSuperTypes.next();
+				for (EClass eSuperType : eClass.getESuperTypes()) {
 
 					if (eSuperType.isInterface()) {
 						((BehavioredClassifier) classifier)
@@ -5202,11 +4977,7 @@
 			return super.caseEClass(eClass);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEDataType(org.eclipse.emf.ecore.EDataType)
-		 */
+		@Override
 		public Object caseEDataType(EDataType eDataType) {
 			EPackage ePackage = eDataType.getEPackage();
 
@@ -5239,11 +5010,7 @@
 			return super.caseEDataType(eDataType);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEEnum(org.eclipse.emf.ecore.EEnum)
-		 */
+		@Override
 		public Object caseEEnum(EEnum eEnum) {
 			EPackage ePackage = eEnum.getEPackage();
 
@@ -5265,11 +5032,7 @@
 			return super.caseEEnum(eEnum);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEEnumLiteral(org.eclipse.emf.ecore.EEnumLiteral)
-		 */
+		@Override
 		public Object caseEEnumLiteral(EEnumLiteral eEnumLiteral) {
 			EEnum eEnum = eEnumLiteral.getEEnum();
 
@@ -5299,20 +5062,12 @@
 			return super.caseEEnumLiteral(eEnumLiteral);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEModelElement(org.eclipse.emf.ecore.EModelElement)
-		 */
+		@Override
 		public Object caseEModelElement(EModelElement eModelElement) {
 			return eModelElement;
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEOperation(org.eclipse.emf.ecore.EOperation)
-		 */
+		@Override
 		public Object caseEOperation(EOperation eOperation) {
 			EClass eContainingClass = eOperation.getEContainingClass();
 
@@ -5332,13 +5087,10 @@
 						eType));
 				}
 
-				EList raisedExceptions = operation.getRaisedExceptions();
+				EList<Type> raisedExceptions = operation.getRaisedExceptions();
 
-				for (Iterator eExceptions = eOperation.getEExceptions()
-					.iterator(); eExceptions.hasNext();) {
-
-					Type type = getType(eOperation, (EClassifier) eExceptions
-						.next());
+				for (EClassifier eException : eOperation.getEExceptions()) {
+					Type type = getType(eOperation, eException);
 
 					if (type != null) {
 						raisedExceptions.add(type);
@@ -5372,11 +5124,7 @@
 			return super.caseEOperation(eOperation);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEPackage(org.eclipse.emf.ecore.EPackage)
-		 */
+		@Override
 		public Object caseEPackage(EPackage ePackage) {
 			org.eclipse.uml2.uml.Package package_ = ePackage.getESuperPackage() == null
 				? UMLFactory.eINSTANCE.createModel()
@@ -5399,11 +5147,7 @@
 			return package_;
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEParameter(org.eclipse.emf.ecore.EParameter)
-		 */
+		@Override
 		public Object caseEParameter(EParameter eParameter) {
 			EOperation eOperation = eParameter.getEOperation();
 
@@ -5426,11 +5170,7 @@
 			return super.caseEParameter(eParameter);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseEReference(org.eclipse.emf.ecore.EReference)
-		 */
+		@Override
 		public Object caseEReference(EReference eReference) {
 			EClass eContainingClass = eReference.getEContainingClass();
 
@@ -5498,11 +5238,7 @@
 			return super.caseEReference(eReference);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#caseETypedElement(org.eclipse.emf.ecore.ETypedElement)
-		 */
+		@Override
 		public Object caseETypedElement(ETypedElement eTypedElement) {
 			Object element = eModelElementToElementMap.get(eTypedElement);
 
@@ -5539,27 +5275,17 @@
 			return super.caseETypedElement(eTypedElement);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#defaultCase(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public Object defaultCase(EObject eObject) {
 
-			for (Iterator eContents = eObject.eContents().iterator(); eContents
-				.hasNext();) {
-
-				doSwitch((EObject) eContents.next());
+			for (EObject eContent : eObject.eContents()) {
+				doSwitch(eContent);
 			}
 
 			return super.defaultCase(eObject);
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.emf.ecore.util.EcoreSwitch#doSwitch(org.eclipse.emf.ecore.EObject)
-		 */
+		@Override
 		public Object doSwitch(EObject eObject) {
 
 			if (!eModelElementToElementMap.containsKey(eObject)) {
@@ -5576,7 +5302,7 @@
 				ResourceSet resourceSet = eResource.getResourceSet();
 
 				if (resourceSet != null) {
-					return (Profile) load(resourceSet, URI
+					return load(resourceSet, URI
 						.createURI(UMLResource.ECORE_PROFILE_URI),
 						UMLPackage.Literals.PROFILE);
 				}
@@ -5597,8 +5323,9 @@
 		protected void processEcoreTaggedValue(Element element,
 				Stereotype stereotype, String propertyName,
 				EModelElement eModelElement,
-				EStructuralFeature eStructuralFeature, Map options,
-				DiagnosticChain diagnostics, Map context) {
+				EStructuralFeature eStructuralFeature,
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 			Object value = null;
 
 			if (eStructuralFeature != null) {
@@ -5783,8 +5510,8 @@
 		}
 
 		protected void processEcoreTaggedValues(Element element,
-				EPackage ePackage, Map options, DiagnosticChain diagnostics,
-				Map context) {
+				EPackage ePackage, Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 			Stereotype ePackageStereotype = getEcoreStereotype(ePackage,
 				STEREOTYPE__E_PACKAGE);
 
@@ -5792,21 +5519,26 @@
 				safeApplyStereotype(element, ePackageStereotype);
 
 				processEcoreTaggedValue(element, ePackageStereotype,
-					TAG_DEFINITION__NS_PREFIX, ePackage, EcorePackage.eINSTANCE
-						.getEPackage_NsPrefix(), options, diagnostics, context);
+					TAG_DEFINITION__NS_PREFIX, ePackage,
+					EcorePackage.Literals.EPACKAGE__NS_PREFIX, options,
+					diagnostics, context);
 
 				processEcoreTaggedValue(element, ePackageStereotype,
-					TAG_DEFINITION__NS_URI, ePackage, EcorePackage.eINSTANCE
-						.getEPackage_NsURI(), options, diagnostics, context);
+					TAG_DEFINITION__NS_URI, ePackage,
+					EcorePackage.Literals.EPACKAGE__NS_URI, options,
+					diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(Element element,
-				final EClassifier eClassifier, final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
-			Stereotype eClassifierStereotype = (Stereotype) new UMLSwitch() {
+				final EClassifier eClassifier,
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
+			Stereotype eClassifierStereotype = new UMLSwitch<Stereotype>() {
 
-				public Object caseClass(org.eclipse.uml2.uml.Class class_) {
+				@Override
+				public Stereotype caseClass(org.eclipse.uml2.uml.Class class_) {
 					Stereotype eClassStereotype = getEcoreStereotype(
 						eClassifier, STEREOTYPE__E_CLASS);
 
@@ -5821,7 +5553,8 @@
 					return eClassStereotype;
 				}
 
-				public Object caseDataType(DataType dataType) {
+				@Override
+				public Stereotype caseDataType(DataType dataType) {
 					Stereotype eClassStereotype = getEcoreStereotype(
 						eClassifier, STEREOTYPE__E_CLASS);
 
@@ -5836,7 +5569,8 @@
 					return eClassStereotype;
 				}
 
-				public Object caseInterface(Interface interface_) {
+				@Override
+				public Stereotype caseInterface(Interface interface_) {
 					Stereotype eClassStereotype = getEcoreStereotype(
 						eClassifier, STEREOTYPE__E_CLASS);
 
@@ -5851,7 +5585,8 @@
 					return eClassStereotype;
 				}
 
-				public Object casePrimitiveType(PrimitiveType primitiveType) {
+				@Override
+				public Stereotype casePrimitiveType(PrimitiveType primitiveType) {
 					Stereotype eDataTypeStereotype = getEcoreStereotype(
 						eClassifier, STEREOTYPE__E_DATA_TYPE);
 
@@ -5870,17 +5605,20 @@
 
 				processEcoreTaggedValue(element, eClassifierStereotype,
 					TAG_DEFINITION__INSTANCE_CLASS_NAME, eClassifier,
-					EcorePackage.eINSTANCE.getEClassifier_InstanceClassName(),
+					EcorePackage.Literals.ECLASSIFIER__INSTANCE_CLASS_NAME,
 					options, diagnostics, context);
 			}
 		}
 
 		protected void processEcoreTaggedValues(final Element element,
-				EStructuralFeature eStructuralFeature, final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
-			Stereotype eStructuralFeatureStereotype = (Stereotype) new EcoreSwitch() {
+				EStructuralFeature eStructuralFeature,
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
+			Stereotype eStructuralFeatureStereotype = new EcoreSwitch<Stereotype>() {
 
-				public Object caseEAttribute(EAttribute eAttribute) {
+				@Override
+				public Stereotype caseEAttribute(EAttribute eAttribute) {
 					Stereotype eAttributeStereotype = getEcoreStereotype(
 						eAttribute, STEREOTYPE__E_ATTRIBUTE);
 
@@ -5889,14 +5627,15 @@
 
 						processEcoreTaggedValue(element, eAttributeStereotype,
 							TAG_DEFINITION__IS_ID, eAttribute,
-							EcorePackage.eINSTANCE.getEAttribute_ID(), options,
+							EcorePackage.Literals.EATTRIBUTE__ID, options,
 							diagnostics, context);
 					}
 
 					return eAttributeStereotype;
 				}
 
-				public Object caseEReference(EReference eReference) {
+				@Override
+				public Stereotype caseEReference(EReference eReference) {
 					Stereotype eReferenceStereotype = getEcoreStereotype(
 						eReference, STEREOTYPE__E_REFERENCE);
 
@@ -5905,9 +5644,8 @@
 
 						processEcoreTaggedValue(element, eReferenceStereotype,
 							TAG_DEFINITION__IS_RESOLVE_PROXIES, eReference,
-							EcorePackage.eINSTANCE
-								.getEReference_ResolveProxies(), options,
-							diagnostics, context);
+							EcorePackage.Literals.EREFERENCE__RESOLVE_PROXIES,
+							options, diagnostics, context);
 					}
 
 					return eReferenceStereotype;
@@ -5917,17 +5655,17 @@
 			if (eStructuralFeatureStereotype != null) {
 				processEcoreTaggedValue(element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_TRANSIENT, eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Transient(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__TRANSIENT,
 					options, diagnostics, context);
 
 				processEcoreTaggedValue(element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_UNSETTABLE, eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Unsettable(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__UNSETTABLE,
 					options, diagnostics, context);
 
 				processEcoreTaggedValue(element, eStructuralFeatureStereotype,
 					TAG_DEFINITION__IS_VOLATILE, eStructuralFeature,
-					EcorePackage.eINSTANCE.getEStructuralFeature_Volatile(),
+					EcorePackage.Literals.ESTRUCTURAL_FEATURE__VOLATILE,
 					options, diagnostics, context);
 
 				processEcoreTaggedValue(element, eStructuralFeatureStereotype,
@@ -5948,18 +5686,20 @@
 			}
 		}
 
-		protected void processEcoreTaggedValues(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processEcoreTaggedValues(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = eModelElementToElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
+			for (Map.Entry<EModelElement, Element> entry : eModelElementToElementMap
+				.entrySet()) {
 
-				Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getKey();
-				final Element element = (Element) entry.getValue();
+				EModelElement eModelElement = entry.getKey();
+				final Element element = entry.getValue();
 
-				new EcoreSwitch() {
+				new EcoreSwitch<Object>() {
 
+					@Override
 					public Object caseEClassifier(EClassifier eClassifier) {
 						processEcoreTaggedValues(element, eClassifier, options,
 							diagnostics, context);
@@ -5967,6 +5707,7 @@
 						return eClassifier;
 					}
 
+					@Override
 					public Object caseEDataType(EDataType eDataType) {
 						processEcoreTaggedValues(element, eDataType, options,
 							diagnostics, context);
@@ -5974,6 +5715,7 @@
 						return eDataType;
 					}
 
+					@Override
 					public Object caseEEnum(EEnum eEnum) {
 						Stereotype eEnumStereotype = getEcoreStereotype(eEnum,
 							STEREOTYPE__E_ENUM);
@@ -5985,6 +5727,7 @@
 						return eEnum;
 					}
 
+					@Override
 					public Object caseEEnumLiteral(EEnumLiteral eEnumLiteral) {
 						Stereotype eEnumLiteralStereotype = getEcoreStereotype(
 							eEnumLiteral, STEREOTYPE__E_ENUM_LITERAL);
@@ -5996,6 +5739,7 @@
 						return eEnumLiteral;
 					}
 
+					@Override
 					public Object caseEOperation(EOperation eOperation) {
 						Stereotype eOperationStereotype = getEcoreStereotype(
 							eOperation, STEREOTYPE__E_OPERATION);
@@ -6007,6 +5751,7 @@
 						return eOperation;
 					}
 
+					@Override
 					public Object caseEPackage(EPackage ePackage) {
 						processEcoreTaggedValues(element, ePackage, options,
 							diagnostics, context);
@@ -6014,6 +5759,7 @@
 						return ePackage;
 					}
 
+					@Override
 					public Object caseEParameter(EParameter eParameter) {
 						Stereotype eParameterStereotype = getEcoreStereotype(
 							eParameter, STEREOTYPE__E_PARAMETER);
@@ -6025,6 +5771,7 @@
 						return eParameter;
 					}
 
+					@Override
 					public Object caseEStructuralFeature(
 							EStructuralFeature eStructuralFeature) {
 						processEcoreTaggedValues(element, eStructuralFeature,
@@ -6037,14 +5784,14 @@
 			}
 		}
 
-		protected void processRedefinesAnnotations(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processRedefinesAnnotations(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = eModelElementToElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getKey();
+			for (Map.Entry<EModelElement, Element> entry : eModelElementToElementMap
+				.entrySet()) {
+				EModelElement eModelElement = entry.getKey();
 
 				if (eModelElement instanceof ETypedElement) {
 					EAnnotation redefinesEAnnotation = getEAnnotation(
@@ -6053,11 +5800,11 @@
 					if (redefinesEAnnotation != null) {
 						Feature feature = (Feature) entry.getValue();
 
-						for (Iterator references = redefinesEAnnotation
-							.getReferences().iterator(); references.hasNext();) {
+						for (EObject reference : redefinesEAnnotation
+							.getReferences()) {
 
 							Feature redefinedFeature = (Feature) eModelElementToElementMap
-								.get(references.next());
+								.get(reference);
 
 							if (redefinedFeature != null
 								&& findValidRedefinitions(feature,
@@ -6110,14 +5857,14 @@
 			}
 		}
 
-		protected void processSubsetsAnnotations(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processSubsetsAnnotations(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = eModelElementToElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getKey();
+			for (Map.Entry<EModelElement, Element> entry : eModelElementToElementMap
+				.entrySet()) {
+				EModelElement eModelElement = entry.getKey();
 
 				if (eModelElement instanceof EStructuralFeature) {
 					EAnnotation subsetsEAnnotation = getEAnnotation(
@@ -6126,11 +5873,11 @@
 					if (subsetsEAnnotation != null) {
 						Property property = (Property) entry.getValue();
 
-						for (Iterator references = subsetsEAnnotation
-							.getReferences().iterator(); references.hasNext();) {
+						for (EObject reference : subsetsEAnnotation
+							.getReferences()) {
 
 							Property subsettedProperty = (Property) eModelElementToElementMap
-								.get(references.next());
+								.get(reference);
 
 							if (subsettedProperty != null
 								&& findValidSubsets(property,
@@ -6183,14 +5930,14 @@
 			}
 		}
 
-		protected void processUnionAnnotations(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processUnionAnnotations(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = eModelElementToElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				Map.Entry entry = (Map.Entry) entries.next();
-				EModelElement eModelElement = (EModelElement) entry.getKey();
+			for (Map.Entry<EModelElement, Element> entry : eModelElementToElementMap
+				.entrySet()) {
+				EModelElement eModelElement = entry.getKey();
 
 				if (eModelElement instanceof EStructuralFeature) {
 					EAnnotation unionEAnnotation = getEAnnotation(
@@ -6238,25 +5985,22 @@
 			}
 		}
 
-		protected void processAnnotationDetails(final Map options,
-				final DiagnosticChain diagnostics, final Map context) {
+		protected void processAnnotationDetails(
+				final Map<String, String> options,
+				final DiagnosticChain diagnostics,
+				final Map<Object, Object> context) {
 
-			for (Iterator entries = eModelElementToElementMap.entrySet()
-				.iterator(); entries.hasNext();) {
-
-				final Map.Entry entry = (Map.Entry) entries.next();
-				Element element = (Element) entry.getValue();
+			for (final Map.Entry<EModelElement, Element> entry : eModelElementToElementMap
+				.entrySet()) {
+				Element element = entry.getValue();
 
 				if (element != null) {
-					EModelElement eModelElement = (EModelElement) entry
-						.getKey();
+					EModelElement eModelElement = entry.getKey();
 
-					for (Iterator eAnnotations = eModelElement
-						.getEAnnotations().iterator(); eAnnotations.hasNext();) {
+					for (EAnnotation eAnnotation : eModelElement
+						.getEAnnotations()) {
 
-						EAnnotation eAnnotation = (EAnnotation) eAnnotations
-							.next();
-						EMap details = eAnnotation.getDetails();
+						EMap<String, String> details = eAnnotation.getDetails();
 
 						if (!details.isEmpty()) {
 
@@ -6304,8 +6048,8 @@
 			}
 		}
 
-		protected void processOptions(Map options, DiagnosticChain diagnostics,
-				Map context) {
+		protected void processOptions(Map<String, String> options,
+				DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 			if (!OPTION__IGNORE
 				.equals(options.get(OPTION__ECORE_TAGGED_VALUES))) {
@@ -6334,20 +6078,15 @@
 			}
 		}
 
-		/*
-		 * (non-Javadoc)
-		 * 
-		 * @see org.eclipse.uml2.common.util.UML2Util.Converter#convert(java.util.Collection,
-		 *      java.util.Map, org.eclipse.emf.common.util.DiagnosticChain,
-		 *      java.util.Map)
-		 */
-		public Collection convert(Collection eObjects, Map options,
-				DiagnosticChain diagnostics, Map context) {
+		public Collection<? extends EObject> convert(
+				Collection<? extends EObject> eObjects,
+				Map<String, String> options, DiagnosticChain diagnostics,
+				Map<Object, Object> context) {
 			ePackages = EcoreUtil.getObjectsByType(eObjects,
-				EcorePackage.eINSTANCE.getEPackage());
+				EcorePackage.Literals.EPACKAGE);
 
-			for (Iterator ep = ePackages.iterator(); ep.hasNext();) {
-				doSwitch((EPackage) ep.next());
+			for (EPackage ePackage : ePackages) {
+				doSwitch(ePackage);
 			}
 
 			if (options != null) {
@@ -6355,7 +6094,7 @@
 			}
 
 			return getRootContainers(EcoreUtil
-				.getObjectsByType(eModelElementToElementMap.values(),
+				.<EObject> getObjectsByType(eModelElementToElementMap.values(),
 					UMLPackage.Literals.PACKAGE));
 		}
 	}
@@ -6611,10 +6350,8 @@
 
 		StringBuffer qualifiedName = new StringBuffer(name);
 
-		for (Iterator allNamespaces = namedElement.allNamespaces().iterator(); allNamespaces
-			.hasNext();) {
-
-			String namespaceName = ((Namespace) allNamespaces.next()).getName();
+		for (Namespace namespace : namedElement.allNamespaces()) {
+			String namespaceName = namespace.getName();
 
 			if (isEmpty(namespaceName)) {
 				return null;
@@ -6637,8 +6374,8 @@
 	 *            The qualified name of the element(s) to be found.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(ResourceSet resourceSet,
-			String qualifiedName) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			ResourceSet resourceSet, String qualifiedName) {
 		return findNamedElements(resourceSet, qualifiedName, false);
 	}
 
@@ -6655,8 +6392,8 @@
 	 *            Whether to ignore case when doing name comparisons.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(ResourceSet resourceSet,
-			String qualifiedName, boolean ignoreCase) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			ResourceSet resourceSet, String qualifiedName, boolean ignoreCase) {
 		return findNamedElements(resourceSet, qualifiedName, ignoreCase,
 			UMLPackage.Literals.NAMED_ELEMENT);
 	}
@@ -6676,29 +6413,29 @@
 	 *            The type of the element(s) to be found.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(ResourceSet resourceSet,
-			String qualifiedName, boolean ignoreCase, EClass eClass) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			ResourceSet resourceSet, String qualifiedName, boolean ignoreCase,
+			EClass eClass) {
 
 		if (!isEmpty(qualifiedName)
 			&& UMLPackage.Literals.NAMED_ELEMENT.isSuperTypeOf(eClass)) {
 
-			EList resources = resourceSet.getResources();
+			EList<Resource> resources = resourceSet.getResources();
 			int size = resources.size();
 
 			if (size > 0) {
-				EList namedElements = new UniqueEList.FastCompare();
+				EList<NE> namedElements = new UniqueEList.FastCompare<NE>();
 
 				for (int i = 0; i < size; i++) {
-					findNamedElements(((Resource) resources.get(i))
-						.getContents(), qualifiedName, ignoreCase, eClass,
-						namedElements);
+					findNamedElements(resources.get(i).getContents(),
+						qualifiedName, ignoreCase, eClass, namedElements);
 				}
 
 				return ECollections.unmodifiableEList(namedElements);
 			}
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.<NE> emptyEList();
 	}
 
 	/**
@@ -6711,8 +6448,8 @@
 	 *            The qualified name of the element(s) to be found.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(Resource resource,
-			String qualifiedName) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			Resource resource, String qualifiedName) {
 		return findNamedElements(resource, qualifiedName, false);
 	}
 
@@ -6728,8 +6465,8 @@
 	 *            Whether to ignore case when doing name comparisons.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(Resource resource,
-			String qualifiedName, boolean ignoreCase) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			Resource resource, String qualifiedName, boolean ignoreCase) {
 		return findNamedElements(resource, qualifiedName, ignoreCase,
 			UMLPackage.Literals.NAMED_ELEMENT);
 	}
@@ -6749,16 +6486,17 @@
 	 *            The type of the element(s) to be found.
 	 * @return The named element(s).
 	 */
-	public static Collection findNamedElements(Resource resource,
-			String qualifiedName, boolean ignoreCase, EClass eClass) {
+	public static <NE extends NamedElement> Collection<NE> findNamedElements(
+			Resource resource, String qualifiedName, boolean ignoreCase,
+			EClass eClass) {
 
 		if (!isEmpty(qualifiedName)
 			&& UMLPackage.Literals.NAMED_ELEMENT.isSuperTypeOf(eClass)) {
 
-			EList contents = resource.getContents();
+			EList<EObject> contents = resource.getContents();
 
 			if (!contents.isEmpty()) {
-				EList namedElements = new UniqueEList.FastCompare();
+				EList<NE> namedElements = new UniqueEList.FastCompare<NE>();
 
 				findNamedElements(contents, qualifiedName, ignoreCase, eClass,
 					namedElements);
@@ -6767,21 +6505,17 @@
 			}
 		}
 
-		return ECollections.EMPTY_ELIST;
+		return ECollections.<NE> emptyEList();
 	}
 
-	protected static Collection findNamedElements(Collection eObjects,
-			String qualifiedName, boolean ignoreCase, EClass eClass,
-			Collection namedElements) {
+	protected static <NE extends NamedElement> Collection<NE> findNamedElements(
+			Collection<? extends EObject> eObjects, String qualifiedName,
+			boolean ignoreCase, EClass eClass, Collection<NE> namedElements) {
 		int index = qualifiedName.indexOf(NamedElement.SEPARATOR);
 
 		if (index == -1) {
 
-			for (Iterator members = EcoreUtil
-				.getObjectsByType(eObjects, eClass).iterator(); members
-				.hasNext();) {
-
-				NamedElement member = (NamedElement) members.next();
+			for (NE member : EcoreUtil.<NE> getObjectsByType(eObjects, eClass)) {
 
 				if (ignoreCase
 					? qualifiedName.equalsIgnoreCase(member.getName())
@@ -6795,10 +6529,8 @@
 			qualifiedName = qualifiedName.substring(index
 				+ NamedElement.SEPARATOR.length());
 
-			for (Iterator namespaces = EcoreUtil.getObjectsByType(eObjects,
-				UMLPackage.Literals.NAMESPACE).iterator(); namespaces.hasNext();) {
-
-				Namespace namespace = (Namespace) namespaces.next();
+			for (Namespace namespace : EcoreUtil.<Namespace> getObjectsByType(
+				eObjects, UMLPackage.Literals.NAMESPACE)) {
 
 				if (ignoreCase
 					? name.equalsIgnoreCase(namespace.getName())
@@ -6850,7 +6582,7 @@
 
 			if (model != null) {
 				EPackage ePackage = EPackage.Registry.INSTANCE
-					.getEPackage((String) getTaggedValue(model, "Ecore" // $NON-NLS-1$
+					.getEPackage((String) getTaggedValue(model, "Ecore" //$NON-NLS-1$
 						+ NamedElement.SEPARATOR + STEREOTYPE__E_PACKAGE,
 						TAG_DEFINITION__NS_URI));
 
@@ -6870,10 +6602,10 @@
 				.getEAnnotation(UMLPackage.eNS_URI);
 
 			if (eAnnotation != null) {
-				EList references = eAnnotation.getReferences();
+				EList<EObject> references = eAnnotation.getReferences();
 
 				if (!references.isEmpty()) {
-					Object reference = references.get(0);
+					EObject reference = references.get(0);
 
 					if (reference instanceof Classifier) {
 						return (NamedElement) reference;
@@ -6889,10 +6621,7 @@
 			if (class_ != null) {
 				String name = definition.getName();
 
-				for (Iterator ownedAttributes = class_.getOwnedAttributes()
-					.iterator(); ownedAttributes.hasNext();) {
-
-					Property ownedAttribute = (Property) ownedAttributes.next();
+				for (Property ownedAttribute : class_.getOwnedAttributes()) {
 
 					if (safeEquals(getValidJavaIdentifier(ownedAttribute
 						.getName()), name)) {
@@ -6952,12 +6681,8 @@
 
 			if (getStereotype(eClass) != null) {
 
-				for (Iterator eAllStructuralFeatures = eClass
-					.getEAllStructuralFeatures().iterator(); eAllStructuralFeatures
-					.hasNext();) {
-
-					EStructuralFeature eStructuralFeature = (EStructuralFeature) eAllStructuralFeatures
-						.next();
+				for (EStructuralFeature eStructuralFeature : eClass
+					.getEAllStructuralFeatures()) {
 
 					if (eStructuralFeature.getName().startsWith(
 						Extension.METACLASS_ROLE_PREFIX)) {
@@ -6993,12 +6718,8 @@
 
 			if (getStereotype(eClass) != null) {
 
-				for (Iterator eAllStructuralFeatures = eClass
-					.getEAllStructuralFeatures().iterator(); eAllStructuralFeatures
-					.hasNext();) {
-
-					EStructuralFeature eStructuralFeature = (EStructuralFeature) eAllStructuralFeatures
-						.next();
+				for (EStructuralFeature eStructuralFeature : eClass
+					.getEAllStructuralFeatures()) {
 
 					if (eStructuralFeature.getName().startsWith(
 						Extension.METACLASS_ROLE_PREFIX)
@@ -7055,13 +6776,12 @@
 					if (!nearestPackage.getAllAppliedProfiles().contains(
 						profile)) {
 
-						EList allOwningPackages = nearestPackage
+						EList<org.eclipse.uml2.uml.Package> allOwningPackages = nearestPackage
 							.allOwningPackages();
 						int size = allOwningPackages.size();
 
 						(size > 0
-							? (org.eclipse.uml2.uml.Package) allOwningPackages
-								.get(size - 1)
+							? allOwningPackages.get(size - 1)
 							: nearestPackage).applyProfile(profile);
 					}
 
@@ -7078,14 +6798,12 @@
 	protected static Property getTagDefinition(Stereotype stereotype,
 			final String propertyName) {
 
-		return (Property) findEObject(stereotype.getAllAttributes(),
-			new EObjectMatcher() {
+		return findEObject(stereotype.getAllAttributes(), new EObjectMatcher() {
 
-				public boolean matches(EObject eObject) {
-					return safeEquals(((Property) eObject).getName(),
-						propertyName);
-				}
-			});
+			public boolean matches(EObject eObject) {
+				return safeEquals(((Property) eObject).getName(), propertyName);
+			}
+		});
 	}
 
 	protected static Object getTaggedValue(Element element,
@@ -7124,83 +6842,103 @@
 		return false;
 	}
 
-	protected static EList getOwnedAttributes(Type type) {
+	protected static EList<Property> getOwnedAttributes(Type type) {
+		@SuppressWarnings("unchecked")
+		EList<Property> ownedAttributes = (EList<Property>) new UMLSwitch() {
 
-		return (EList) new UMLSwitch() {
-
+			@Override
 			public Object caseArtifact(Artifact artifact) {
 				return artifact.getOwnedAttributes();
 			}
 
+			@Override
 			public Object caseDataType(DataType dataType) {
 				return dataType.getOwnedAttributes();
 			}
 
+			@Override
 			public Object caseInterface(Interface interface_) {
 				return interface_.getOwnedAttributes();
 			}
 
+			@Override
 			public Object caseSignal(Signal signal) {
 				return signal.getOwnedAttributes();
 			}
 
+			@Override
 			public Object caseStructuredClassifier(
 					StructuredClassifier structuredClassifier) {
 				return structuredClassifier.getOwnedAttributes();
 			}
 
+			@Override
 			public Object doSwitch(EObject eObject) {
 				return eObject == null
 					? null
 					: super.doSwitch(eObject);
 			}
 		}.doSwitch(type);
+
+		return ownedAttributes;
 	}
 
-	protected static EList getOwnedOperations(Type type) {
+	protected static EList<Operation> getOwnedOperations(Type type) {
+		@SuppressWarnings("unchecked")
+		EList<Operation> ownedOperations = (EList<Operation>) new UMLSwitch() {
 
-		return (EList) new UMLSwitch() {
-
+			@Override
 			public Object caseArtifact(Artifact artifact) {
 				return artifact.getOwnedOperations();
 			}
 
+			@Override
 			public Object caseClass(org.eclipse.uml2.uml.Class class_) {
 				return class_.getOwnedOperations();
 			}
 
+			@Override
 			public Object caseDataType(DataType dataType) {
 				return dataType.getOwnedOperations();
 			}
 
+			@Override
 			public Object caseInterface(Interface interface_) {
 				return interface_.getOwnedOperations();
 			}
 
+			@Override
 			public Object doSwitch(EObject eObject) {
 				return eObject == null
 					? null
 					: super.doSwitch(eObject);
 			}
 		}.doSwitch(type);
+
+		return ownedOperations;
 	}
 
-	protected static EList getRedefinedFeatures(Feature feature) {
+	protected static EList<Feature> getRedefinedFeatures(Feature feature) {
+		@SuppressWarnings("unchecked")
+		EList<Feature> redefinedFeatures = (EList<Feature>) new UMLSwitch() {
 
-		return (EList) new UMLSwitch() {
-
+			@Override
 			public Object caseOperation(Operation operation) {
 				return operation.getRedefinedOperations();
 			}
 
+			@Override
 			public Object caseProperty(Property property) {
 				return property.getRedefinedProperties();
 			}
 
+			@Override
 			public Object defaultCase(EObject eObject) {
-				return ECollections.EMPTY_ELIST;
+				return ECollections.<Feature> emptyEList();
 			}
 		}.doSwitch(feature);
+
+		return redefinedFeatures;
 	}
 
 	protected static boolean isRedefinitionValid(Feature redefiningFeature,
@@ -7208,48 +6946,47 @@
 		return redefinedFeature.isConsistentWith(redefiningFeature);
 	}
 
-	protected static Collection findValidRedefinitions(
-			Feature redefiningFeature, String name) {
-		Collection redefinedFeatures = new UniqueEList.FastCompare();
+	protected static <F extends Feature> Collection<F> findValidRedefinitions(
+			F redefiningFeature, String name) {
+		Collection<F> redefinedFeatures = new UniqueEList.FastCompare<F>();
 
-		for (Iterator redefinitionContexts = redefiningFeature
-			.getRedefinitionContexts().iterator(); redefinitionContexts
-			.hasNext();) {
+		for (Classifier redefinitionContext : redefiningFeature
+			.getRedefinitionContexts()) {
 
 			findValidRedefinitions(redefinedFeatures, redefiningFeature, name,
-				(Classifier) redefinitionContexts.next());
+				redefinitionContext);
 		}
 
 		return redefinedFeatures;
 	}
 
-	protected static Collection findValidRedefinitions(
-			Collection redefinedFeatures, Feature redefiningFeature,
+	protected static <F extends Feature> Collection<F> findValidRedefinitions(
+			Collection<F> redefinedFeatures, F redefiningFeature,
 			final String name, Classifier redefinitionContext) {
-		Feature redefinedFeature = (Feature) findEObject(redefinitionContext
-			.getFeatures(), new EClassMatcher(redefiningFeature) {
+		F redefinedFeature = findEObject(redefinitionContext.getFeatures(),
+			new EClassMatcher(redefiningFeature) {
 
-			public boolean matches(EObject otherEObject) {
+				@Override
+				public boolean matches(EObject otherEObject) {
 
-				if (super.matches(otherEObject)) {
-					Feature otherFeature = (Feature) otherEObject;
+					if (super.matches(otherEObject)) {
+						Feature otherFeature = (Feature) otherEObject;
 
-					return eObject != otherFeature
-						&& safeEquals(otherFeature.getName(), name)
-						&& isRedefinitionValid((Feature) eObject, otherFeature);
+						return eObject != otherFeature
+							&& safeEquals(otherFeature.getName(), name)
+							&& isRedefinitionValid((Feature) eObject,
+								otherFeature);
+					}
+
+					return false;
 				}
-
-				return false;
-			}
-		});
+			});
 
 		if (redefinedFeature == null) {
 
-			for (Iterator generals = redefinitionContext.getGenerals()
-				.iterator(); generals.hasNext();) {
-
+			for (Classifier general : redefinitionContext.getGenerals()) {
 				findValidRedefinitions(redefinedFeatures, redefiningFeature,
-					name, (Classifier) generals.next());
+					name, general);
 			}
 		} else {
 			redefinedFeatures.add(redefinedFeature);
@@ -7261,18 +6998,11 @@
 	protected static boolean isSubsetValid(Property subsettingProperty,
 			Property subsettedProperty) {
 
-		for (Iterator subsettingContexts = subsettingProperty
-			.subsettingContext().iterator(); subsettingContexts.hasNext();) {
+		for (Type subsettingContext : subsettingProperty.subsettingContext()) {
 
-			Classifier subsettingContext = (Classifier) subsettingContexts
-				.next();
+			for (Type subsettedContext : subsettedProperty.subsettingContext()) {
 
-			for (Iterator subsettedContexts = subsettedProperty
-				.subsettingContext().iterator(); subsettedContexts.hasNext();) {
-
-				if (!subsettingContext
-					.conformsTo((Classifier) subsettedContexts.next())) {
-
+				if (!subsettingContext.conformsTo(subsettedContext)) {
 					return false;
 				}
 			}
@@ -7281,26 +7011,27 @@
 		return true;
 	}
 
-	protected static Collection findValidSubsets(Property subsettingProperty,
-			String name) {
-		Collection subsettedProperties = new UniqueEList.FastCompare();
+	protected static Collection<Property> findValidSubsets(
+			Property subsettingProperty, String name) {
+		Collection<Property> subsettedProperties = new UniqueEList.FastCompare<Property>();
 
-		for (Iterator subsettingContexts = subsettingProperty
-			.subsettingContext().iterator(); subsettingContexts.hasNext();) {
+		for (Type subsettingContext : subsettingProperty.subsettingContext()) {
 
 			findValidSubsets(subsettedProperties, subsettingProperty, name,
-				(Classifier) subsettingContexts.next());
+				(Classifier) subsettingContext);
 		}
 
 		return subsettedProperties;
 	}
 
-	protected static Collection findValidSubsets(
-			Collection subsettedProperties, Property subsettingProperty,
-			final String name, Classifier subsettingContext) {
-		Property subsettedProperty = (Property) findEObject(subsettingContext
+	protected static Collection<Property> findValidSubsets(
+			Collection<Property> subsettedProperties,
+			Property subsettingProperty, final String name,
+			Classifier subsettingContext) {
+		Property subsettedProperty = findEObject(subsettingContext
 			.getAttributes(), new EClassMatcher(subsettingProperty) {
 
+			@Override
 			public boolean matches(EObject otherEObject) {
 
 				if (super.matches(otherEObject)) {
@@ -7317,11 +7048,9 @@
 
 		if (subsettedProperty == null) {
 
-			for (Iterator generals = subsettingContext.getGenerals().iterator(); generals
-				.hasNext();) {
-
+			for (Classifier general : subsettingContext.getGenerals()) {
 				findValidSubsets(subsettedProperties, subsettingProperty, name,
-					(Classifier) generals.next());
+					general);
 			}
 		} else {
 			subsettedProperties.add(subsettedProperty);
@@ -7340,10 +7069,11 @@
 	 * @param options
 	 *            The options to use.
 	 */
-	public static void merge(org.eclipse.uml2.uml.Package package_, Map options) {
+	public static void merge(org.eclipse.uml2.uml.Package package_,
+			Map<String, String> options) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7415,10 +7145,11 @@
 	 *            The cache of context-specific information.
 	 */
 	public static void merge(org.eclipse.uml2.uml.Package package_,
-			Map options, DiagnosticChain diagnostics, Map context) {
+			Map<String, String> options, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7485,11 +7216,11 @@
 	 *            The options to use.
 	 * @return An Ecore representation of the package.
 	 */
-	public static Collection convertToEcore(
-			org.eclipse.uml2.uml.Package package_, Map options) {
+	public static Collection<EPackage> convertToEcore(
+			org.eclipse.uml2.uml.Package package_, Map<String, String> options) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7587,12 +7318,12 @@
 	 *            The cache of context-specific information.
 	 * @return An Ecore representation of the package.
 	 */
-	public static Collection convertToEcore(
-			org.eclipse.uml2.uml.Package package_, Map options,
-			DiagnosticChain diagnostics, Map context) {
+	public static Collection<EPackage> convertToEcore(
+			org.eclipse.uml2.uml.Package package_, Map<String, String> options,
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7671,8 +7402,12 @@
 				OPTION__REPORT);
 		}
 
-		return new UML2EcoreConverter().convert(
-			Collections.singleton(package_), options, diagnostics, context);
+		@SuppressWarnings("unchecked")
+		Collection<EPackage> ePackages = (Collection<EPackage>) new UML2EcoreConverter()
+			.convert(Collections.singletonList(package_), options, diagnostics,
+				context);
+
+		return ePackages;
 	}
 
 	/**
@@ -7686,10 +7421,11 @@
 	 *            The options to use.
 	 * @return An Ecore representation of the profile.
 	 */
-	public static Collection convertToEcore(Profile profile, Map options) {
+	public static Collection<EPackage> convertToEcore(Profile profile,
+			Map<String, String> options) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7787,11 +7523,12 @@
 	 *            The cache of context-specific information.
 	 * @return An Ecore representation of the profile.
 	 */
-	public static Collection convertToEcore(Profile profile, Map options,
-			DiagnosticChain diagnostics, Map context) {
+	public static Collection<EPackage> convertToEcore(Profile profile,
+			Map<String, String> options, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		if (!options
@@ -7870,14 +7607,16 @@
 				OPTION__REPORT);
 		}
 
-		Collection ePackages = new Profile2EPackageConverter().convert(
-			Collections.singleton(profile), options, null, null);
+		@SuppressWarnings("unchecked")
+		Collection<EPackage> ePackages = (Collection<EPackage>) new Profile2EPackageConverter()
+			.convert(Collections.singleton(profile), options, null, null);
 
-		for (Iterator allContents = EcoreUtil.getAllContents(ePackages); allContents
-			.hasNext();) {
+		for (TreeIterator<EObject> allContents = EcoreUtil
+			.getAllContents(ePackages); allContents.hasNext();) {
 
-			new EcoreSwitch() {
+			new EcoreSwitch<Object>() {
 
+				@Override
 				public Object caseEAttribute(EAttribute eAttribute) {
 
 					try {
@@ -7889,6 +7628,7 @@
 					return eAttribute;
 				}
 
+				@Override
 				public Object caseEDataType(EDataType eDataType) {
 
 					try {
@@ -7902,7 +7642,7 @@
 					return eDataType;
 				}
 
-			}.doSwitch((EObject) allContents.next());
+			}.doSwitch(allContents.next());
 		}
 
 		return ePackages;
@@ -7918,10 +7658,11 @@
 	 *            The options to use.
 	 * @return A UML representation of the Ecore package.
 	 */
-	public static Collection convertFromEcore(EPackage ePackage, Map options) {
+	public static Collection<org.eclipse.uml2.uml.Package> convertFromEcore(
+			EPackage ePackage, Map<String, String> options) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
 		return convertFromEcore(ePackage, options, null, null);
@@ -7942,15 +7683,19 @@
 	 *            The cache of context-specific information.
 	 * @return A UML representation of the Ecore package.
 	 */
-	public static Collection convertFromEcore(EPackage ePackage, Map options,
-			DiagnosticChain diagnostics, Map context) {
+	public static Collection<org.eclipse.uml2.uml.Package> convertFromEcore(
+			EPackage ePackage, Map<String, String> options,
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 
 		if (options == null) {
-			options = new HashMap();
+			options = new HashMap<String, String>();
 		}
 
-		return new Ecore2UMLConverter().convert(
-			Collections.singleton(ePackage), options, diagnostics, context);
+		@SuppressWarnings("unchecked")
+		Collection<org.eclipse.uml2.uml.Package> packages = (Collection<org.eclipse.uml2.uml.Package>) new Ecore2UMLConverter()
+			.convert(Collections.singleton(ePackage), options, diagnostics,
+				context);
+		return packages;
 	}
 
 }
diff --git a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLValidator.java b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLValidator.java
index 416c7eb..ebfefa9 100644
--- a/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLValidator.java
+++ b/plugins/org.eclipse.uml2.uml/src/org/eclipse/uml2/uml/util/UMLValidator.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: UMLValidator.java,v 1.16 2006/05/16 15:07:26 khussey Exp $
+ * $Id: UMLValidator.java,v 1.17 2006/12/14 15:49:34 khussey Exp $
  */
 package org.eclipse.uml2.uml.util;
 
@@ -3559,6 +3559,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected EPackage getEPackage() {
 		return UMLPackage.eINSTANCE;
 	}
@@ -3569,8 +3570,9 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
 	protected boolean validate(int classifierID, Object value,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		switch (classifierID) {
 			case UMLPackage.COMMENT :
 				return validateComment((Comment) value, diagnostics, context);
@@ -4337,7 +4339,7 @@
 	 * @generated
 	 */
 	public boolean validateComment(Comment comment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(comment,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4363,7 +4365,7 @@
 	 * @generated
 	 */
 	public boolean validateElement(Element element,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(element,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4390,7 +4392,7 @@
 	 * @generated
 	 */
 	public boolean validateElement_validateNotOwnSelf(Element element,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return element.validateNotOwnSelf(diagnostics, context);
 	}
 
@@ -4401,7 +4403,7 @@
 	 * @generated
 	 */
 	public boolean validateElement_validateHasOwner(Element element,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return element.validateHasOwner(diagnostics, context);
 	}
 
@@ -4412,7 +4414,7 @@
 	 */
 	public boolean validateDirectedRelationship(
 			DirectedRelationship directedRelationship,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			directedRelationship, diagnostics, context);
 		if (result || diagnostics != null)
@@ -4439,7 +4441,7 @@
 	 * @generated
 	 */
 	public boolean validateRelationship(Relationship relationship,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(relationship,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4467,7 +4469,7 @@
 	 */
 	public boolean validateLiteralSpecification(
 			LiteralSpecification literalSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			literalSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -4504,7 +4506,7 @@
 	 */
 	public boolean validateValueSpecification(
 			ValueSpecification valueSpecification, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(valueSpecification,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4540,7 +4542,7 @@
 	 * @generated
 	 */
 	public boolean validateTypedElement(TypedElement typedElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(typedElement,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4576,7 +4578,7 @@
 	 * @generated
 	 */
 	public boolean validateNamedElement(NamedElement namedElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(namedElement,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4613,7 +4615,8 @@
 	 * @generated
 	 */
 	public boolean validateNamedElement_validateHasNoQualifiedName(
-			NamedElement namedElement, DiagnosticChain diagnostics, Map context) {
+			NamedElement namedElement, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return namedElement.validateHasNoQualifiedName(diagnostics, context);
 	}
 
@@ -4624,7 +4627,8 @@
 	 * @generated
 	 */
 	public boolean validateNamedElement_validateHasQualifiedName(
-			NamedElement namedElement, DiagnosticChain diagnostics, Map context) {
+			NamedElement namedElement, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return namedElement.validateHasQualifiedName(diagnostics, context);
 	}
 
@@ -4635,7 +4639,8 @@
 	 * @generated
 	 */
 	public boolean validateNamedElement_validateVisibilityNeedsOwnership(
-			NamedElement namedElement, DiagnosticChain diagnostics, Map context) {
+			NamedElement namedElement, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return namedElement.validateVisibilityNeedsOwnership(diagnostics,
 			context);
 	}
@@ -4646,7 +4651,7 @@
 	 * @generated
 	 */
 	public boolean validateDependency(Dependency dependency,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(dependency,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4683,7 +4688,7 @@
 	 */
 	public boolean validatePackageableElement(
 			PackageableElement packageableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(packageableElement,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4720,7 +4725,7 @@
 	 */
 	public boolean validateParameterableElement(
 			ParameterableElement parameterableElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			parameterableElement, diagnostics, context);
 		if (result || diagnostics != null)
@@ -4748,7 +4753,7 @@
 	 */
 	public boolean validateTemplateParameter(
 			TemplateParameter templateParameter, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(templateParameter,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4780,7 +4785,7 @@
 	 */
 	public boolean validateTemplateParameter_validateMustBeCompatible(
 			TemplateParameter templateParameter, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return templateParameter.validateMustBeCompatible(diagnostics, context);
 	}
 
@@ -4791,7 +4796,7 @@
 	 */
 	public boolean validateTemplateSignature(
 			TemplateSignature templateSignature, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(templateSignature,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4823,7 +4828,7 @@
 	 */
 	public boolean validateTemplateSignature_validateOwnElements(
 			TemplateSignature templateSignature, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return templateSignature.validateOwnElements(diagnostics, context);
 	}
 
@@ -4834,7 +4839,7 @@
 	 */
 	public boolean validateTemplateableElement(
 			TemplateableElement templateableElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			templateableElement, diagnostics, context);
 		if (result || diagnostics != null)
@@ -4861,7 +4866,7 @@
 	 * @generated
 	 */
 	public boolean validateTemplateBinding(TemplateBinding templateBinding,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(templateBinding,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -4896,7 +4901,7 @@
 	 */
 	public boolean validateTemplateBinding_validateParameterSubstitutionFormal(
 			TemplateBinding templateBinding, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return templateBinding.validateParameterSubstitutionFormal(diagnostics,
 			context);
 	}
@@ -4909,7 +4914,7 @@
 	 */
 	public boolean validateTemplateBinding_validateOneParameterSubstitution(
 			TemplateBinding templateBinding, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return templateBinding.validateOneParameterSubstitution(diagnostics,
 			context);
 	}
@@ -4921,7 +4926,7 @@
 	 */
 	public boolean validateTemplateParameterSubstitution(
 			TemplateParameterSubstitution templateParameterSubstitution,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			templateParameterSubstitution, diagnostics, context);
 		if (result || diagnostics != null)
@@ -4953,7 +4958,7 @@
 	 */
 	public boolean validateTemplateParameterSubstitution_validateMustBeCompatible(
 			TemplateParameterSubstitution templateParameterSubstitution,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return templateParameterSubstitution.validateMustBeCompatible(
 			diagnostics, context);
 	}
@@ -4964,7 +4969,7 @@
 	 * @generated
 	 */
 	public boolean validateNamespace(Namespace namespace,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(namespace,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5004,7 +5009,8 @@
 	 * @generated
 	 */
 	public boolean validateNamespace_validateMembersDistinguishable(
-			Namespace namespace, DiagnosticChain diagnostics, Map context) {
+			Namespace namespace, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return namespace.validateMembersDistinguishable(diagnostics, context);
 	}
 
@@ -5014,7 +5020,7 @@
 	 * @generated
 	 */
 	public boolean validateElementImport(ElementImport elementImport,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(elementImport,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5049,7 +5055,7 @@
 	 */
 	public boolean validateElementImport_validateVisibilityPublicOrPrivate(
 			ElementImport elementImport, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return elementImport.validateVisibilityPublicOrPrivate(diagnostics,
 			context);
 	}
@@ -5062,7 +5068,7 @@
 	 */
 	public boolean validateElementImport_validateImportedElementIsPublic(
 			ElementImport elementImport, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return elementImport.validateImportedElementIsPublic(diagnostics,
 			context);
 	}
@@ -5073,7 +5079,7 @@
 	 * @generated
 	 */
 	public boolean validatePackageImport(PackageImport packageImport,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(packageImport,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5105,7 +5111,7 @@
 	 */
 	public boolean validatePackageImport_validatePublicOrPrivate(
 			PackageImport packageImport, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return packageImport.validatePublicOrPrivate(diagnostics, context);
 	}
 
@@ -5115,7 +5121,7 @@
 	 * @generated
 	 */
 	public boolean validatePackage(org.eclipse.uml2.uml.Package package_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(package_,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5159,7 +5165,7 @@
 	 */
 	public boolean validatePackage_validateElementsPublicOrPrivate(
 			org.eclipse.uml2.uml.Package package_, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return package_.validateElementsPublicOrPrivate(diagnostics, context);
 	}
 
@@ -5169,7 +5175,7 @@
 	 * @generated
 	 */
 	public boolean validatePackageMerge(PackageMerge packageMerge,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(packageMerge,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5196,7 +5202,7 @@
 	 * @generated
 	 */
 	public boolean validateType(Type type, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(type, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -5232,7 +5238,7 @@
 	 */
 	public boolean validateProfileApplication(
 			ProfileApplication profileApplication, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(profileApplication,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5259,7 +5265,7 @@
 	 * @generated
 	 */
 	public boolean validateProfile(Profile profile,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(profile,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5307,7 +5313,8 @@
 	 * @generated
 	 */
 	public boolean validateProfile_validateMetaclassReferenceNotSpecialized(
-			Profile profile, DiagnosticChain diagnostics, Map context) {
+			Profile profile, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return profile.validateMetaclassReferenceNotSpecialized(diagnostics,
 			context);
 	}
@@ -5319,7 +5326,8 @@
 	 * @generated
 	 */
 	public boolean validateProfile_validateReferencesSameMetamodel(
-			Profile profile, DiagnosticChain diagnostics, Map context) {
+			Profile profile, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return profile.validateReferencesSameMetamodel(diagnostics, context);
 	}
 
@@ -5329,7 +5337,7 @@
 	 * @generated
 	 */
 	public boolean validateStereotype(Stereotype stereotype,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(stereotype,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5402,7 +5410,8 @@
 	 * @generated
 	 */
 	public boolean validateStereotype_validateNameNotClash(
-			Stereotype stereotype, DiagnosticChain diagnostics, Map context) {
+			Stereotype stereotype, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return stereotype.validateNameNotClash(diagnostics, context);
 	}
 
@@ -5413,7 +5422,7 @@
 	 * @generated
 	 */
 	public boolean validateStereotype_validateGeneralize(Stereotype stereotype,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return stereotype.validateGeneralize(diagnostics, context);
 	}
 
@@ -5423,7 +5432,7 @@
 	 * @generated
 	 */
 	public boolean validateClass(org.eclipse.uml2.uml.Class class_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(class_,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5490,7 +5499,7 @@
 	 */
 	public boolean validateClass_validatePassiveClass(
 			org.eclipse.uml2.uml.Class class_, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return class_.validatePassiveClass(diagnostics, context);
 	}
 
@@ -5501,7 +5510,7 @@
 	 */
 	public boolean validateBehavioredClassifier(
 			BehavioredClassifier behavioredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			behavioredClassifier, diagnostics, context);
 		if (result || diagnostics != null)
@@ -5563,7 +5572,7 @@
 	 */
 	public boolean validateBehavioredClassifier_validateClassBehavior(
 			BehavioredClassifier behavioredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return behavioredClassifier.validateClassBehavior(diagnostics, context);
 	}
 
@@ -5573,7 +5582,7 @@
 	 * @generated
 	 */
 	public boolean validateClassifier(Classifier classifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(classifier,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5631,7 +5640,8 @@
 	 * @generated
 	 */
 	public boolean validateClassifier_validateNoCyclesInGeneralization(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return classifier
 			.validateNoCyclesInGeneralization(diagnostics, context);
 	}
@@ -5643,7 +5653,8 @@
 	 * @generated
 	 */
 	public boolean validateClassifier_validateSpecializeType(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return classifier.validateSpecializeType(diagnostics, context);
 	}
 
@@ -5654,7 +5665,8 @@
 	 * @generated
 	 */
 	public boolean validateClassifier_validateGeneralizationHierarchies(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return classifier.validateGeneralizationHierarchies(diagnostics,
 			context);
 	}
@@ -5666,7 +5678,8 @@
 	 * @generated
 	 */
 	public boolean validateClassifier_validateMapsToGeneralizationSet(
-			Classifier classifier, DiagnosticChain diagnostics, Map context) {
+			Classifier classifier, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return classifier.validateMapsToGeneralizationSet(diagnostics, context);
 	}
 
@@ -5677,7 +5690,7 @@
 	 */
 	public boolean validateRedefinableElement(
 			RedefinableElement redefinableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(redefinableElement,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5721,7 +5734,7 @@
 	 */
 	public boolean validateRedefinableElement_validateRedefinitionContextValid(
 			RedefinableElement redefinableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return redefinableElement.validateRedefinitionContextValid(diagnostics,
 			context);
 	}
@@ -5734,7 +5747,7 @@
 	 */
 	public boolean validateRedefinableElement_validateRedefinitionConsistent(
 			RedefinableElement redefinableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return redefinableElement.validateRedefinitionConsistent(diagnostics,
 			context);
 	}
@@ -5745,7 +5758,7 @@
 	 * @generated
 	 */
 	public boolean validateGeneralization(Generalization generalization,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(generalization,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5777,7 +5790,7 @@
 	 */
 	public boolean validateGeneralization_validateGeneralizationSameClassifier(
 			Generalization generalization, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return generalization.validateGeneralizationSameClassifier(diagnostics,
 			context);
 	}
@@ -5789,7 +5802,7 @@
 	 */
 	public boolean validateGeneralizationSet(
 			GeneralizationSet generalizationSet, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(generalizationSet,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5833,7 +5846,7 @@
 	 */
 	public boolean validateGeneralizationSet_validateGeneralizationSameClassifier(
 			GeneralizationSet generalizationSet, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return generalizationSet.validateGeneralizationSameClassifier(
 			diagnostics, context);
 	}
@@ -5846,7 +5859,7 @@
 	 */
 	public boolean validateGeneralizationSet_validateMapsToGeneralizationSet(
 			GeneralizationSet generalizationSet, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return generalizationSet.validateMapsToGeneralizationSet(diagnostics,
 			context);
 	}
@@ -5857,7 +5870,7 @@
 	 * @generated
 	 */
 	public boolean validateFeature(Feature feature,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(feature,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5898,7 +5911,7 @@
 	 * @generated
 	 */
 	public boolean validateUseCase(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(useCase,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -5970,7 +5983,7 @@
 	 * @generated
 	 */
 	public boolean validateUseCase_validateMustHaveName(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return useCase.validateMustHaveName(diagnostics, context);
 	}
 
@@ -5981,7 +5994,7 @@
 	 * @generated
 	 */
 	public boolean validateUseCase_validateBinaryAssociations(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return useCase.validateBinaryAssociations(diagnostics, context);
 	}
 
@@ -5992,7 +6005,8 @@
 	 * @generated
 	 */
 	public boolean validateUseCase_validateNoAssociationToUseCase(
-			UseCase useCase, DiagnosticChain diagnostics, Map context) {
+			UseCase useCase, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return useCase.validateNoAssociationToUseCase(diagnostics, context);
 	}
 
@@ -6003,7 +6017,7 @@
 	 * @generated
 	 */
 	public boolean validateUseCase_validateCannotIncludeSelf(UseCase useCase,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return useCase.validateCannotIncludeSelf(diagnostics, context);
 	}
 
@@ -6013,7 +6027,7 @@
 	 * @generated
 	 */
 	public boolean validateInclude(Include include,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(include,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6048,7 +6062,7 @@
 	 * @generated
 	 */
 	public boolean validateExtend(Extend extend, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(extend,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6087,7 +6101,7 @@
 	 * @generated
 	 */
 	public boolean validateExtend_validateExtensionPoints(Extend extend,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return extend.validateExtensionPoints(diagnostics, context);
 	}
 
@@ -6097,7 +6111,7 @@
 	 * @generated
 	 */
 	public boolean validateConstraint(Constraint constraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(constraint,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6149,7 +6163,8 @@
 	 * @generated
 	 */
 	public boolean validateConstraint_validateNotApplyToSelf(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return constraint.validateNotApplyToSelf(diagnostics, context);
 	}
 
@@ -6160,7 +6175,8 @@
 	 * @generated
 	 */
 	public boolean validateConstraint_validateValueSpecificationBoolean(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return constraint.validateValueSpecificationBoolean(diagnostics,
 			context);
 	}
@@ -6172,7 +6188,8 @@
 	 * @generated
 	 */
 	public boolean validateConstraint_validateBooleanValue(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return constraint.validateBooleanValue(diagnostics, context);
 	}
 
@@ -6183,7 +6200,8 @@
 	 * @generated
 	 */
 	public boolean validateConstraint_validateNoSideEffects(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return constraint.validateNoSideEffects(diagnostics, context);
 	}
 
@@ -6194,7 +6212,8 @@
 	 * @generated
 	 */
 	public boolean validateConstraint_validateNotAppliedToSelf(
-			Constraint constraint, DiagnosticChain diagnostics, Map context) {
+			Constraint constraint, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return constraint.validateNotAppliedToSelf(diagnostics, context);
 	}
 
@@ -6204,7 +6223,7 @@
 	 * @generated
 	 */
 	public boolean validateExtensionPoint(ExtensionPoint extensionPoint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(extensionPoint,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6251,7 +6270,7 @@
 	 */
 	public boolean validateExtensionPoint_validateMustHaveName(
 			ExtensionPoint extensionPoint, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return extensionPoint.validateMustHaveName(diagnostics, context);
 	}
 
@@ -6261,7 +6280,7 @@
 	 * @generated
 	 */
 	public boolean validateSubstitution(Substitution substitution,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(substitution,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6297,7 +6316,7 @@
 	 * @generated
 	 */
 	public boolean validateRealization(Realization realization,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(realization,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6333,7 +6352,7 @@
 	 * @generated
 	 */
 	public boolean validateAbstraction(Abstraction abstraction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(abstraction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6369,7 +6388,7 @@
 	 * @generated
 	 */
 	public boolean validateOpaqueExpression(OpaqueExpression opaqueExpression,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(opaqueExpression,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6416,7 +6435,7 @@
 	 */
 	public boolean validateOpaqueExpression_validateLanguageBodySize(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return opaqueExpression.validateLanguageBodySize(diagnostics, context);
 	}
 
@@ -6428,7 +6447,7 @@
 	 */
 	public boolean validateOpaqueExpression_validateOnlyReturnResultParameters(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return opaqueExpression.validateOnlyReturnResultParameters(diagnostics,
 			context);
 	}
@@ -6441,7 +6460,7 @@
 	 */
 	public boolean validateOpaqueExpression_validateOneReturnResultParameter(
 			OpaqueExpression opaqueExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return opaqueExpression.validateOneReturnResultParameter(diagnostics,
 			context);
 	}
@@ -6452,7 +6471,7 @@
 	 * @generated
 	 */
 	public boolean validateParameter(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(parameter,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6519,7 +6538,7 @@
 	 * @generated
 	 */
 	public boolean validateParameter_validateConnectorEnd(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return parameter.validateConnectorEnd(diagnostics, context);
 	}
 
@@ -6530,7 +6549,8 @@
 	 * @generated
 	 */
 	public boolean validateParameter_validateStreamAndException(
-			Parameter parameter, DiagnosticChain diagnostics, Map context) {
+			Parameter parameter, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return parameter.validateStreamAndException(diagnostics, context);
 	}
 
@@ -6541,7 +6561,7 @@
 	 * @generated
 	 */
 	public boolean validateParameter_validateNotException(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return parameter.validateNotException(diagnostics, context);
 	}
 
@@ -6552,7 +6572,8 @@
 	 * @generated
 	 */
 	public boolean validateParameter_validateReentrantBehaviors(
-			Parameter parameter, DiagnosticChain diagnostics, Map context) {
+			Parameter parameter, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return parameter.validateReentrantBehaviors(diagnostics, context);
 	}
 
@@ -6563,7 +6584,7 @@
 	 * @generated
 	 */
 	public boolean validateParameter_validateInAndOut(Parameter parameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return parameter.validateInAndOut(diagnostics, context);
 	}
 
@@ -6574,7 +6595,7 @@
 	 */
 	public boolean validateMultiplicityElement(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			multiplicityElement, diagnostics, context);
 		if (result || diagnostics != null)
@@ -6618,7 +6639,7 @@
 	 */
 	public boolean validateMultiplicityElement_validateUpperGt0(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return multiplicityElement.validateUpperGt0(diagnostics, context);
 	}
 
@@ -6630,7 +6651,7 @@
 	 */
 	public boolean validateMultiplicityElement_validateLowerGe0(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return multiplicityElement.validateLowerGe0(diagnostics, context);
 	}
 
@@ -6642,7 +6663,7 @@
 	 */
 	public boolean validateMultiplicityElement_validateUpperGeLower(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return multiplicityElement.validateUpperGeLower(diagnostics, context);
 	}
 
@@ -6654,7 +6675,7 @@
 	 */
 	public boolean validateMultiplicityElement_validateValueSpecificationNoSideEffects(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return multiplicityElement.validateValueSpecificationNoSideEffects(
 			diagnostics, context);
 	}
@@ -6667,7 +6688,7 @@
 	 */
 	public boolean validateMultiplicityElement_validateValueSpecificationConstant(
 			MultiplicityElement multiplicityElement,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return multiplicityElement.validateValueSpecificationConstant(
 			diagnostics, context);
 	}
@@ -6679,7 +6700,7 @@
 	 */
 	public boolean validateConnectableElement(
 			ConnectableElement connectableElement, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(connectableElement,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6715,7 +6736,7 @@
 	 * @generated
 	 */
 	public boolean validateConnectorEnd(ConnectorEnd connectorEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(connectorEnd,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6770,7 +6791,8 @@
 	 * @generated
 	 */
 	public boolean validateConnectorEnd_validateMultiplicity(
-			ConnectorEnd connectorEnd, DiagnosticChain diagnostics, Map context) {
+			ConnectorEnd connectorEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connectorEnd.validateMultiplicity(diagnostics, context);
 	}
 
@@ -6781,7 +6803,8 @@
 	 * @generated
 	 */
 	public boolean validateConnectorEnd_validatePartWithPortEmpty(
-			ConnectorEnd connectorEnd, DiagnosticChain diagnostics, Map context) {
+			ConnectorEnd connectorEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connectorEnd.validatePartWithPortEmpty(diagnostics, context);
 	}
 
@@ -6792,7 +6815,8 @@
 	 * @generated
 	 */
 	public boolean validateConnectorEnd_validateRoleAndPartWithPort(
-			ConnectorEnd connectorEnd, DiagnosticChain diagnostics, Map context) {
+			ConnectorEnd connectorEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connectorEnd.validateRoleAndPartWithPort(diagnostics, context);
 	}
 
@@ -6803,7 +6827,8 @@
 	 * @generated
 	 */
 	public boolean validateConnectorEnd_validateSelfPartWithPort(
-			ConnectorEnd connectorEnd, DiagnosticChain diagnostics, Map context) {
+			ConnectorEnd connectorEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connectorEnd.validateSelfPartWithPort(diagnostics, context);
 	}
 
@@ -6813,7 +6838,7 @@
 	 * @generated
 	 */
 	public boolean validateProperty(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(property,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -6901,7 +6926,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateMultiplicityOfComposite(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateMultiplicityOfComposite(diagnostics, context);
 	}
 
@@ -6912,7 +6938,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateSubsettingContextConforms(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateSubsettingContextConforms(diagnostics, context);
 	}
 
@@ -6923,7 +6950,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateRedefinedPropertyInherited(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property
 			.validateRedefinedPropertyInherited(diagnostics, context);
 	}
@@ -6935,7 +6963,7 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateSubsettingRules(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return property.validateSubsettingRules(diagnostics, context);
 	}
 
@@ -6946,7 +6974,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateNavigableReadonly(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateNavigableReadonly(diagnostics, context);
 	}
 
@@ -6957,7 +6986,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateDerivedUnionIsDerived(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateDerivedUnionIsDerived(diagnostics, context);
 	}
 
@@ -6968,7 +6998,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateDerivedUnionIsReadOnly(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateDerivedUnionIsReadOnly(diagnostics, context);
 	}
 
@@ -6979,7 +7010,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateSubsettedPropertyNames(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateSubsettedPropertyNames(diagnostics, context);
 	}
 
@@ -6990,7 +7022,7 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateDeploymentTarget(Property property,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return property.validateDeploymentTarget(diagnostics, context);
 	}
 
@@ -7001,7 +7033,8 @@
 	 * @generated
 	 */
 	public boolean validateProperty_validateBindingToAttribute(
-			Property property, DiagnosticChain diagnostics, Map context) {
+			Property property, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return property.validateBindingToAttribute(diagnostics, context);
 	}
 
@@ -7011,7 +7044,7 @@
 	 * @generated
 	 */
 	public boolean validateDeploymentTarget(DeploymentTarget deploymentTarget,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(deploymentTarget,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7047,7 +7080,7 @@
 	 * @generated
 	 */
 	public boolean validateDeployment(Deployment deployment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(deployment,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7083,7 +7116,7 @@
 	 * @generated
 	 */
 	public boolean validateDeployedArtifact(DeployedArtifact deployedArtifact,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(deployedArtifact,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7120,7 +7153,7 @@
 	 */
 	public boolean validateDeploymentSpecification(
 			DeploymentSpecification deploymentSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			deploymentSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -7185,7 +7218,7 @@
 	 */
 	public boolean validateDeploymentSpecification_validateDeployedElements(
 			DeploymentSpecification deploymentSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return deploymentSpecification.validateDeployedElements(diagnostics,
 			context);
 	}
@@ -7198,7 +7231,7 @@
 	 */
 	public boolean validateDeploymentSpecification_validateDeploymentTarget(
 			DeploymentSpecification deploymentSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return deploymentSpecification.validateDeploymentTarget(diagnostics,
 			context);
 	}
@@ -7209,7 +7242,7 @@
 	 * @generated
 	 */
 	public boolean validateArtifact(Artifact artifact,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(artifact,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7266,7 +7299,7 @@
 	 * @generated
 	 */
 	public boolean validateManifestation(Manifestation manifestation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(manifestation,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7302,7 +7335,7 @@
 	 * @generated
 	 */
 	public boolean validateOperation(Operation operation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(operation,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7354,7 +7387,8 @@
 	 * @generated
 	 */
 	public boolean validateOperation_validateAtMostOneReturn(
-			Operation operation, DiagnosticChain diagnostics, Map context) {
+			Operation operation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return operation.validateAtMostOneReturn(diagnostics, context);
 	}
 
@@ -7365,7 +7399,8 @@
 	 * @generated
 	 */
 	public boolean validateOperation_validateOnlyBodyForQuery(
-			Operation operation, DiagnosticChain diagnostics, Map context) {
+			Operation operation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return operation.validateOnlyBodyForQuery(diagnostics, context);
 	}
 
@@ -7376,7 +7411,7 @@
 	 */
 	public boolean validateBehavioralFeature(
 			BehavioralFeature behavioralFeature, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(behavioralFeature,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7421,7 +7456,7 @@
 	 * @generated
 	 */
 	public boolean validateBehavior(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(behavior,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7500,7 +7535,7 @@
 	 * @generated
 	 */
 	public boolean validateBehavior_validateParametersMatch(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return behavior.validateParametersMatch(diagnostics, context);
 	}
 
@@ -7511,7 +7546,8 @@
 	 * @generated
 	 */
 	public boolean validateBehavior_validateFeatureOfContextClassifier(
-			Behavior behavior, DiagnosticChain diagnostics, Map context) {
+			Behavior behavior, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return behavior
 			.validateFeatureOfContextClassifier(diagnostics, context);
 	}
@@ -7523,7 +7559,7 @@
 	 * @generated
 	 */
 	public boolean validateBehavior_validateMustRealize(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return behavior.validateMustRealize(diagnostics, context);
 	}
 
@@ -7534,7 +7570,7 @@
 	 * @generated
 	 */
 	public boolean validateBehavior_validateMostOneBehaviour(Behavior behavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return behavior.validateMostOneBehaviour(diagnostics, context);
 	}
 
@@ -7544,7 +7580,7 @@
 	 * @generated
 	 */
 	public boolean validateParameterSet(ParameterSet parameterSet,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(parameterSet,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7590,7 +7626,8 @@
 	 * @generated
 	 */
 	public boolean validateParameterSet_validateSameParameterizedEntity(
-			ParameterSet parameterSet, DiagnosticChain diagnostics, Map context) {
+			ParameterSet parameterSet, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return parameterSet.validateSameParameterizedEntity(diagnostics,
 			context);
 	}
@@ -7602,7 +7639,8 @@
 	 * @generated
 	 */
 	public boolean validateParameterSet_validateInput(
-			ParameterSet parameterSet, DiagnosticChain diagnostics, Map context) {
+			ParameterSet parameterSet, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return parameterSet.validateInput(diagnostics, context);
 	}
 
@@ -7613,7 +7651,8 @@
 	 * @generated
 	 */
 	public boolean validateParameterSet_validateTwoParameterSets(
-			ParameterSet parameterSet, DiagnosticChain diagnostics, Map context) {
+			ParameterSet parameterSet, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return parameterSet.validateTwoParameterSets(diagnostics, context);
 	}
 
@@ -7623,7 +7662,7 @@
 	 * @generated
 	 */
 	public boolean validateDataType(DataType dataType,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(dataType,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7680,7 +7719,7 @@
 	 * @generated
 	 */
 	public boolean validateInterface(Interface interface_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(interface_,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7741,7 +7780,7 @@
 	 * @generated
 	 */
 	public boolean validateInterface_validateVisibility(Interface interface_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interface_.validateVisibility(diagnostics, context);
 	}
 
@@ -7751,7 +7790,7 @@
 	 * @generated
 	 */
 	public boolean validateReception(Reception reception,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(reception,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7800,7 +7839,7 @@
 	 * @generated
 	 */
 	public boolean validateReception_validateNotQuery(Reception reception,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return reception.validateNotQuery(diagnostics, context);
 	}
 
@@ -7810,7 +7849,7 @@
 	 * @generated
 	 */
 	public boolean validateSignal(Signal signal, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(signal,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -7867,7 +7906,7 @@
 	 */
 	public boolean validateProtocolStateMachine(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			protocolStateMachine, diagnostics, context);
 		if (result || diagnostics != null)
@@ -7971,7 +8010,7 @@
 	 */
 	public boolean validateProtocolStateMachine_validateProtocolTransitions(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return protocolStateMachine.validateProtocolTransitions(diagnostics,
 			context);
 	}
@@ -7984,7 +8023,7 @@
 	 */
 	public boolean validateProtocolStateMachine_validateEntryExitDo(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return protocolStateMachine.validateEntryExitDo(diagnostics, context);
 	}
 
@@ -7996,7 +8035,7 @@
 	 */
 	public boolean validateProtocolStateMachine_validateDeepOrShallowHistory(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return protocolStateMachine.validateDeepOrShallowHistory(diagnostics,
 			context);
 	}
@@ -8009,7 +8048,7 @@
 	 */
 	public boolean validateProtocolStateMachine_validatePortsConnected(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return protocolStateMachine
 			.validatePortsConnected(diagnostics, context);
 	}
@@ -8022,7 +8061,7 @@
 	 */
 	public boolean validateProtocolStateMachine_validateClassifierContext(
 			ProtocolStateMachine protocolStateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -8052,7 +8091,7 @@
 	 * @generated
 	 */
 	public boolean validateStateMachine(StateMachine stateMachine,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(stateMachine,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8143,7 +8182,8 @@
 	 * @generated
 	 */
 	public boolean validateStateMachine_validateClassifierContext(
-			StateMachine stateMachine, DiagnosticChain diagnostics, Map context) {
+			StateMachine stateMachine, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return stateMachine.validateClassifierContext(diagnostics, context);
 	}
 
@@ -8154,7 +8194,8 @@
 	 * @generated
 	 */
 	public boolean validateStateMachine_validateContextClassifier(
-			StateMachine stateMachine, DiagnosticChain diagnostics, Map context) {
+			StateMachine stateMachine, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return stateMachine.validateContextClassifier(diagnostics, context);
 	}
 
@@ -8165,7 +8206,8 @@
 	 * @generated
 	 */
 	public boolean validateStateMachine_validateConnectionPoints(
-			StateMachine stateMachine, DiagnosticChain diagnostics, Map context) {
+			StateMachine stateMachine, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return stateMachine.validateConnectionPoints(diagnostics, context);
 	}
 
@@ -8176,7 +8218,8 @@
 	 * @generated
 	 */
 	public boolean validateStateMachine_validateMethod(
-			StateMachine stateMachine, DiagnosticChain diagnostics, Map context) {
+			StateMachine stateMachine, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return stateMachine.validateMethod(diagnostics, context);
 	}
 
@@ -8186,7 +8229,7 @@
 	 * @generated
 	 */
 	public boolean validateRegion(Region region, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(region,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8242,7 +8285,7 @@
 	 * @generated
 	 */
 	public boolean validateRegion_validateInitialVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return region.validateInitialVertex(diagnostics, context);
 	}
 
@@ -8253,7 +8296,7 @@
 	 * @generated
 	 */
 	public boolean validateRegion_validateDeepHistoryVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return region.validateDeepHistoryVertex(diagnostics, context);
 	}
 
@@ -8264,7 +8307,7 @@
 	 * @generated
 	 */
 	public boolean validateRegion_validateShallowHistoryVertex(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return region.validateShallowHistoryVertex(diagnostics, context);
 	}
 
@@ -8275,7 +8318,7 @@
 	 * @generated
 	 */
 	public boolean validateRegion_validateOwned(Region region,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return region.validateOwned(diagnostics, context);
 	}
 
@@ -8285,7 +8328,7 @@
 	 * @generated
 	 */
 	public boolean validateVertex(Vertex vertex, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(vertex,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8320,7 +8363,7 @@
 	 * @generated
 	 */
 	public boolean validateTransition(Transition transition,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(transition,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8387,7 +8430,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateForkSegmentGuards(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateForkSegmentGuards(diagnostics, context);
 	}
 
@@ -8398,7 +8442,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateJoinSegmentGuards(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateJoinSegmentGuards(diagnostics, context);
 	}
 
@@ -8409,7 +8454,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateForkSegmentState(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateForkSegmentState(diagnostics, context);
 	}
 
@@ -8420,7 +8466,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateJoinSegmentState(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateJoinSegmentState(diagnostics, context);
 	}
 
@@ -8431,7 +8478,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateOutgoingPseudostates(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateOutgoingPseudostates(diagnostics, context);
 	}
 
@@ -8442,7 +8490,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateInitialTransition(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateInitialTransition(diagnostics, context);
 	}
 
@@ -8453,7 +8502,8 @@
 	 * @generated
 	 */
 	public boolean validateTransition_validateSignaturesCompatible(
-			Transition transition, DiagnosticChain diagnostics, Map context) {
+			Transition transition, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return transition.validateSignaturesCompatible(diagnostics, context);
 	}
 
@@ -8463,7 +8513,7 @@
 	 * @generated
 	 */
 	public boolean validateTrigger(Trigger trigger,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(trigger,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8498,7 +8548,7 @@
 	 * @generated
 	 */
 	public boolean validateEvent(Event event, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(event, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -8533,7 +8583,7 @@
 	 * @generated
 	 */
 	public boolean validatePort(Port port, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(port, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -8632,7 +8682,7 @@
 	 * @generated
 	 */
 	public boolean validatePort_validateRequiredInterfaces(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return port.validateRequiredInterfaces(diagnostics, context);
 	}
 
@@ -8643,7 +8693,7 @@
 	 * @generated
 	 */
 	public boolean validatePort_validatePortAggregation(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return port.validatePortAggregation(diagnostics, context);
 	}
 
@@ -8654,7 +8704,7 @@
 	 * @generated
 	 */
 	public boolean validatePort_validatePortDestroyed(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return port.validatePortDestroyed(diagnostics, context);
 	}
 
@@ -8665,7 +8715,7 @@
 	 * @generated
 	 */
 	public boolean validatePort_validateDefaultValue(Port port,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return port.validateDefaultValue(diagnostics, context);
 	}
 
@@ -8675,7 +8725,7 @@
 	 * @generated
 	 */
 	public boolean validateState(State state, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(state, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -8735,7 +8785,7 @@
 	 * @generated
 	 */
 	public boolean validateState_validateSubmachineStates(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return state.validateSubmachineStates(diagnostics, context);
 	}
 
@@ -8746,7 +8796,8 @@
 	 * @generated
 	 */
 	public boolean validateState_validateDestinationsOrSourcesOfTransitions(
-			State state, DiagnosticChain diagnostics, Map context) {
+			State state, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return state.validateDestinationsOrSourcesOfTransitions(diagnostics,
 			context);
 	}
@@ -8758,7 +8809,7 @@
 	 * @generated
 	 */
 	public boolean validateState_validateSubmachineOrRegions(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return state.validateSubmachineOrRegions(diagnostics, context);
 	}
 
@@ -8769,7 +8820,7 @@
 	 * @generated
 	 */
 	public boolean validateState_validateCompositeStates(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return state.validateCompositeStates(diagnostics, context);
 	}
 
@@ -8780,7 +8831,7 @@
 	 * @generated
 	 */
 	public boolean validateState_validateEntryOrExit(State state,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return state.validateEntryOrExit(diagnostics, context);
 	}
 
@@ -8791,7 +8842,7 @@
 	 */
 	public boolean validateConnectionPointReference(
 			ConnectionPointReference connectionPointReference,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			connectionPointReference, diagnostics, context);
 		if (result || diagnostics != null)
@@ -8835,7 +8886,7 @@
 	 */
 	public boolean validateConnectionPointReference_validateEntryPseudostates(
 			ConnectionPointReference connectionPointReference,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return connectionPointReference.validateEntryPseudostates(diagnostics,
 			context);
 	}
@@ -8848,7 +8899,7 @@
 	 */
 	public boolean validateConnectionPointReference_validateExitPseudostates(
 			ConnectionPointReference connectionPointReference,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return connectionPointReference.validateExitPseudostates(diagnostics,
 			context);
 	}
@@ -8859,7 +8910,7 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate(Pseudostate pseudostate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(pseudostate,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -8923,7 +8974,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateInitialVertex(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateInitialVertex(diagnostics, context);
 	}
 
@@ -8934,7 +8986,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateHistoryVertices(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateHistoryVertices(diagnostics, context);
 	}
 
@@ -8945,7 +8998,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateJoinVertex(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateJoinVertex(diagnostics, context);
 	}
 
@@ -8956,7 +9010,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateTransitionsIncoming(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateTransitionsIncoming(diagnostics, context);
 	}
 
@@ -8967,7 +9022,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateForkVertex(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateForkVertex(diagnostics, context);
 	}
 
@@ -8978,7 +9034,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateTransitionsOutgoing(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateTransitionsOutgoing(diagnostics, context);
 	}
 
@@ -8989,7 +9046,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateJunctionVertex(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateJunctionVertex(diagnostics, context);
 	}
 
@@ -9000,7 +9058,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateChoiceVertex(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateChoiceVertex(diagnostics, context);
 	}
 
@@ -9011,7 +9070,8 @@
 	 * @generated
 	 */
 	public boolean validatePseudostate_validateOutgoingFromInitial(
-			Pseudostate pseudostate, DiagnosticChain diagnostics, Map context) {
+			Pseudostate pseudostate, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return pseudostate.validateOutgoingFromInitial(diagnostics, context);
 	}
 
@@ -9022,7 +9082,7 @@
 	 */
 	public boolean validateProtocolConformance(
 			ProtocolConformance protocolConformance,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			protocolConformance, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9050,7 +9110,7 @@
 	 */
 	public boolean validateOperationTemplateParameter(
 			OperationTemplateParameter operationTemplateParameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			operationTemplateParameter, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9081,7 +9141,7 @@
 	 */
 	public boolean validateStructuralFeature(
 			StructuralFeature structuralFeature, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(structuralFeature,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9138,7 +9198,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociation(Association association,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(association,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9208,7 +9268,8 @@
 	 * @generated
 	 */
 	public boolean validateAssociation_validateSpecializedEndNumber(
-			Association association, DiagnosticChain diagnostics, Map context) {
+			Association association, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return association.validateSpecializedEndNumber(diagnostics, context);
 	}
 
@@ -9219,7 +9280,8 @@
 	 * @generated
 	 */
 	public boolean validateAssociation_validateSpecializedEndTypes(
-			Association association, DiagnosticChain diagnostics, Map context) {
+			Association association, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return association.validateSpecializedEndTypes(diagnostics, context);
 	}
 
@@ -9230,7 +9292,8 @@
 	 * @generated
 	 */
 	public boolean validateAssociation_validateBinaryAssociations(
-			Association association, DiagnosticChain diagnostics, Map context) {
+			Association association, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return association.validateBinaryAssociations(diagnostics, context);
 	}
 
@@ -9241,7 +9304,8 @@
 	 * @generated
 	 */
 	public boolean validateAssociation_validateAssociationEnds(
-			Association association, DiagnosticChain diagnostics, Map context) {
+			Association association, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return association.validateAssociationEnds(diagnostics, context);
 	}
 
@@ -9252,7 +9316,7 @@
 	 */
 	public boolean validateConnectableElementTemplateParameter(
 			ConnectableElementTemplateParameter connectableElementTemplateParameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			connectableElementTemplateParameter, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9282,7 +9346,7 @@
 	 * @generated
 	 */
 	public boolean validateCollaborationUse(CollaborationUse collaborationUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(collaborationUse,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9329,7 +9393,7 @@
 	 */
 	public boolean validateCollaborationUse_validateClientElements(
 			CollaborationUse collaborationUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return collaborationUse.validateClientElements(diagnostics, context);
 	}
 
@@ -9341,7 +9405,7 @@
 	 */
 	public boolean validateCollaborationUse_validateEveryRole(
 			CollaborationUse collaborationUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return collaborationUse.validateEveryRole(diagnostics, context);
 	}
 
@@ -9353,7 +9417,7 @@
 	 */
 	public boolean validateCollaborationUse_validateConnectors(
 			CollaborationUse collaborationUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return collaborationUse.validateConnectors(diagnostics, context);
 	}
 
@@ -9363,7 +9427,7 @@
 	 * @generated
 	 */
 	public boolean validateCollaboration(Collaboration collaboration,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(collaboration,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9427,7 +9491,7 @@
 	 */
 	public boolean validateStructuredClassifier(
 			StructuredClassifier structuredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			structuredClassifier, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9489,7 +9553,7 @@
 	 */
 	public boolean validateStructuredClassifier_validateMultiplicities(
 			StructuredClassifier structuredClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuredClassifier
 			.validateMultiplicities(diagnostics, context);
 	}
@@ -9500,7 +9564,7 @@
 	 * @generated
 	 */
 	public boolean validateConnector(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(connector,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9567,7 +9631,7 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateTypes(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return connector.validateTypes(diagnostics, context);
 	}
 
@@ -9578,7 +9642,7 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateCompatible(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return connector.validateCompatible(diagnostics, context);
 	}
 
@@ -9589,7 +9653,7 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateRoles(Connector connector,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return connector.validateRoles(diagnostics, context);
 	}
 
@@ -9600,7 +9664,8 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateBetweenInterfacesPorts(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connector.validateBetweenInterfacesPorts(diagnostics, context);
 	}
 
@@ -9611,7 +9676,8 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateBetweenInterfacePortImplements(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connector.validateBetweenInterfacePortImplements(diagnostics,
 			context);
 	}
@@ -9623,7 +9689,8 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateBetweenInterfacePortSignature(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connector.validateBetweenInterfacePortSignature(diagnostics,
 			context);
 	}
@@ -9635,7 +9702,8 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateUnionSignatureCompatible(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connector.validateUnionSignatureCompatible(diagnostics, context);
 	}
 
@@ -9646,7 +9714,8 @@
 	 * @generated
 	 */
 	public boolean validateConnector_validateAssemblyConnector(
-			Connector connector, DiagnosticChain diagnostics, Map context) {
+			Connector connector, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return connector.validateAssemblyConnector(diagnostics, context);
 	}
 
@@ -9657,7 +9726,7 @@
 	 */
 	public boolean validateRedefinableTemplateSignature(
 			RedefinableTemplateSignature redefinableTemplateSignature,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			redefinableTemplateSignature, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9707,7 +9776,7 @@
 	 */
 	public boolean validateRedefinableTemplateSignature_validateInheritedParameters(
 			RedefinableTemplateSignature redefinableTemplateSignature,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return redefinableTemplateSignature.validateInheritedParameters(
 			diagnostics, context);
 	}
@@ -9719,7 +9788,7 @@
 	 */
 	public boolean validateClassifierTemplateParameter(
 			ClassifierTemplateParameter classifierTemplateParameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			classifierTemplateParameter, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9754,7 +9823,7 @@
 	 */
 	public boolean validateClassifierTemplateParameter_validateHasConstrainingClassifier(
 			ClassifierTemplateParameter classifierTemplateParameter,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return classifierTemplateParameter.validateHasConstrainingClassifier(
 			diagnostics, context);
 	}
@@ -9766,7 +9835,7 @@
 	 */
 	public boolean validateInterfaceRealization(
 			InterfaceRealization interfaceRealization,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			interfaceRealization, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9803,7 +9872,7 @@
 	 */
 	public boolean validateEncapsulatedClassifier(
 			EncapsulatedClassifier encapsulatedClassifier,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			encapsulatedClassifier, diagnostics, context);
 		if (result || diagnostics != null)
@@ -9863,7 +9932,7 @@
 	 * @generated
 	 */
 	public boolean validateExtension(Extension extension,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(extension,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -9939,7 +10008,7 @@
 	 * @generated
 	 */
 	public boolean validateExtension_validateNonOwnedEnd(Extension extension,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return extension.validateNonOwnedEnd(diagnostics, context);
 	}
 
@@ -9950,7 +10019,7 @@
 	 * @generated
 	 */
 	public boolean validateExtension_validateIsBinary(Extension extension,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return extension.validateIsBinary(diagnostics, context);
 	}
 
@@ -9960,7 +10029,7 @@
 	 * @generated
 	 */
 	public boolean validateExtensionEnd(ExtensionEnd extensionEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(extensionEnd,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10054,7 +10123,8 @@
 	 * @generated
 	 */
 	public boolean validateExtensionEnd_validateMultiplicity(
-			ExtensionEnd extensionEnd, DiagnosticChain diagnostics, Map context) {
+			ExtensionEnd extensionEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return extensionEnd.validateMultiplicity(diagnostics, context);
 	}
 
@@ -10065,7 +10135,8 @@
 	 * @generated
 	 */
 	public boolean validateExtensionEnd_validateAggregation(
-			ExtensionEnd extensionEnd, DiagnosticChain diagnostics, Map context) {
+			ExtensionEnd extensionEnd, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return extensionEnd.validateAggregation(diagnostics, context);
 	}
 
@@ -10075,7 +10146,7 @@
 	 * @generated
 	 */
 	public boolean validateImage(Image image, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(image, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -10101,7 +10172,7 @@
 	 * @generated
 	 */
 	public boolean validateStringExpression(StringExpression stringExpression,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(stringExpression,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10145,7 +10216,7 @@
 	 */
 	public boolean validateStringExpression_validateOperands(
 			StringExpression stringExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return stringExpression.validateOperands(diagnostics, context);
 	}
 
@@ -10157,7 +10228,7 @@
 	 */
 	public boolean validateStringExpression_validateSubexpressions(
 			StringExpression stringExpression, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return stringExpression.validateSubexpressions(diagnostics, context);
 	}
 
@@ -10167,7 +10238,7 @@
 	 * @generated
 	 */
 	public boolean validateExpression(Expression expression,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(expression,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10203,7 +10274,7 @@
 	 * @generated
 	 */
 	public boolean validateLiteralInteger(LiteralInteger literalInteger,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(literalInteger,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10239,7 +10310,7 @@
 	 * @generated
 	 */
 	public boolean validateLiteralString(LiteralString literalString,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(literalString,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10275,7 +10346,7 @@
 	 * @generated
 	 */
 	public boolean validateLiteralBoolean(LiteralBoolean literalBoolean,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(literalBoolean,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10311,7 +10382,7 @@
 	 * @generated
 	 */
 	public boolean validateLiteralNull(LiteralNull literalNull,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(literalNull,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10347,7 +10418,7 @@
 	 * @generated
 	 */
 	public boolean validateSlot(Slot slot, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(slot, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -10374,7 +10445,7 @@
 	 */
 	public boolean validateInstanceSpecification(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			instanceSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -10424,7 +10495,7 @@
 	 */
 	public boolean validateInstanceSpecification_validateDefiningFeature(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return instanceSpecification.validateDefiningFeature(diagnostics,
 			context);
 	}
@@ -10437,7 +10508,7 @@
 	 */
 	public boolean validateInstanceSpecification_validateStructuralFeature(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return instanceSpecification.validateStructuralFeature(diagnostics,
 			context);
 	}
@@ -10450,7 +10521,7 @@
 	 */
 	public boolean validateInstanceSpecification_validateDeploymentTarget(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return instanceSpecification.validateDeploymentTarget(diagnostics,
 			context);
 	}
@@ -10463,7 +10534,7 @@
 	 */
 	public boolean validateInstanceSpecification_validateDeploymentArtifact(
 			InstanceSpecification instanceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return instanceSpecification.validateDeploymentArtifact(diagnostics,
 			context);
 	}
@@ -10474,7 +10545,7 @@
 	 * @generated
 	 */
 	public boolean validateEnumeration(Enumeration enumeration,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(enumeration,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10532,7 +10603,7 @@
 	 */
 	public boolean validateEnumerationLiteral(
 			EnumerationLiteral enumerationLiteral, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(enumerationLiteral,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10580,7 +10651,7 @@
 	 * @generated
 	 */
 	public boolean validatePrimitiveType(PrimitiveType primitiveType,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(primitiveType,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10637,7 +10708,7 @@
 	 * @generated
 	 */
 	public boolean validateInstanceValue(InstanceValue instanceValue,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(instanceValue,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10674,7 +10745,7 @@
 	 */
 	public boolean validateLiteralUnlimitedNatural(
 			LiteralUnlimitedNatural literalUnlimitedNatural,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			literalUnlimitedNatural, diagnostics, context);
 		if (result || diagnostics != null)
@@ -10710,7 +10781,7 @@
 	 * @generated
 	 */
 	public boolean validateOpaqueBehavior(OpaqueBehavior opaqueBehavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(opaqueBehavior,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10788,7 +10859,7 @@
 	 * @generated
 	 */
 	public boolean validateFunctionBehavior(FunctionBehavior functionBehavior,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(functionBehavior,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -10874,7 +10945,7 @@
 	 */
 	public boolean validateFunctionBehavior_validateOneOutputParameter(
 			FunctionBehavior functionBehavior, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return functionBehavior
 			.validateOneOutputParameter(diagnostics, context);
 	}
@@ -10887,7 +10958,7 @@
 	 */
 	public boolean validateFunctionBehavior_validateTypesOfParameters(
 			FunctionBehavior functionBehavior, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return functionBehavior.validateTypesOfParameters(diagnostics, context);
 	}
 
@@ -10897,7 +10968,7 @@
 	 * @generated
 	 */
 	public boolean validateActor(Actor actor, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(actor, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -10963,7 +11034,7 @@
 	 * @generated
 	 */
 	public boolean validateActor_validateAssociations(Actor actor,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return actor.validateAssociations(diagnostics, context);
 	}
 
@@ -10974,7 +11045,7 @@
 	 * @generated
 	 */
 	public boolean validateActor_validateMustHaveName(Actor actor,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return actor.validateMustHaveName(diagnostics, context);
 	}
 
@@ -10984,7 +11055,7 @@
 	 * @generated
 	 */
 	public boolean validateUsage(Usage usage, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(usage, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -11019,7 +11090,7 @@
 	 * @generated
 	 */
 	public boolean validateMessage(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(message,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11076,7 +11147,8 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateSendingReceivingMessageEvent(
-			Message message, DiagnosticChain diagnostics, Map context) {
+			Message message, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return message.validateSendingReceivingMessageEvent(diagnostics,
 			context);
 	}
@@ -11088,7 +11160,7 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateSignatureReferTo(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return message.validateSignatureReferTo(diagnostics, context);
 	}
 
@@ -11099,7 +11171,8 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateSignatureIsOperation(
-			Message message, DiagnosticChain diagnostics, Map context) {
+			Message message, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return message.validateSignatureIsOperation(diagnostics, context);
 	}
 
@@ -11110,7 +11183,7 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateSignatureIsSignal(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return message.validateSignatureIsSignal(diagnostics, context);
 	}
 
@@ -11121,7 +11194,7 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateArguments(Message message,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return message.validateArguments(diagnostics, context);
 	}
 
@@ -11132,7 +11205,8 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateCannotCrossBoundaries(
-			Message message, DiagnosticChain diagnostics, Map context) {
+			Message message, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return message.validateCannotCrossBoundaries(diagnostics, context);
 	}
 
@@ -11143,7 +11217,8 @@
 	 * @generated
 	 */
 	public boolean validateMessage_validateOccurrenceSpecifications(
-			Message message, DiagnosticChain diagnostics, Map context) {
+			Message message, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return message.validateOccurrenceSpecifications(diagnostics, context);
 	}
 
@@ -11153,7 +11228,7 @@
 	 * @generated
 	 */
 	public boolean validateMessageEnd(MessageEnd messageEnd,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(messageEnd,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11189,7 +11264,7 @@
 	 * @generated
 	 */
 	public boolean validateInteraction(Interaction interaction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(interaction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11268,7 +11343,7 @@
 	 */
 	public boolean validateInteractionFragment(
 			InteractionFragment interactionFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			interactionFragment, diagnostics, context);
 		if (result || diagnostics != null)
@@ -11304,7 +11379,7 @@
 	 * @generated
 	 */
 	public boolean validateLifeline(Lifeline lifeline,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(lifeline,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11350,7 +11425,8 @@
 	 * @generated
 	 */
 	public boolean validateLifeline_validateInteractionUsesShareLifeline(
-			Lifeline lifeline, DiagnosticChain diagnostics, Map context) {
+			Lifeline lifeline, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return lifeline.validateInteractionUsesShareLifeline(diagnostics,
 			context);
 	}
@@ -11362,7 +11438,8 @@
 	 * @generated
 	 */
 	public boolean validateLifeline_validateSelectorSpecified(
-			Lifeline lifeline, DiagnosticChain diagnostics, Map context) {
+			Lifeline lifeline, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return lifeline.validateSelectorSpecified(diagnostics, context);
 	}
 
@@ -11373,7 +11450,7 @@
 	 * @generated
 	 */
 	public boolean validateLifeline_validateSameClassifier(Lifeline lifeline,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return lifeline.validateSameClassifier(diagnostics, context);
 	}
 
@@ -11384,7 +11461,7 @@
 	 */
 	public boolean validatePartDecomposition(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(partDecomposition,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11443,7 +11520,7 @@
 	 */
 	public boolean validatePartDecomposition_validatePartsOfInternalStructures(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return partDecomposition.validatePartsOfInternalStructures(diagnostics,
 			context);
 	}
@@ -11456,7 +11533,7 @@
 	 */
 	public boolean validatePartDecomposition_validateAssume(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return partDecomposition.validateAssume(diagnostics, context);
 	}
 
@@ -11468,7 +11545,7 @@
 	 */
 	public boolean validatePartDecomposition_validateCommutativityOfDecomposition(
 			PartDecomposition partDecomposition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return partDecomposition.validateCommutativityOfDecomposition(
 			diagnostics, context);
 	}
@@ -11479,7 +11556,7 @@
 	 * @generated
 	 */
 	public boolean validateInteractionUse(InteractionUse interactionUse,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(interactionUse,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11529,7 +11606,7 @@
 	 */
 	public boolean validateInteractionUse_validateGatesMatch(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionUse.validateGatesMatch(diagnostics, context);
 	}
 
@@ -11541,7 +11618,7 @@
 	 */
 	public boolean validateInteractionUse_validateAllLifelines(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionUse.validateAllLifelines(diagnostics, context);
 	}
 
@@ -11553,7 +11630,7 @@
 	 */
 	public boolean validateInteractionUse_validateArgumentsCorrespondToParameters(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionUse.validateArgumentsCorrespondToParameters(
 			diagnostics, context);
 	}
@@ -11566,7 +11643,7 @@
 	 */
 	public boolean validateInteractionUse_validateArgumentsAreConstants(
 			InteractionUse interactionUse, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionUse.validateArgumentsAreConstants(diagnostics,
 			context);
 	}
@@ -11577,7 +11654,7 @@
 	 * @generated
 	 */
 	public boolean validateGate(Gate gate, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(gate, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -11619,7 +11696,7 @@
 	 * @generated
 	 */
 	public boolean validateGate_validateMessagesActualGate(Gate gate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return gate.validateMessagesActualGate(diagnostics, context);
 	}
 
@@ -11630,7 +11707,7 @@
 	 * @generated
 	 */
 	public boolean validateGate_validateMessagesCombinedFragment(Gate gate,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return gate.validateMessagesCombinedFragment(diagnostics, context);
 	}
 
@@ -11640,7 +11717,7 @@
 	 * @generated
 	 */
 	public boolean validateAction(Action action, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(action,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11687,7 +11764,7 @@
 	 * @generated
 	 */
 	public boolean validateExecutableNode(ExecutableNode executableNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(executableNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11735,7 +11812,7 @@
 	 * @generated
 	 */
 	public boolean validateActivityNode(ActivityNode activityNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activityNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11784,7 +11861,8 @@
 	 * @generated
 	 */
 	public boolean validateActivityNode_validateOwned(
-			ActivityNode activityNode, DiagnosticChain diagnostics, Map context) {
+			ActivityNode activityNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activityNode.validateOwned(diagnostics, context);
 	}
 
@@ -11795,7 +11873,8 @@
 	 * @generated
 	 */
 	public boolean validateActivityNode_validateOwnedStructuredNode(
-			ActivityNode activityNode, DiagnosticChain diagnostics, Map context) {
+			ActivityNode activityNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activityNode.validateOwnedStructuredNode(diagnostics, context);
 	}
 
@@ -11805,7 +11884,7 @@
 	 * @generated
 	 */
 	public boolean validateActivityEdge(ActivityEdge activityEdge,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activityEdge,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11857,7 +11936,8 @@
 	 * @generated
 	 */
 	public boolean validateActivityEdge_validateSourceAndTarget(
-			ActivityEdge activityEdge, DiagnosticChain diagnostics, Map context) {
+			ActivityEdge activityEdge, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activityEdge.validateSourceAndTarget(diagnostics, context);
 	}
 
@@ -11868,7 +11948,8 @@
 	 * @generated
 	 */
 	public boolean validateActivityEdge_validateOwned(
-			ActivityEdge activityEdge, DiagnosticChain diagnostics, Map context) {
+			ActivityEdge activityEdge, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activityEdge.validateOwned(diagnostics, context);
 	}
 
@@ -11879,7 +11960,8 @@
 	 * @generated
 	 */
 	public boolean validateActivityEdge_validateStructuredNode(
-			ActivityEdge activityEdge, DiagnosticChain diagnostics, Map context) {
+			ActivityEdge activityEdge, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activityEdge.validateStructuredNode(diagnostics, context);
 	}
 
@@ -11889,7 +11971,7 @@
 	 * @generated
 	 */
 	public boolean validateActivity(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activity,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -11977,7 +12059,7 @@
 	 * @generated
 	 */
 	public boolean validateActivity_validateNoSupergroups(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activity.validateNoSupergroups(diagnostics, context);
 	}
 
@@ -11988,7 +12070,8 @@
 	 * @generated
 	 */
 	public boolean validateActivity_validateActivityParameterNode(
-			Activity activity, DiagnosticChain diagnostics, Map context) {
+			Activity activity, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return activity.validateActivityParameterNode(diagnostics, context);
 	}
 
@@ -11999,7 +12082,7 @@
 	 * @generated
 	 */
 	public boolean validateActivity_validateAutonomous(Activity activity,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activity.validateAutonomous(diagnostics, context);
 	}
 
@@ -12010,7 +12093,7 @@
 	 */
 	public boolean validateActivityPartition(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activityPartition,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12069,7 +12152,7 @@
 	 */
 	public boolean validateActivityPartition_validateDimensionNotContained(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityPartition.validateDimensionNotContained(diagnostics,
 			context);
 	}
@@ -12082,7 +12165,7 @@
 	 */
 	public boolean validateActivityPartition_validateRepresentsPart(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityPartition.validateRepresentsPart(diagnostics, context);
 	}
 
@@ -12094,7 +12177,7 @@
 	 */
 	public boolean validateActivityPartition_validateRepresentsClassifier(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityPartition.validateRepresentsClassifier(diagnostics,
 			context);
 	}
@@ -12107,7 +12190,7 @@
 	 */
 	public boolean validateActivityPartition_validateRepresentsPartAndIsContained(
 			ActivityPartition activityPartition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityPartition.validateRepresentsPartAndIsContained(
 			diagnostics, context);
 	}
@@ -12118,7 +12201,7 @@
 	 * @generated
 	 */
 	public boolean validateActivityGroup(ActivityGroup activityGroup,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activityGroup,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12156,7 +12239,7 @@
 	 */
 	public boolean validateActivityGroup_validateNodesAndEdges(
 			ActivityGroup activityGroup, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityGroup.validateNodesAndEdges(diagnostics, context);
 	}
 
@@ -12168,7 +12251,7 @@
 	 */
 	public boolean validateActivityGroup_validateNotContained(
 			ActivityGroup activityGroup, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityGroup.validateNotContained(diagnostics, context);
 	}
 
@@ -12180,7 +12263,7 @@
 	 */
 	public boolean validateActivityGroup_validateGroupOwned(
 			ActivityGroup activityGroup, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return activityGroup.validateGroupOwned(diagnostics, context);
 	}
 
@@ -12191,7 +12274,7 @@
 	 */
 	public boolean validateStructuredActivityNode(
 			StructuredActivityNode structuredActivityNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			structuredActivityNode, diagnostics, context);
 		if (result || diagnostics != null)
@@ -12256,7 +12339,7 @@
 	 */
 	public boolean validateStructuredActivityNode_validateEdges(
 			StructuredActivityNode structuredActivityNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuredActivityNode.validateEdges(diagnostics, context);
 	}
 
@@ -12266,7 +12349,7 @@
 	 * @generated
 	 */
 	public boolean validateVariable(Variable variable,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(variable,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12321,7 +12404,7 @@
 	 * @generated
 	 */
 	public boolean validateVariable_validateOwned(Variable variable,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return variable.validateOwned(diagnostics, context);
 	}
 
@@ -12332,7 +12415,7 @@
 	 */
 	public boolean validateInterruptibleActivityRegion(
 			InterruptibleActivityRegion interruptibleActivityRegion,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			interruptibleActivityRegion, diagnostics, context);
 		if (result || diagnostics != null)
@@ -12373,7 +12456,7 @@
 	 */
 	public boolean validateInterruptibleActivityRegion_validateInterruptingEdges(
 			InterruptibleActivityRegion interruptibleActivityRegion,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interruptibleActivityRegion.validateInterruptingEdges(
 			diagnostics, context);
 	}
@@ -12384,7 +12467,7 @@
 	 * @generated
 	 */
 	public boolean validateExceptionHandler(ExceptionHandler exceptionHandler,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(exceptionHandler,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12425,7 +12508,7 @@
 	 */
 	public boolean validateExceptionHandler_validateExceptionBody(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return exceptionHandler.validateExceptionBody(diagnostics, context);
 	}
 
@@ -12437,7 +12520,7 @@
 	 */
 	public boolean validateExceptionHandler_validateResultPins(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return exceptionHandler.validateResultPins(diagnostics, context);
 	}
 
@@ -12449,7 +12532,7 @@
 	 */
 	public boolean validateExceptionHandler_validateOneInput(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return exceptionHandler.validateOneInput(diagnostics, context);
 	}
 
@@ -12461,7 +12544,7 @@
 	 */
 	public boolean validateExceptionHandler_validateEdgeSourceTarget(
 			ExceptionHandler exceptionHandler, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return exceptionHandler.validateEdgeSourceTarget(diagnostics, context);
 	}
 
@@ -12471,7 +12554,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectNode(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(objectNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12532,7 +12615,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectNode_validateObjectFlowEdges(
-			ObjectNode objectNode, DiagnosticChain diagnostics, Map context) {
+			ObjectNode objectNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectNode.validateObjectFlowEdges(diagnostics, context);
 	}
 
@@ -12543,7 +12627,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectNode_validateNotUnique(ObjectNode objectNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return objectNode.validateNotUnique(diagnostics, context);
 	}
 
@@ -12554,7 +12638,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectNode_validateSelectionBehavior(
-			ObjectNode objectNode, DiagnosticChain diagnostics, Map context) {
+			ObjectNode objectNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectNode.validateSelectionBehavior(diagnostics, context);
 	}
 
@@ -12565,7 +12650,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectNode_validateInputOutputParameter(
-			ObjectNode objectNode, DiagnosticChain diagnostics, Map context) {
+			ObjectNode objectNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectNode.validateInputOutputParameter(diagnostics, context);
 	}
 
@@ -12575,7 +12661,7 @@
 	 * @generated
 	 */
 	public boolean validateOutputPin(OutputPin outputPin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(outputPin,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12657,7 +12743,8 @@
 	 * @generated
 	 */
 	public boolean validateOutputPin_validateIncomingEdgesStructuredOnly(
-			OutputPin outputPin, DiagnosticChain diagnostics, Map context) {
+			OutputPin outputPin, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return outputPin.validateIncomingEdgesStructuredOnly(diagnostics,
 			context);
 	}
@@ -12667,7 +12754,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public boolean validatePin(Pin pin, DiagnosticChain diagnostics, Map context) {
+	public boolean validatePin(Pin pin, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(pin, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -12743,7 +12831,7 @@
 	 * @generated
 	 */
 	public boolean validatePin_validateControlPins(Pin pin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return pin.validateControlPins(diagnostics, context);
 	}
 
@@ -12753,7 +12841,7 @@
 	 * @generated
 	 */
 	public boolean validateInputPin(InputPin inputPin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(inputPin,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12835,7 +12923,8 @@
 	 * @generated
 	 */
 	public boolean validateInputPin_validateOutgoingEdgesStructuredOnly(
-			InputPin inputPin, DiagnosticChain diagnostics, Map context) {
+			InputPin inputPin, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return inputPin.validateOutgoingEdgesStructuredOnly(diagnostics,
 			context);
 	}
@@ -12846,7 +12935,7 @@
 	 * @generated
 	 */
 	public boolean validateGeneralOrdering(GeneralOrdering generalOrdering,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(generalOrdering,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12883,7 +12972,7 @@
 	 */
 	public boolean validateOccurrenceSpecification(
 			OccurrenceSpecification occurrenceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			occurrenceSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -12920,7 +13009,7 @@
 	 */
 	public boolean validateInteractionOperand(
 			InteractionOperand interactionOperand, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(interactionOperand,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -12967,7 +13056,7 @@
 	 */
 	public boolean validateInteractionOperand_validateGuardDirectlyPrior(
 			InteractionOperand interactionOperand, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionOperand.validateGuardDirectlyPrior(diagnostics,
 			context);
 	}
@@ -12980,7 +13069,7 @@
 	 */
 	public boolean validateInteractionOperand_validateGuardContainReferences(
 			InteractionOperand interactionOperand, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return interactionOperand.validateGuardContainReferences(diagnostics,
 			context);
 	}
@@ -12992,7 +13081,7 @@
 	 */
 	public boolean validateInteractionConstraint(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			interactionConstraint, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13063,7 +13152,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateDynamicVariables(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateDynamicVariables(diagnostics,
 			context);
 	}
@@ -13076,7 +13165,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateGlobalData(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateGlobalData(diagnostics, context);
 	}
 
@@ -13088,7 +13177,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateMinintMaxint(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateMinintMaxint(diagnostics, context);
 	}
 
@@ -13100,7 +13189,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateMinintNonNegative(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateMinintNonNegative(diagnostics,
 			context);
 	}
@@ -13113,7 +13202,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateMaxintPositive(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateMaxintPositive(diagnostics,
 			context);
 	}
@@ -13126,7 +13215,7 @@
 	 */
 	public boolean validateInteractionConstraint_validateMaxintGreaterEqualMinint(
 			InteractionConstraint interactionConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return interactionConstraint.validateMaxintGreaterEqualMinint(
 			diagnostics, context);
 	}
@@ -13138,7 +13227,7 @@
 	 */
 	public boolean validateExecutionSpecification(
 			ExecutionSpecification executionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			executionSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13179,7 +13268,7 @@
 	 */
 	public boolean validateExecutionSpecification_validateSameLifeline(
 			ExecutionSpecification executionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return executionSpecification
 			.validateSameLifeline(diagnostics, context);
 	}
@@ -13191,7 +13280,7 @@
 	 */
 	public boolean validateExecutionOccurrenceSpecification(
 			ExecutionOccurrenceSpecification executionOccurrenceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			executionOccurrenceSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13227,7 +13316,7 @@
 	 * @generated
 	 */
 	public boolean validateExecutionEvent(ExecutionEvent executionEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(executionEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13263,7 +13352,7 @@
 	 * @generated
 	 */
 	public boolean validateStateInvariant(StateInvariant stateInvariant,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(stateInvariant,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13300,7 +13389,7 @@
 	 */
 	public boolean validateActionExecutionSpecification(
 			ActionExecutionSpecification actionExecutionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			actionExecutionSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13344,7 +13433,7 @@
 	 */
 	public boolean validateActionExecutionSpecification_validateActionReferenced(
 			ActionExecutionSpecification actionExecutionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return actionExecutionSpecification.validateActionReferenced(
 			diagnostics, context);
 	}
@@ -13356,7 +13445,7 @@
 	 */
 	public boolean validateBehaviorExecutionSpecification(
 			BehaviorExecutionSpecification behaviorExecutionSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			behaviorExecutionSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13395,7 +13484,7 @@
 	 * @generated
 	 */
 	public boolean validateCreationEvent(CreationEvent creationEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(creationEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13436,7 +13525,7 @@
 	 */
 	public boolean validateCreationEvent_validateNoOccurrenceAbove(
 			CreationEvent creationEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return creationEvent.validateNoOccurrenceAbove(diagnostics, context);
 	}
 
@@ -13446,7 +13535,7 @@
 	 * @generated
 	 */
 	public boolean validateDestructionEvent(DestructionEvent destructionEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(destructionEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13487,7 +13576,7 @@
 	 */
 	public boolean validateDestructionEvent_validateNoOccurrenceSpecificationsBelow(
 			DestructionEvent destructionEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return destructionEvent.validateNoOccurrenceSpecificationsBelow(
 			diagnostics, context);
 	}
@@ -13499,7 +13588,7 @@
 	 */
 	public boolean validateSendOperationEvent(
 			SendOperationEvent sendOperationEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(sendOperationEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13535,7 +13624,7 @@
 	 * @generated
 	 */
 	public boolean validateMessageEvent(MessageEvent messageEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(messageEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13571,7 +13660,7 @@
 	 * @generated
 	 */
 	public boolean validateSendSignalEvent(SendSignalEvent sendSignalEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(sendSignalEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13608,7 +13697,7 @@
 	 */
 	public boolean validateMessageOccurrenceSpecification(
 			MessageOccurrenceSpecification messageOccurrenceSpecification,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			messageOccurrenceSpecification, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13645,7 +13734,7 @@
 	 */
 	public boolean validateReceiveOperationEvent(
 			ReceiveOperationEvent receiveOperationEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			receiveOperationEvent, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13682,7 +13771,7 @@
 	 */
 	public boolean validateReceiveSignalEvent(
 			ReceiveSignalEvent receiveSignalEvent, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(receiveSignalEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13718,7 +13807,7 @@
 	 * @generated
 	 */
 	public boolean validateCombinedFragment(CombinedFragment combinedFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(combinedFragment,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13768,7 +13857,7 @@
 	 */
 	public boolean validateCombinedFragment_validateOptLoopBreakNeg(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return combinedFragment.validateOptLoopBreakNeg(diagnostics, context);
 	}
 
@@ -13780,7 +13869,7 @@
 	 */
 	public boolean validateCombinedFragment_validateMinintAndMaxint(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return combinedFragment.validateMinintAndMaxint(diagnostics, context);
 	}
 
@@ -13792,7 +13881,7 @@
 	 */
 	public boolean validateCombinedFragment_validateBreak(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return combinedFragment.validateBreak(diagnostics, context);
 	}
 
@@ -13804,7 +13893,7 @@
 	 */
 	public boolean validateCombinedFragment_validateConsiderAndIgnore(
 			CombinedFragment combinedFragment, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return combinedFragment.validateConsiderAndIgnore(diagnostics, context);
 	}
 
@@ -13814,7 +13903,7 @@
 	 * @generated
 	 */
 	public boolean validateContinuation(Continuation continuation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(continuation,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -13860,7 +13949,8 @@
 	 * @generated
 	 */
 	public boolean validateContinuation_validateSameName(
-			Continuation continuation, DiagnosticChain diagnostics, Map context) {
+			Continuation continuation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return continuation.validateSameName(diagnostics, context);
 	}
 
@@ -13871,7 +13961,8 @@
 	 * @generated
 	 */
 	public boolean validateContinuation_validateGlobal(
-			Continuation continuation, DiagnosticChain diagnostics, Map context) {
+			Continuation continuation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return continuation.validateGlobal(diagnostics, context);
 	}
 
@@ -13882,7 +13973,8 @@
 	 * @generated
 	 */
 	public boolean validateContinuation_validateFirstOrLastInteractionFragment(
-			Continuation continuation, DiagnosticChain diagnostics, Map context) {
+			Continuation continuation, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return continuation.validateFirstOrLastInteractionFragment(diagnostics,
 			context);
 	}
@@ -13894,7 +13986,7 @@
 	 */
 	public boolean validateConsiderIgnoreFragment(
 			ConsiderIgnoreFragment considerIgnoreFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			considerIgnoreFragment, diagnostics, context);
 		if (result || diagnostics != null)
@@ -13950,7 +14042,7 @@
 	 */
 	public boolean validateConsiderIgnoreFragment_validateConsiderOrIgnore(
 			ConsiderIgnoreFragment considerIgnoreFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return considerIgnoreFragment.validateConsiderOrIgnore(diagnostics,
 			context);
 	}
@@ -13963,7 +14055,7 @@
 	 */
 	public boolean validateConsiderIgnoreFragment_validateType(
 			ConsiderIgnoreFragment considerIgnoreFragment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return considerIgnoreFragment.validateType(diagnostics, context);
 	}
 
@@ -13973,7 +14065,7 @@
 	 * @generated
 	 */
 	public boolean validateCallEvent(CallEvent callEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(callEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14009,7 +14101,7 @@
 	 * @generated
 	 */
 	public boolean validateChangeEvent(ChangeEvent changeEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(changeEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14045,7 +14137,7 @@
 	 * @generated
 	 */
 	public boolean validateSignalEvent(SignalEvent signalEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(signalEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14081,7 +14173,7 @@
 	 * @generated
 	 */
 	public boolean validateAnyReceiveEvent(AnyReceiveEvent anyReceiveEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(anyReceiveEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14118,7 +14210,7 @@
 	 */
 	public boolean validateCreateObjectAction(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(createObjectAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14180,7 +14272,7 @@
 	 */
 	public boolean validateCreateObjectAction_validateClassifierNotAbstract(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return createObjectAction.validateClassifierNotAbstract(diagnostics,
 			context);
 	}
@@ -14193,7 +14285,7 @@
 	 */
 	public boolean validateCreateObjectAction_validateClassifierNotAssociationClass(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return createObjectAction.validateClassifierNotAssociationClass(
 			diagnostics, context);
 	}
@@ -14206,7 +14298,7 @@
 	 */
 	public boolean validateCreateObjectAction_validateSameType(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return createObjectAction.validateSameType(diagnostics, context);
 	}
 
@@ -14218,7 +14310,7 @@
 	 */
 	public boolean validateCreateObjectAction_validateMultiplicity(
 			CreateObjectAction createObjectAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return createObjectAction.validateMultiplicity(diagnostics, context);
 	}
 
@@ -14229,7 +14321,7 @@
 	 */
 	public boolean validateDestroyObjectAction(
 			DestroyObjectAction destroyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			destroyObjectAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14285,7 +14377,7 @@
 	 */
 	public boolean validateDestroyObjectAction_validateMultiplicity(
 			DestroyObjectAction destroyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return destroyObjectAction.validateMultiplicity(diagnostics, context);
 	}
 
@@ -14297,7 +14389,7 @@
 	 */
 	public boolean validateDestroyObjectAction_validateNoType(
 			DestroyObjectAction destroyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return destroyObjectAction.validateNoType(diagnostics, context);
 	}
 
@@ -14308,7 +14400,7 @@
 	 */
 	public boolean validateTestIdentityAction(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(testIdentityAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14367,7 +14459,7 @@
 	 */
 	public boolean validateTestIdentityAction_validateNoType(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return testIdentityAction.validateNoType(diagnostics, context);
 	}
 
@@ -14379,7 +14471,7 @@
 	 */
 	public boolean validateTestIdentityAction_validateMultiplicity(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return testIdentityAction.validateMultiplicity(diagnostics, context);
 	}
 
@@ -14391,7 +14483,7 @@
 	 */
 	public boolean validateTestIdentityAction_validateResultIsBoolean(
 			TestIdentityAction testIdentityAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return testIdentityAction.validateResultIsBoolean(diagnostics, context);
 	}
 
@@ -14401,7 +14493,7 @@
 	 * @generated
 	 */
 	public boolean validateReadSelfAction(ReadSelfAction readSelfAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(readSelfAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -14463,7 +14555,7 @@
 	 */
 	public boolean validateReadSelfAction_validateContained(
 			ReadSelfAction readSelfAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readSelfAction.validateContained(diagnostics, context);
 	}
 
@@ -14475,7 +14567,7 @@
 	 */
 	public boolean validateReadSelfAction_validateNotStatic(
 			ReadSelfAction readSelfAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readSelfAction.validateNotStatic(diagnostics, context);
 	}
 
@@ -14487,7 +14579,7 @@
 	 */
 	public boolean validateReadSelfAction_validateType(
 			ReadSelfAction readSelfAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readSelfAction.validateType(diagnostics, context);
 	}
 
@@ -14499,7 +14591,7 @@
 	 */
 	public boolean validateReadSelfAction_validateMultiplicity(
 			ReadSelfAction readSelfAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readSelfAction.validateMultiplicity(diagnostics, context);
 	}
 
@@ -14510,7 +14602,7 @@
 	 */
 	public boolean validateStructuralFeatureAction(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			structuralFeatureAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14575,7 +14667,7 @@
 	 */
 	public boolean validateStructuralFeatureAction_validateNotStatic(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuralFeatureAction.validateNotStatic(diagnostics, context);
 	}
 
@@ -14587,7 +14679,7 @@
 	 */
 	public boolean validateStructuralFeatureAction_validateSameType(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuralFeatureAction.validateSameType(diagnostics, context);
 	}
 
@@ -14599,7 +14691,7 @@
 	 */
 	public boolean validateStructuralFeatureAction_validateMultiplicity(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuralFeatureAction.validateMultiplicity(diagnostics,
 			context);
 	}
@@ -14612,7 +14704,7 @@
 	 */
 	public boolean validateStructuralFeatureAction_validateVisibility(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuralFeatureAction.validateVisibility(diagnostics, context);
 	}
 
@@ -14624,7 +14716,7 @@
 	 */
 	public boolean validateStructuralFeatureAction_validateOneFeaturingClassifier(
 			StructuralFeatureAction structuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return structuralFeatureAction.validateOneFeaturingClassifier(
 			diagnostics, context);
 	}
@@ -14636,7 +14728,7 @@
 	 */
 	public boolean validateReadStructuralFeatureAction(
 			ReadStructuralFeatureAction readStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			readStructuralFeatureAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14704,7 +14796,7 @@
 	 */
 	public boolean validateReadStructuralFeatureAction_validateTypeAndOrdering(
 			ReadStructuralFeatureAction readStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readStructuralFeatureAction.validateTypeAndOrdering(diagnostics,
 			context);
 	}
@@ -14717,7 +14809,7 @@
 	 */
 	public boolean validateReadStructuralFeatureAction_validateMultiplicity(
 			ReadStructuralFeatureAction readStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -14748,7 +14840,7 @@
 	 */
 	public boolean validateWriteStructuralFeatureAction(
 			WriteStructuralFeatureAction writeStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			writeStructuralFeatureAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14816,7 +14908,7 @@
 	 */
 	public boolean validateWriteStructuralFeatureAction_validateInputPin(
 			WriteStructuralFeatureAction writeStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return writeStructuralFeatureAction.validateInputPin(diagnostics,
 			context);
 	}
@@ -14829,7 +14921,7 @@
 	 */
 	public boolean validateWriteStructuralFeatureAction_validateMultiplicity(
 			WriteStructuralFeatureAction writeStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -14860,7 +14952,7 @@
 	 */
 	public boolean validateClearStructuralFeatureAction(
 			ClearStructuralFeatureAction clearStructuralFeatureAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			clearStructuralFeatureAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14924,7 +15016,7 @@
 	 */
 	public boolean validateRemoveStructuralFeatureValueAction(
 			RemoveStructuralFeatureValueAction removeStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			removeStructuralFeatureValueAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -14995,7 +15087,7 @@
 	 */
 	public boolean validateRemoveStructuralFeatureValueAction_validateNonUniqueRemoval(
 			RemoveStructuralFeatureValueAction removeStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return removeStructuralFeatureValueAction.validateNonUniqueRemoval(
 			diagnostics, context);
 	}
@@ -15007,7 +15099,7 @@
 	 */
 	public boolean validateAddStructuralFeatureValueAction(
 			AddStructuralFeatureValueAction addStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			addStructuralFeatureValueAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -15078,7 +15170,7 @@
 	 */
 	public boolean validateAddStructuralFeatureValueAction_validateUnlimitedNaturalAndMultiplicity(
 			AddStructuralFeatureValueAction addStructuralFeatureValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return addStructuralFeatureValueAction
 			.validateUnlimitedNaturalAndMultiplicity(diagnostics, context);
 	}
@@ -15089,7 +15181,7 @@
 	 * @generated
 	 */
 	public boolean validateLinkAction(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(linkAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15147,7 +15239,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkAction_validateSameAssociation(
-			LinkAction linkAction, DiagnosticChain diagnostics, Map context) {
+			LinkAction linkAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkAction.validateSameAssociation(diagnostics, context);
 	}
 
@@ -15158,7 +15251,7 @@
 	 * @generated
 	 */
 	public boolean validateLinkAction_validateNotStatic(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkAction.validateNotStatic(diagnostics, context);
 	}
 
@@ -15169,7 +15262,7 @@
 	 * @generated
 	 */
 	public boolean validateLinkAction_validateSamePins(LinkAction linkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkAction.validateSamePins(diagnostics, context);
 	}
 
@@ -15179,7 +15272,7 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData(LinkEndData linkEndData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(linkEndData,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15222,7 +15315,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData_validatePropertyIsAssociationEnd(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkEndData.validatePropertyIsAssociationEnd(diagnostics,
 			context);
 	}
@@ -15234,7 +15328,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData_validateSameType(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkEndData.validateSameType(diagnostics, context);
 	}
 
@@ -15245,7 +15340,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData_validateMultiplicity(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkEndData.validateMultiplicity(diagnostics, context);
 	}
 
@@ -15256,7 +15352,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData_validateQualifiers(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkEndData.validateQualifiers(diagnostics, context);
 	}
 
@@ -15267,7 +15364,8 @@
 	 * @generated
 	 */
 	public boolean validateLinkEndData_validateEndObjectInputPin(
-			LinkEndData linkEndData, DiagnosticChain diagnostics, Map context) {
+			LinkEndData linkEndData, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return linkEndData.validateEndObjectInputPin(diagnostics, context);
 	}
 
@@ -15277,7 +15375,7 @@
 	 * @generated
 	 */
 	public boolean validateQualifierValue(QualifierValue qualifierValue,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(qualifierValue,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15315,7 +15413,7 @@
 	 */
 	public boolean validateQualifierValue_validateQualifierAttribute(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return qualifierValue.validateQualifierAttribute(diagnostics, context);
 	}
 
@@ -15327,7 +15425,7 @@
 	 */
 	public boolean validateQualifierValue_validateTypeOfQualifier(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return qualifierValue.validateTypeOfQualifier(diagnostics, context);
 	}
 
@@ -15339,7 +15437,7 @@
 	 */
 	public boolean validateQualifierValue_validateMultiplicityOfQualifier(
 			QualifierValue qualifierValue, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return qualifierValue.validateMultiplicityOfQualifier(diagnostics,
 			context);
 	}
@@ -15350,7 +15448,7 @@
 	 * @generated
 	 */
 	public boolean validateReadLinkAction(ReadLinkAction readLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(readLinkAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15424,7 +15522,7 @@
 	 */
 	public boolean validateReadLinkAction_validateOneOpenEnd(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readLinkAction.validateOneOpenEnd(diagnostics, context);
 	}
 
@@ -15436,7 +15534,7 @@
 	 */
 	public boolean validateReadLinkAction_validateTypeAndOrdering(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readLinkAction.validateTypeAndOrdering(diagnostics, context);
 	}
 
@@ -15448,7 +15546,7 @@
 	 */
 	public boolean validateReadLinkAction_validateCompatibleMultiplicity(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readLinkAction.validateCompatibleMultiplicity(diagnostics,
 			context);
 	}
@@ -15461,7 +15559,7 @@
 	 */
 	public boolean validateReadLinkAction_validateNavigableOpenEnd(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readLinkAction.validateNavigableOpenEnd(diagnostics, context);
 	}
 
@@ -15473,7 +15571,7 @@
 	 */
 	public boolean validateReadLinkAction_validateVisibility(
 			ReadLinkAction readLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readLinkAction.validateVisibility(diagnostics, context);
 	}
 
@@ -15484,7 +15582,7 @@
 	 */
 	public boolean validateLinkEndCreationData(
 			LinkEndCreationData linkEndCreationData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			linkEndCreationData, diagnostics, context);
 		if (result || diagnostics != null)
@@ -15534,7 +15632,7 @@
 	 */
 	public boolean validateLinkEndCreationData_validateCreateLinkAction(
 			LinkEndCreationData linkEndCreationData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkEndCreationData.validateCreateLinkAction(diagnostics,
 			context);
 	}
@@ -15547,7 +15645,7 @@
 	 */
 	public boolean validateLinkEndCreationData_validateSingleInputPin(
 			LinkEndCreationData linkEndCreationData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkEndCreationData.validateSingleInputPin(diagnostics, context);
 	}
 
@@ -15557,7 +15655,7 @@
 	 * @generated
 	 */
 	public boolean validateCreateLinkAction(CreateLinkAction createLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(createLinkAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15622,7 +15720,7 @@
 	 */
 	public boolean validateCreateLinkAction_validateAssociationNotAbstract(
 			CreateLinkAction createLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return createLinkAction.validateAssociationNotAbstract(diagnostics,
 			context);
 	}
@@ -15633,7 +15731,7 @@
 	 * @generated
 	 */
 	public boolean validateWriteLinkAction(WriteLinkAction writeLinkAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(writeLinkAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15695,7 +15793,7 @@
 	 */
 	public boolean validateWriteLinkAction_validateAllowAccess(
 			WriteLinkAction writeLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return writeLinkAction.validateAllowAccess(diagnostics, context);
 	}
 
@@ -15706,7 +15804,7 @@
 	 */
 	public boolean validateDestroyLinkAction(
 			DestroyLinkAction destroyLinkAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(destroyLinkAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -15767,7 +15865,7 @@
 	 */
 	public boolean validateLinkEndDestructionData(
 			LinkEndDestructionData linkEndDestructionData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			linkEndDestructionData, diagnostics, context);
 		if (result || diagnostics != null)
@@ -15817,7 +15915,7 @@
 	 */
 	public boolean validateLinkEndDestructionData_validateDestroyLinkAction(
 			LinkEndDestructionData linkEndDestructionData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkEndDestructionData.validateDestroyLinkAction(diagnostics,
 			context);
 	}
@@ -15830,7 +15928,7 @@
 	 */
 	public boolean validateLinkEndDestructionData_validateUnlimitedNaturalAndMultiplicity(
 			LinkEndDestructionData linkEndDestructionData,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return linkEndDestructionData.validateUnlimitedNaturalAndMultiplicity(
 			diagnostics, context);
 	}
@@ -15842,7 +15940,7 @@
 	 */
 	public boolean validateClearAssociationAction(
 			ClearAssociationAction clearAssociationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			clearAssociationAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -15898,7 +15996,7 @@
 	 */
 	public boolean validateClearAssociationAction_validateSameType(
 			ClearAssociationAction clearAssociationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return clearAssociationAction.validateSameType(diagnostics, context);
 	}
 
@@ -15910,7 +16008,7 @@
 	 */
 	public boolean validateClearAssociationAction_validateMultiplicity(
 			ClearAssociationAction clearAssociationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return clearAssociationAction
 			.validateMultiplicity(diagnostics, context);
 	}
@@ -15922,7 +16020,7 @@
 	 */
 	public boolean validateBroadcastSignalAction(
 			BroadcastSignalAction broadcastSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			broadcastSignalAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -15981,7 +16079,7 @@
 	 */
 	public boolean validateBroadcastSignalAction_validateNumberAndOrder(
 			BroadcastSignalAction broadcastSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return broadcastSignalAction.validateNumberAndOrder(diagnostics,
 			context);
 	}
@@ -15994,7 +16092,7 @@
 	 */
 	public boolean validateBroadcastSignalAction_validateTypeOrderingMultiplicity(
 			BroadcastSignalAction broadcastSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return broadcastSignalAction.validateTypeOrderingMultiplicity(
 			diagnostics, context);
 	}
@@ -16005,7 +16103,7 @@
 	 * @generated
 	 */
 	public boolean validateInvocationAction(InvocationAction invocationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(invocationAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16058,7 +16156,7 @@
 	 */
 	public boolean validateInvocationAction_validateOnPortReceiver(
 			InvocationAction invocationAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return invocationAction.validateOnPortReceiver(diagnostics, context);
 	}
 
@@ -16068,7 +16166,7 @@
 	 * @generated
 	 */
 	public boolean validateSendObjectAction(SendObjectAction sendObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(sendObjectAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16120,7 +16218,7 @@
 	 */
 	public boolean validateValueSpecificationAction(
 			ValueSpecificationAction valueSpecificationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			valueSpecificationAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -16176,7 +16274,7 @@
 	 */
 	public boolean validateValueSpecificationAction_validateCompatibleType(
 			ValueSpecificationAction valueSpecificationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return valueSpecificationAction.validateCompatibleType(diagnostics,
 			context);
 	}
@@ -16189,7 +16287,7 @@
 	 */
 	public boolean validateValueSpecificationAction_validateMultiplicity(
 			ValueSpecificationAction valueSpecificationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return valueSpecificationAction.validateMultiplicity(diagnostics,
 			context);
 	}
@@ -16200,7 +16298,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeExpression(TimeExpression timeExpression,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(timeExpression,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16236,7 +16334,7 @@
 	 * @generated
 	 */
 	public boolean validateObservation(Observation observation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(observation,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16272,7 +16370,7 @@
 	 * @generated
 	 */
 	public boolean validateDuration(Duration duration,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(duration,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16308,7 +16406,7 @@
 	 * @generated
 	 */
 	public boolean validateValuePin(ValuePin valuePin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(valuePin,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16396,7 +16494,7 @@
 	 * @generated
 	 */
 	public boolean validateValuePin_validateCompatibleType(ValuePin valuePin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return valuePin.validateCompatibleType(diagnostics, context);
 	}
 
@@ -16407,7 +16505,7 @@
 	 * @generated
 	 */
 	public boolean validateValuePin_validateNoIncomingEdges(ValuePin valuePin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return valuePin.validateNoIncomingEdges(diagnostics, context);
 	}
 
@@ -16417,7 +16515,7 @@
 	 * @generated
 	 */
 	public boolean validateDurationInterval(DurationInterval durationInterval,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(durationInterval,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16453,7 +16551,7 @@
 	 * @generated
 	 */
 	public boolean validateInterval(Interval interval,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(interval,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16489,7 +16587,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeConstraint(TimeConstraint timeConstraint,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(timeConstraint,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16541,7 +16639,7 @@
 	 */
 	public boolean validateIntervalConstraint(
 			IntervalConstraint intervalConstraint, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(intervalConstraint,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16592,7 +16690,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeInterval(TimeInterval timeInterval,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(timeInterval,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16629,7 +16727,7 @@
 	 */
 	public boolean validateDurationConstraint(
 			DurationConstraint durationConstraint, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(durationConstraint,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16685,7 +16783,7 @@
 	 */
 	public boolean validateDurationConstraint_validateFirstEventMultiplicity(
 			DurationConstraint durationConstraint, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return durationConstraint.validateFirstEventMultiplicity(diagnostics,
 			context);
 	}
@@ -16696,7 +16794,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeObservation(TimeObservation timeObservation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(timeObservation,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16733,7 +16831,7 @@
 	 */
 	public boolean validateDurationObservation(
 			DurationObservation durationObservation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			durationObservation, diagnostics, context);
 		if (result || diagnostics != null)
@@ -16774,7 +16872,7 @@
 	 */
 	public boolean validateDurationObservation_validateFirstEventMultiplicity(
 			DurationObservation durationObservation,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return durationObservation.validateFirstEventMultiplicity(diagnostics,
 			context);
 	}
@@ -16785,7 +16883,7 @@
 	 * @generated
 	 */
 	public boolean validateOpaqueAction(OpaqueAction opaqueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(opaqueAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16833,7 +16931,7 @@
 	 * @generated
 	 */
 	public boolean validateCallAction(CallAction callAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(callAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16894,7 +16992,8 @@
 	 * @generated
 	 */
 	public boolean validateCallAction_validateSynchronousCall(
-			CallAction callAction, DiagnosticChain diagnostics, Map context) {
+			CallAction callAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return callAction.validateSynchronousCall(diagnostics, context);
 	}
 
@@ -16905,7 +17004,8 @@
 	 * @generated
 	 */
 	public boolean validateCallAction_validateNumberAndOrder(
-			CallAction callAction, DiagnosticChain diagnostics, Map context) {
+			CallAction callAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return callAction.validateNumberAndOrder(diagnostics, context);
 	}
 
@@ -16916,7 +17016,8 @@
 	 * @generated
 	 */
 	public boolean validateCallAction_validateTypeOrderingMultiplicity(
-			CallAction callAction, DiagnosticChain diagnostics, Map context) {
+			CallAction callAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return callAction
 			.validateTypeOrderingMultiplicity(diagnostics, context);
 	}
@@ -16927,7 +17028,7 @@
 	 * @generated
 	 */
 	public boolean validateSendSignalAction(SendSignalAction sendSignalAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(sendSignalAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -16986,7 +17087,7 @@
 	 */
 	public boolean validateSendSignalAction_validateNumberOrder(
 			SendSignalAction sendSignalAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return sendSignalAction.validateNumberOrder(diagnostics, context);
 	}
 
@@ -16998,7 +17099,7 @@
 	 */
 	public boolean validateSendSignalAction_validateTypeOrderingMultiplicity(
 			SendSignalAction sendSignalAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return sendSignalAction.validateTypeOrderingMultiplicity(diagnostics,
 			context);
 	}
@@ -17010,7 +17111,7 @@
 	 */
 	public boolean validateCallOperationAction(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			callOperationAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17081,7 +17182,7 @@
 	 */
 	public boolean validateCallOperationAction_validateArgumentPinEqualParameter(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return callOperationAction.validateArgumentPinEqualParameter(
 			diagnostics, context);
 	}
@@ -17094,7 +17195,7 @@
 	 */
 	public boolean validateCallOperationAction_validateResultPinEqualParameter(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return callOperationAction.validateResultPinEqualParameter(diagnostics,
 			context);
 	}
@@ -17107,7 +17208,7 @@
 	 */
 	public boolean validateCallOperationAction_validateTypeTargetPin(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return callOperationAction.validateTypeTargetPin(diagnostics, context);
 	}
 
@@ -17119,7 +17220,7 @@
 	 */
 	public boolean validateCallOperationAction_validateTypeOrderingMultiplicity(
 			CallOperationAction callOperationAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -17150,7 +17251,7 @@
 	 */
 	public boolean validateCallBehaviorAction(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(callBehaviorAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -17218,7 +17319,7 @@
 	 */
 	public boolean validateCallBehaviorAction_validateArgumentPinEqualParameter(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return callBehaviorAction.validateArgumentPinEqualParameter(
 			diagnostics, context);
 	}
@@ -17231,7 +17332,7 @@
 	 */
 	public boolean validateCallBehaviorAction_validateResultPinEqualParameter(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return callBehaviorAction.validateResultPinEqualParameter(diagnostics,
 			context);
 	}
@@ -17244,7 +17345,7 @@
 	 */
 	public boolean validateCallBehaviorAction_validateTypeOrderingMultiplicity(
 			CallBehaviorAction callBehaviorAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -17274,7 +17375,7 @@
 	 * @generated
 	 */
 	public boolean validateInformationItem(InformationItem informationItem,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(informationItem,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -17342,7 +17443,7 @@
 	 */
 	public boolean validateInformationItem_validateSourcesAndTargets(
 			InformationItem informationItem, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationItem.validateSourcesAndTargets(diagnostics, context);
 	}
 
@@ -17354,7 +17455,7 @@
 	 */
 	public boolean validateInformationItem_validateHasNo(
 			InformationItem informationItem, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationItem.validateHasNo(diagnostics, context);
 	}
 
@@ -17366,7 +17467,7 @@
 	 */
 	public boolean validateInformationItem_validateNotInstantiable(
 			InformationItem informationItem, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationItem.validateNotInstantiable(diagnostics, context);
 	}
 
@@ -17376,7 +17477,7 @@
 	 * @generated
 	 */
 	public boolean validateInformationFlow(InformationFlow informationFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(informationFlow,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -17423,7 +17524,7 @@
 	 */
 	public boolean validateInformationFlow_validateSourcesAndTargetsKind(
 			InformationFlow informationFlow, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationFlow.validateSourcesAndTargetsKind(diagnostics,
 			context);
 	}
@@ -17436,7 +17537,7 @@
 	 */
 	public boolean validateInformationFlow_validateMustConform(
 			InformationFlow informationFlow, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationFlow.validateMustConform(diagnostics, context);
 	}
 
@@ -17448,7 +17549,7 @@
 	 */
 	public boolean validateInformationFlow_validateConveyClassifiers(
 			InformationFlow informationFlow, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return informationFlow.validateConveyClassifiers(diagnostics, context);
 	}
 
@@ -17458,7 +17559,7 @@
 	 * @generated
 	 */
 	public boolean validateModel(Model model, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(model, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -17499,7 +17600,7 @@
 	 * @generated
 	 */
 	public boolean validateVariableAction(VariableAction variableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(variableAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -17552,7 +17653,7 @@
 	 */
 	public boolean validateVariableAction_validateScopeOfVariable(
 			VariableAction variableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return variableAction.validateScopeOfVariable(diagnostics, context);
 	}
 
@@ -17563,7 +17664,7 @@
 	 */
 	public boolean validateReadVariableAction(
 			ReadVariableAction readVariableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(readVariableAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -17622,7 +17723,7 @@
 	 */
 	public boolean validateReadVariableAction_validateTypeAndOrdering(
 			ReadVariableAction readVariableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readVariableAction.validateTypeAndOrdering(diagnostics, context);
 	}
 
@@ -17634,7 +17735,7 @@
 	 */
 	public boolean validateReadVariableAction_validateCompatibleMultiplicity(
 			ReadVariableAction readVariableAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readVariableAction.validateCompatibleMultiplicity(diagnostics,
 			context);
 	}
@@ -17646,7 +17747,7 @@
 	 */
 	public boolean validateWriteVariableAction(
 			WriteVariableAction writeVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			writeVariableAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17705,7 +17806,7 @@
 	 */
 	public boolean validateWriteVariableAction_validateSameType(
 			WriteVariableAction writeVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return writeVariableAction.validateSameType(diagnostics, context);
 	}
 
@@ -17717,7 +17818,7 @@
 	 */
 	public boolean validateWriteVariableAction_validateMultiplicity(
 			WriteVariableAction writeVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return writeVariableAction.validateMultiplicity(diagnostics, context);
 	}
 
@@ -17728,7 +17829,7 @@
 	 */
 	public boolean validateClearVariableAction(
 			ClearVariableAction clearVariableAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			clearVariableAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17780,7 +17881,7 @@
 	 */
 	public boolean validateAddVariableValueAction(
 			AddVariableValueAction addVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			addVariableValueAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17842,7 +17943,7 @@
 	 */
 	public boolean validateAddVariableValueAction_validateSingleInputPin(
 			AddVariableValueAction addVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return addVariableValueAction.validateSingleInputPin(diagnostics,
 			context);
 	}
@@ -17854,7 +17955,7 @@
 	 */
 	public boolean validateRemoveVariableValueAction(
 			RemoveVariableValueAction removeVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			removeVariableValueAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17916,7 +18017,7 @@
 	 */
 	public boolean validateRemoveVariableValueAction_validateUnlimitedNatural(
 			RemoveVariableValueAction removeVariableValueAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return removeVariableValueAction.validateUnlimitedNatural(diagnostics,
 			context);
 	}
@@ -17928,7 +18029,7 @@
 	 */
 	public boolean validateRaiseExceptionAction(
 			RaiseExceptionAction raiseExceptionAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			raiseExceptionAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -17976,7 +18077,7 @@
 	 * @generated
 	 */
 	public boolean validateActionInputPin(ActionInputPin actionInputPin,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(actionInputPin,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -18068,7 +18169,7 @@
 	 */
 	public boolean validateActionInputPin_validateOneOutputPin(
 			ActionInputPin actionInputPin, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return actionInputPin.validateOneOutputPin(diagnostics, context);
 	}
 
@@ -18080,7 +18181,7 @@
 	 */
 	public boolean validateActionInputPin_validateInputPin(
 			ActionInputPin actionInputPin, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return actionInputPin.validateInputPin(diagnostics, context);
 	}
 
@@ -18092,7 +18193,7 @@
 	 */
 	public boolean validateActionInputPin_validateNoControlOrDataFlow(
 			ActionInputPin actionInputPin, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return actionInputPin.validateNoControlOrDataFlow(diagnostics, context);
 	}
 
@@ -18102,7 +18203,7 @@
 	 * @generated
 	 */
 	public boolean validateReadExtentAction(ReadExtentAction readExtentAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(readExtentAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -18158,7 +18259,7 @@
 	 */
 	public boolean validateReadExtentAction_validateTypeIsClassifier(
 			ReadExtentAction readExtentAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readExtentAction.validateTypeIsClassifier(diagnostics, context);
 	}
 
@@ -18170,7 +18271,7 @@
 	 */
 	public boolean validateReadExtentAction_validateMultiplicityOfResult(
 			ReadExtentAction readExtentAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return readExtentAction.validateMultiplicityOfResult(diagnostics,
 			context);
 	}
@@ -18182,7 +18283,7 @@
 	 */
 	public boolean validateReclassifyObjectAction(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			reclassifyObjectAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18241,7 +18342,7 @@
 	 */
 	public boolean validateReclassifyObjectAction_validateClassifierNotAbstract(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return reclassifyObjectAction.validateClassifierNotAbstract(
 			diagnostics, context);
 	}
@@ -18254,7 +18355,7 @@
 	 */
 	public boolean validateReclassifyObjectAction_validateMultiplicity(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return reclassifyObjectAction
 			.validateMultiplicity(diagnostics, context);
 	}
@@ -18267,7 +18368,7 @@
 	 */
 	public boolean validateReclassifyObjectAction_validateInputPin(
 			ReclassifyObjectAction reclassifyObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return reclassifyObjectAction.validateInputPin(diagnostics, context);
 	}
 
@@ -18278,7 +18379,7 @@
 	 */
 	public boolean validateReadIsClassifiedObjectAction(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			readIsClassifiedObjectAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18340,7 +18441,7 @@
 	 */
 	public boolean validateReadIsClassifiedObjectAction_validateMultiplicityOfInput(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readIsClassifiedObjectAction.validateMultiplicityOfInput(
 			diagnostics, context);
 	}
@@ -18353,7 +18454,7 @@
 	 */
 	public boolean validateReadIsClassifiedObjectAction_validateNoType(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readIsClassifiedObjectAction
 			.validateNoType(diagnostics, context);
 	}
@@ -18366,7 +18467,7 @@
 	 */
 	public boolean validateReadIsClassifiedObjectAction_validateMultiplicityOfOutput(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readIsClassifiedObjectAction.validateMultiplicityOfOutput(
 			diagnostics, context);
 	}
@@ -18379,7 +18480,7 @@
 	 */
 	public boolean validateReadIsClassifiedObjectAction_validateBooleanResult(
 			ReadIsClassifiedObjectAction readIsClassifiedObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readIsClassifiedObjectAction.validateBooleanResult(diagnostics,
 			context);
 	}
@@ -18391,7 +18492,7 @@
 	 */
 	public boolean validateStartClassifierBehaviorAction(
 			StartClassifierBehaviorAction startClassifierBehaviorAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			startClassifierBehaviorAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18447,7 +18548,7 @@
 	 */
 	public boolean validateStartClassifierBehaviorAction_validateMultiplicity(
 			StartClassifierBehaviorAction startClassifierBehaviorAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return startClassifierBehaviorAction.validateMultiplicity(diagnostics,
 			context);
 	}
@@ -18460,7 +18561,7 @@
 	 */
 	public boolean validateStartClassifierBehaviorAction_validateTypeHasClassifier(
 			StartClassifierBehaviorAction startClassifierBehaviorAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return startClassifierBehaviorAction.validateTypeHasClassifier(
 			diagnostics, context);
 	}
@@ -18472,7 +18573,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			readLinkObjectEndAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18543,7 +18644,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateProperty(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateProperty(diagnostics, context);
 	}
 
@@ -18555,7 +18656,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateAssociationOfAssociation(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateAssociationOfAssociation(
 			diagnostics, context);
 	}
@@ -18568,7 +18669,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateEndsOfAssociation(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateEndsOfAssociation(diagnostics,
 			context);
 	}
@@ -18581,7 +18682,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateTypeOfObject(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateTypeOfObject(diagnostics,
 			context);
 	}
@@ -18594,7 +18695,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateMultiplicityOfObject(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateMultiplicityOfObject(
 			diagnostics, context);
 	}
@@ -18607,7 +18708,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateTypeOfResult(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateTypeOfResult(diagnostics,
 			context);
 	}
@@ -18620,7 +18721,7 @@
 	 */
 	public boolean validateReadLinkObjectEndAction_validateMultiplicityOfResult(
 			ReadLinkObjectEndAction readLinkObjectEndAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndAction.validateMultiplicityOfResult(
 			diagnostics, context);
 	}
@@ -18632,7 +18733,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			readLinkObjectEndQualifierAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18706,7 +18807,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateQualifierAttribute(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateQualifierAttribute(
 			diagnostics, context);
 	}
@@ -18719,7 +18820,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateAssociationOfAssociation(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction
 			.validateAssociationOfAssociation(diagnostics, context);
 	}
@@ -18732,7 +18833,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateEndsOfAssociation(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateEndsOfAssociation(
 			diagnostics, context);
 	}
@@ -18745,7 +18846,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateTypeOfObject(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateTypeOfObject(
 			diagnostics, context);
 	}
@@ -18758,7 +18859,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateMultiplicityOfQualifier(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction
 			.validateMultiplicityOfQualifier(diagnostics, context);
 	}
@@ -18771,7 +18872,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateMultiplicityOfObject(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateMultiplicityOfObject(
 			diagnostics, context);
 	}
@@ -18784,7 +18885,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateSameType(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateSameType(diagnostics,
 			context);
 	}
@@ -18797,7 +18898,7 @@
 	 */
 	public boolean validateReadLinkObjectEndQualifierAction_validateMultiplicityOfResult(
 			ReadLinkObjectEndQualifierAction readLinkObjectEndQualifierAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return readLinkObjectEndQualifierAction.validateMultiplicityOfResult(
 			diagnostics, context);
 	}
@@ -18809,7 +18910,7 @@
 	 */
 	public boolean validateCreateLinkObjectAction(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			createLinkObjectAction, diagnostics, context);
 		if (result || diagnostics != null)
@@ -18883,7 +18984,7 @@
 	 */
 	public boolean validateCreateLinkObjectAction_validateAssociationClass(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return createLinkObjectAction.validateAssociationClass(diagnostics,
 			context);
 	}
@@ -18896,7 +18997,7 @@
 	 */
 	public boolean validateCreateLinkObjectAction_validateTypeOfResult(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return createLinkObjectAction
 			.validateTypeOfResult(diagnostics, context);
 	}
@@ -18909,7 +19010,7 @@
 	 */
 	public boolean validateCreateLinkObjectAction_validateMultiplicity(
 			CreateLinkObjectAction createLinkObjectAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return createLinkObjectAction
 			.validateMultiplicity(diagnostics, context);
 	}
@@ -18921,7 +19022,7 @@
 	 */
 	public boolean validateAcceptEventAction(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(acceptEventAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -18983,7 +19084,7 @@
 	 */
 	public boolean validateAcceptEventAction_validateNoInputPins(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptEventAction.validateNoInputPins(diagnostics, context);
 	}
 
@@ -18995,7 +19096,7 @@
 	 */
 	public boolean validateAcceptEventAction_validateNoOutputPins(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptEventAction.validateNoOutputPins(diagnostics, context);
 	}
 
@@ -19007,7 +19108,7 @@
 	 */
 	public boolean validateAcceptEventAction_validateTriggerEvents(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptEventAction.validateTriggerEvents(diagnostics, context);
 	}
 
@@ -19019,7 +19120,7 @@
 	 */
 	public boolean validateAcceptEventAction_validateUnmarshallSignalEvents(
 			AcceptEventAction acceptEventAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptEventAction.validateUnmarshallSignalEvents(diagnostics,
 			context);
 	}
@@ -19030,7 +19131,7 @@
 	 * @generated
 	 */
 	public boolean validateAcceptCallAction(AcceptCallAction acceptCallAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(acceptCallAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19101,7 +19202,7 @@
 	 */
 	public boolean validateAcceptCallAction_validateResultPins(
 			AcceptCallAction acceptCallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptCallAction.validateResultPins(diagnostics, context);
 	}
 
@@ -19113,7 +19214,7 @@
 	 */
 	public boolean validateAcceptCallAction_validateTriggerCallEvent(
 			AcceptCallAction acceptCallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptCallAction.validateTriggerCallEvent(diagnostics, context);
 	}
 
@@ -19125,7 +19226,7 @@
 	 */
 	public boolean validateAcceptCallAction_validateUnmarshall(
 			AcceptCallAction acceptCallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return acceptCallAction.validateUnmarshall(diagnostics, context);
 	}
 
@@ -19135,7 +19236,7 @@
 	 * @generated
 	 */
 	public boolean validateReplyAction(ReplyAction replyAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(replyAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19190,7 +19291,8 @@
 	 * @generated
 	 */
 	public boolean validateReplyAction_validatePinsMatchParameter(
-			ReplyAction replyAction, DiagnosticChain diagnostics, Map context) {
+			ReplyAction replyAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return replyAction.validatePinsMatchParameter(diagnostics, context);
 	}
 
@@ -19201,7 +19303,8 @@
 	 * @generated
 	 */
 	public boolean validateReplyAction_validateEventOnReplyToCallTrigger(
-			ReplyAction replyAction, DiagnosticChain diagnostics, Map context) {
+			ReplyAction replyAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return replyAction.validateEventOnReplyToCallTrigger(diagnostics,
 			context);
 	}
@@ -19212,7 +19315,7 @@
 	 * @generated
 	 */
 	public boolean validateUnmarshallAction(UnmarshallAction unmarshallAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(unmarshallAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19283,7 +19386,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateSameType(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateSameType(diagnostics, context);
 	}
 
@@ -19295,7 +19398,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateMultiplicityOfObject(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateMultiplicityOfObject(diagnostics,
 			context);
 	}
@@ -19308,7 +19411,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateNumberOfResult(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateNumberOfResult(diagnostics, context);
 	}
 
@@ -19320,7 +19423,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateTypeAndOrdering(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateTypeAndOrdering(diagnostics, context);
 	}
 
@@ -19332,7 +19435,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateMultiplicityOfResult(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateMultiplicityOfResult(diagnostics,
 			context);
 	}
@@ -19345,7 +19448,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateStructuralFeature(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateStructuralFeature(diagnostics, context);
 	}
 
@@ -19357,7 +19460,7 @@
 	 */
 	public boolean validateUnmarshallAction_validateUnmarshallTypeIsClassifier(
 			UnmarshallAction unmarshallAction, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return unmarshallAction.validateUnmarshallTypeIsClassifier(diagnostics,
 			context);
 	}
@@ -19368,7 +19471,7 @@
 	 * @generated
 	 */
 	public boolean validateReduceAction(ReduceAction reduceAction,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(reduceAction,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19426,7 +19529,8 @@
 	 * @generated
 	 */
 	public boolean validateReduceAction_validateInputTypeIsCollection(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return reduceAction.validateInputTypeIsCollection(diagnostics, context);
 	}
 
@@ -19437,7 +19541,8 @@
 	 * @generated
 	 */
 	public boolean validateReduceAction_validateOutputTypesAreCompatible(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return reduceAction.validateOutputTypesAreCompatible(diagnostics,
 			context);
 	}
@@ -19449,7 +19554,8 @@
 	 * @generated
 	 */
 	public boolean validateReduceAction_validateReducerInputsOutput(
-			ReduceAction reduceAction, DiagnosticChain diagnostics, Map context) {
+			ReduceAction reduceAction, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return reduceAction.validateReducerInputsOutput(diagnostics, context);
 	}
 
@@ -19459,7 +19565,7 @@
 	 * @generated
 	 */
 	public boolean validateControlNode(ControlNode controlNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(controlNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19507,7 +19613,7 @@
 	 * @generated
 	 */
 	public boolean validateControlFlow(ControlFlow controlFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(controlFlow,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19562,7 +19668,8 @@
 	 * @generated
 	 */
 	public boolean validateControlFlow_validateObjectNodes(
-			ControlFlow controlFlow, DiagnosticChain diagnostics, Map context) {
+			ControlFlow controlFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return controlFlow.validateObjectNodes(diagnostics, context);
 	}
 
@@ -19572,7 +19679,7 @@
 	 * @generated
 	 */
 	public boolean validateInitialNode(InitialNode initialNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(initialNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19627,7 +19734,8 @@
 	 * @generated
 	 */
 	public boolean validateInitialNode_validateNoIncomingEdges(
-			InitialNode initialNode, DiagnosticChain diagnostics, Map context) {
+			InitialNode initialNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return initialNode.validateNoIncomingEdges(diagnostics, context);
 	}
 
@@ -19638,7 +19746,8 @@
 	 * @generated
 	 */
 	public boolean validateInitialNode_validateControlEdges(
-			InitialNode initialNode, DiagnosticChain diagnostics, Map context) {
+			InitialNode initialNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return initialNode.validateControlEdges(diagnostics, context);
 	}
 
@@ -19649,7 +19758,7 @@
 	 */
 	public boolean validateActivityParameterNode(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			activityParameterNode, diagnostics, context);
 		if (result || diagnostics != null)
@@ -19726,7 +19835,7 @@
 	 */
 	public boolean validateActivityParameterNode_validateHasParameters(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activityParameterNode
 			.validateHasParameters(diagnostics, context);
 	}
@@ -19739,7 +19848,7 @@
 	 */
 	public boolean validateActivityParameterNode_validateSameType(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activityParameterNode.validateSameType(diagnostics, context);
 	}
 
@@ -19751,7 +19860,7 @@
 	 */
 	public boolean validateActivityParameterNode_validateNoEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activityParameterNode.validateNoEdges(diagnostics, context);
 	}
 
@@ -19763,7 +19872,7 @@
 	 */
 	public boolean validateActivityParameterNode_validateNoIncomingEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activityParameterNode.validateNoIncomingEdges(diagnostics,
 			context);
 	}
@@ -19776,7 +19885,7 @@
 	 */
 	public boolean validateActivityParameterNode_validateNoOutgoingEdges(
 			ActivityParameterNode activityParameterNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return activityParameterNode.validateNoOutgoingEdges(diagnostics,
 			context);
 	}
@@ -19787,7 +19896,7 @@
 	 * @generated
 	 */
 	public boolean validateForkNode(ForkNode forkNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(forkNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19842,7 +19951,7 @@
 	 * @generated
 	 */
 	public boolean validateForkNode_validateOneIncomingEdge(ForkNode forkNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return forkNode.validateOneIncomingEdge(diagnostics, context);
 	}
 
@@ -19853,7 +19962,7 @@
 	 * @generated
 	 */
 	public boolean validateForkNode_validateEdges(ForkNode forkNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return forkNode.validateEdges(diagnostics, context);
 	}
 
@@ -19863,7 +19972,7 @@
 	 * @generated
 	 */
 	public boolean validateFlowFinalNode(FlowFinalNode flowFinalNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(flowFinalNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19914,7 +20023,7 @@
 	 * @generated
 	 */
 	public boolean validateFinalNode(FinalNode finalNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(finalNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -19966,7 +20075,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalNode_validateNoOutgoingEdges(
-			FinalNode finalNode, DiagnosticChain diagnostics, Map context) {
+			FinalNode finalNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalNode.validateNoOutgoingEdges(diagnostics, context);
 	}
 
@@ -19977,7 +20087,7 @@
 	 */
 	public boolean validateCentralBufferNode(
 			CentralBufferNode centralBufferNode, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(centralBufferNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20037,7 +20147,7 @@
 	 * @generated
 	 */
 	public boolean validateMergeNode(MergeNode mergeNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(mergeNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20092,7 +20202,8 @@
 	 * @generated
 	 */
 	public boolean validateMergeNode_validateOneOutgoingEdge(
-			MergeNode mergeNode, DiagnosticChain diagnostics, Map context) {
+			MergeNode mergeNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return mergeNode.validateOneOutgoingEdge(diagnostics, context);
 	}
 
@@ -20103,7 +20214,7 @@
 	 * @generated
 	 */
 	public boolean validateMergeNode_validateEdges(MergeNode mergeNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return mergeNode.validateEdges(diagnostics, context);
 	}
 
@@ -20113,7 +20224,7 @@
 	 * @generated
 	 */
 	public boolean validateDecisionNode(DecisionNode decisionNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(decisionNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20171,7 +20282,8 @@
 	 * @generated
 	 */
 	public boolean validateDecisionNode_validateOneIncomingEdge(
-			DecisionNode decisionNode, DiagnosticChain diagnostics, Map context) {
+			DecisionNode decisionNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return decisionNode.validateOneIncomingEdge(diagnostics, context);
 	}
 
@@ -20182,7 +20294,8 @@
 	 * @generated
 	 */
 	public boolean validateDecisionNode_validateInputParameter(
-			DecisionNode decisionNode, DiagnosticChain diagnostics, Map context) {
+			DecisionNode decisionNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return decisionNode.validateInputParameter(diagnostics, context);
 	}
 
@@ -20193,7 +20306,8 @@
 	 * @generated
 	 */
 	public boolean validateDecisionNode_validateEdges(
-			DecisionNode decisionNode, DiagnosticChain diagnostics, Map context) {
+			DecisionNode decisionNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return decisionNode.validateEdges(diagnostics, context);
 	}
 
@@ -20204,7 +20318,7 @@
 	 */
 	public boolean validateActivityFinalNode(
 			ActivityFinalNode activityFinalNode, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(activityFinalNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20255,7 +20369,7 @@
 	 * @generated
 	 */
 	public boolean validateJoinNode(JoinNode joinNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(joinNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20310,7 +20424,7 @@
 	 * @generated
 	 */
 	public boolean validateJoinNode_validateOneOutgoingEdge(JoinNode joinNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return joinNode.validateOneOutgoingEdge(diagnostics, context);
 	}
 
@@ -20321,7 +20435,8 @@
 	 * @generated
 	 */
 	public boolean validateJoinNode_validateIncomingObjectFlow(
-			JoinNode joinNode, DiagnosticChain diagnostics, Map context) {
+			JoinNode joinNode, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return joinNode.validateIncomingObjectFlow(diagnostics, context);
 	}
 
@@ -20331,7 +20446,7 @@
 	 * @generated
 	 */
 	public boolean validateDataStoreNode(DataStoreNode dataStoreNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(dataStoreNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20391,7 +20506,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(objectFlow,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20467,7 +20582,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateNoActions(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return objectFlow.validateNoActions(diagnostics, context);
 	}
 
@@ -20478,7 +20593,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateCompatibleTypes(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateCompatibleTypes(diagnostics, context);
 	}
 
@@ -20489,7 +20605,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateSameUpperBounds(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateSameUpperBounds(diagnostics, context);
 	}
 
@@ -20500,7 +20617,7 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateTarget(ObjectFlow objectFlow,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return objectFlow.validateTarget(diagnostics, context);
 	}
 
@@ -20511,7 +20628,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateTransformationBehaviour(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateTransformationBehaviour(diagnostics, context);
 	}
 
@@ -20522,7 +20640,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateSelectionBehaviour(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateSelectionBehaviour(diagnostics, context);
 	}
 
@@ -20533,7 +20652,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateInputAndOutputParameter(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateInputAndOutputParameter(diagnostics, context);
 	}
 
@@ -20544,7 +20664,8 @@
 	 * @generated
 	 */
 	public boolean validateObjectFlow_validateIsMulticastOrIsMultireceive(
-			ObjectFlow objectFlow, DiagnosticChain diagnostics, Map context) {
+			ObjectFlow objectFlow, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return objectFlow.validateIsMulticastOrIsMultireceive(diagnostics,
 			context);
 	}
@@ -20555,7 +20676,7 @@
 	 * @generated
 	 */
 	public boolean validateSequenceNode(SequenceNode sequenceNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(sequenceNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20618,7 +20739,7 @@
 	 * @generated
 	 */
 	public boolean validateConditionalNode(ConditionalNode conditionalNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(conditionalNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20686,7 +20807,7 @@
 	 */
 	public boolean validateConditionalNode_validateResultNoIncoming(
 			ConditionalNode conditionalNode, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return conditionalNode.validateResultNoIncoming(diagnostics, context);
 	}
 
@@ -20696,7 +20817,7 @@
 	 * @generated
 	 */
 	public boolean validateClause(Clause clause, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(clause,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20729,7 +20850,7 @@
 	 * @generated
 	 */
 	public boolean validateClause_validateDeciderOutput(Clause clause,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return clause.validateDeciderOutput(diagnostics, context);
 	}
 
@@ -20740,7 +20861,7 @@
 	 * @generated
 	 */
 	public boolean validateClause_validateBodyOutputPins(Clause clause,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return clause.validateBodyOutputPins(diagnostics, context);
 	}
 
@@ -20750,7 +20871,7 @@
 	 * @generated
 	 */
 	public boolean validateLoopNode(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(loopNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20823,7 +20944,7 @@
 	 * @generated
 	 */
 	public boolean validateLoopNode_validateInputEdges(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return loopNode.validateInputEdges(diagnostics, context);
 	}
 
@@ -20834,7 +20955,7 @@
 	 * @generated
 	 */
 	public boolean validateLoopNode_validateBodyOutputPins(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return loopNode.validateBodyOutputPins(diagnostics, context);
 	}
 
@@ -20845,7 +20966,7 @@
 	 * @generated
 	 */
 	public boolean validateLoopNode_validateResultNoIncoming(LoopNode loopNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return loopNode.validateResultNoIncoming(diagnostics, context);
 	}
 
@@ -20855,7 +20976,7 @@
 	 * @generated
 	 */
 	public boolean validateExpansionNode(ExpansionNode expansionNode,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(expansionNode,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20915,7 +21036,7 @@
 	 * @generated
 	 */
 	public boolean validateExpansionRegion(ExpansionRegion expansionRegion,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(expansionRegion,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -20983,7 +21104,7 @@
 	 */
 	public boolean validateExpansionRegion_validateExpansionNodes(
 			ExpansionRegion expansionRegion, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return expansionRegion.validateExpansionNodes(diagnostics, context);
 	}
 
@@ -20994,7 +21115,7 @@
 	 */
 	public boolean validateComponentRealization(
 			ComponentRealization componentRealization,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			componentRealization, diagnostics, context);
 		if (result || diagnostics != null)
@@ -21030,7 +21151,7 @@
 	 * @generated
 	 */
 	public boolean validateComponent(Component component,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(component,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21096,7 +21217,7 @@
 	 * @generated
 	 */
 	public boolean validateNode(Node node, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(node, diagnostics,
 			context);
 		if (result || diagnostics != null)
@@ -21165,7 +21286,7 @@
 	 * @generated
 	 */
 	public boolean validateNode_validateInternalStructure(Node node,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return node.validateInternalStructure(diagnostics, context);
 	}
 
@@ -21175,7 +21296,7 @@
 	 * @generated
 	 */
 	public boolean validateDevice(Device device, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(device,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21244,7 +21365,7 @@
 	 */
 	public boolean validateExecutionEnvironment(
 			ExecutionEnvironment executionEnvironment,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(
 			executionEnvironment, diagnostics, context);
 		if (result || diagnostics != null)
@@ -21314,7 +21435,7 @@
 	 */
 	public boolean validateCommunicationPath(
 			CommunicationPath communicationPath, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(communicationPath,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21385,7 +21506,7 @@
 	 */
 	public boolean validateCommunicationPath_validateAssociationEnds(
 			CommunicationPath communicationPath, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO override the constraint, if desired
 		// -> uncomment the scaffolding
 		// -> specify the condition that violates the constraint
@@ -21415,7 +21536,7 @@
 	 * @generated
 	 */
 	public boolean validateFinalState(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(finalState,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21494,7 +21615,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateNoOutgoingTransitions(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalState.validateNoOutgoingTransitions(diagnostics, context);
 	}
 
@@ -21505,7 +21627,7 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateNoRegions(FinalState finalState,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return finalState.validateNoRegions(diagnostics, context);
 	}
 
@@ -21516,7 +21638,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateCannotReferenceSubmachine(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalState.validateCannotReferenceSubmachine(diagnostics,
 			context);
 	}
@@ -21528,7 +21651,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateNoEntryBehavior(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalState.validateNoEntryBehavior(diagnostics, context);
 	}
 
@@ -21539,7 +21663,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateNoExitBehavior(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalState.validateNoExitBehavior(diagnostics, context);
 	}
 
@@ -21550,7 +21675,8 @@
 	 * @generated
 	 */
 	public boolean validateFinalState_validateNoStateBehavior(
-			FinalState finalState, DiagnosticChain diagnostics, Map context) {
+			FinalState finalState, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return finalState.validateNoStateBehavior(diagnostics, context);
 	}
 
@@ -21560,7 +21686,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeEvent(TimeEvent timeEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(timeEvent,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21603,7 +21729,8 @@
 	 * @generated
 	 */
 	public boolean validateTimeEvent_validateWhenNonNegative(
-			TimeEvent timeEvent, DiagnosticChain diagnostics, Map context) {
+			TimeEvent timeEvent, DiagnosticChain diagnostics,
+			Map<Object, Object> context) {
 		return timeEvent.validateWhenNonNegative(diagnostics, context);
 	}
 
@@ -21614,7 +21741,7 @@
 	 * @generated
 	 */
 	public boolean validateTimeEvent_validateStartingTime(TimeEvent timeEvent,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return timeEvent.validateStartingTime(diagnostics, context);
 	}
 
@@ -21625,7 +21752,7 @@
 	 */
 	public boolean validateProtocolTransition(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(protocolTransition,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21702,7 +21829,7 @@
 	 */
 	public boolean validateProtocolTransition_validateBelongsToPsm(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return protocolTransition.validateBelongsToPsm(diagnostics, context);
 	}
 
@@ -21714,7 +21841,7 @@
 	 */
 	public boolean validateProtocolTransition_validateAssociatedActions(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return protocolTransition.validateAssociatedActions(diagnostics,
 			context);
 	}
@@ -21727,7 +21854,7 @@
 	 */
 	public boolean validateProtocolTransition_validateRefersToOperation(
 			ProtocolTransition protocolTransition, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return protocolTransition.validateRefersToOperation(diagnostics,
 			context);
 	}
@@ -21738,7 +21865,7 @@
 	 * @generated
 	 */
 	public boolean validateAssociationClass(AssociationClass associationClass,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validate_EveryMultiplicityConforms(associationClass,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21821,7 +21948,7 @@
 	 */
 	public boolean validateAssociationClass_validateCannotBeDefined(
 			AssociationClass associationClass, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return associationClass.validateCannotBeDefined(diagnostics, context);
 	}
 
@@ -21831,7 +21958,7 @@
 	 * @generated
 	 */
 	public boolean validateVisibilityKind(VisibilityKind visibilityKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21842,7 +21969,7 @@
 	 */
 	public boolean validateCallConcurrencyKind(
 			CallConcurrencyKind callConcurrencyKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21852,7 +21979,7 @@
 	 * @generated
 	 */
 	public boolean validateTransitionKind(TransitionKind transitionKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		boolean result = validateTransitionKind_state_is_local(transitionKind,
 			diagnostics, context);
 		if (result || diagnostics != null)
@@ -21869,7 +21996,7 @@
 	 */
 	public boolean validateTransitionKind_state_is_local(
 			TransitionKind transitionKind, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO implement the constraint
 		// -> specify the condition that violates the constraint
 		// -> verify the diagnostic details, including severity, code, and message
@@ -21899,7 +22026,7 @@
 	 */
 	public boolean validateTransitionKind_state_is_external(
 			TransitionKind transitionKind, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		// TODO implement the constraint
 		// -> specify the condition that violates the constraint
 		// -> verify the diagnostic details, including severity, code, and message
@@ -21927,7 +22054,7 @@
 	 * @generated
 	 */
 	public boolean validatePseudostateKind(PseudostateKind pseudostateKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21937,7 +22064,7 @@
 	 * @generated
 	 */
 	public boolean validateAggregationKind(AggregationKind aggregationKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21948,7 +22075,7 @@
 	 */
 	public boolean validateParameterDirectionKind(
 			ParameterDirectionKind parameterDirectionKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21959,7 +22086,7 @@
 	 */
 	public boolean validateParameterEffectKind(
 			ParameterEffectKind parameterEffectKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21969,7 +22096,7 @@
 	 * @generated
 	 */
 	public boolean validateConnectorKind(ConnectorKind connectorKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21979,7 +22106,7 @@
 	 * @generated
 	 */
 	public boolean validateMessageKind(MessageKind messageKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -21989,7 +22116,7 @@
 	 * @generated
 	 */
 	public boolean validateMessageSort(MessageSort messageSort,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22000,7 +22127,7 @@
 	 */
 	public boolean validateObjectNodeOrderingKind(
 			ObjectNodeOrderingKind objectNodeOrderingKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22011,7 +22138,7 @@
 	 */
 	public boolean validateInteractionOperatorKind(
 			InteractionOperatorKind interactionOperatorKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22021,7 +22148,7 @@
 	 * @generated
 	 */
 	public boolean validateExpansionKind(ExpansionKind expansionKind,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22031,7 +22158,7 @@
 	 * @generated
 	 */
 	public boolean validateInteger(int integer, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22041,7 +22168,7 @@
 	 * @generated
 	 */
 	public boolean validateBoolean(boolean boolean_,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22051,7 +22178,7 @@
 	 * @generated
 	 */
 	public boolean validateString(String string, DiagnosticChain diagnostics,
-			Map context) {
+			Map<Object, Object> context) {
 		return true;
 	}
 
@@ -22061,7 +22188,7 @@
 	 * @generated
 	 */
 	public boolean validateUnlimitedNatural(int unlimitedNatural,
-			DiagnosticChain diagnostics, Map context) {
+			DiagnosticChain diagnostics, Map<Object, Object> context) {
 		return true;
 	}