diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamedElement_nameExpression_StringExpression.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamedElement_nameExpression_StringExpression.gif
index 44f0110..2b1ee54 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamedElement_nameExpression_StringExpression.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamedElement_nameExpression_StringExpression.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_elementImport_ElementImport.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_elementImport_ElementImport.gif
index 9802cd8..108f9ef 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_elementImport_ElementImport.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_elementImport_ElementImport.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_Constraint.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_Constraint.gif
index f4ede70..5088a75 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_Constraint.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_Constraint.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_DurationConstraint.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_DurationConstraint.gif
index 11e5060..782de4d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_DurationConstraint.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_DurationConstraint.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_InteractionConstraint.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_InteractionConstraint.gif
index 23a06fe..be45fa2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_InteractionConstraint.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_InteractionConstraint.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_IntervalConstraint.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_IntervalConstraint.gif
index 767ee93..016d7b2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_IntervalConstraint.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_IntervalConstraint.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_TimeConstraint.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_TimeConstraint.gif
index 7de015c..08dc2cf 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_TimeConstraint.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_ownedRule_TimeConstraint.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_PackageImport.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_PackageImport.gif
index 7c274c1..9ea9362 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_PackageImport.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_PackageImport.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_ProfileApplication.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_ProfileApplication.gif
index 9d35f86..d22ab85 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_ProfileApplication.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateNamespace_packageImport_ProfileApplication.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_RedefinableTemplateSignature.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_RedefinableTemplateSignature.gif
index dd62060..d650810 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_RedefinableTemplateSignature.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_RedefinableTemplateSignature.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_TemplateSignature.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_TemplateSignature.gif
index 0f88251..6e55e2f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_TemplateSignature.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_ownedTemplateSignature_TemplateSignature.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_templateBinding_TemplateBinding.gif b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_templateBinding_TemplateBinding.gif
index 0f88251..6e55e2f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_templateBinding_TemplateBinding.gif
+++ b/deprecated/plugins/org.eclipse.uml2.edit/icons/full/ctool16/CreateTemplateableElement_templateBinding_TemplateBinding.gif
Binary files differ
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AbstractionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AbstractionItemProvider.java
index 0e52c17..981434a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AbstractionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AbstractionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AbstractionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: AbstractionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptCallActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptCallActionItemProvider.java
index 9ee7388..396af35 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptCallActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptCallActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AcceptCallActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: AcceptCallActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptEventActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptEventActionItemProvider.java
index a798532..daf165b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptEventActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AcceptEventActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AcceptEventActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: AcceptEventActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActionItemProvider.java
index aa8ee9e..e75e1ee 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -240,8 +240,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityEdgeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityEdgeItemProvider.java
index 74dd453..f1b3694 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityEdgeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityEdgeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityEdgeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityEdgeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -272,8 +272,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityFinalNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityFinalNodeItemProvider.java
index 3cf9047..4935b11 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityFinalNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityFinalNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityFinalNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityFinalNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityGroupItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityGroupItemProvider.java
index a21034a..dc1f478 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityGroupItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityGroupItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityGroupItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityGroupItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -112,8 +112,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityItemProvider.java
index 0805f7c..85185b5 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ActivityItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -302,8 +302,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -460,16 +460,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getActivity_Node(),
-				 UML2Factory.eINSTANCE.createExpansionNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getActivity_Node(),
-				 UML2Factory.eINSTANCE.createExpansionRegion()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getActivity_Node(),
 				 UML2Factory.eINSTANCE.createCreateObjectAction()));
 
 		newChildDescriptors.add
@@ -580,7 +570,22 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getActivity_Node(),
-				 UML2Factory.eINSTANCE.createDataStoreNode()));
+				 UML2Factory.eINSTANCE.createExpansionNode()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getActivity_Node(),
+				 UML2Factory.eINSTANCE.createExpansionRegion()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getActivity_Node(),
+				 UML2Factory.eINSTANCE.createTimeObservationAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getActivity_Node(),
+				 UML2Factory.eINSTANCE.createDurationObservationAction()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -640,12 +645,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getActivity_Node(),
-				 UML2Factory.eINSTANCE.createTimeObservationAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getActivity_Node(),
-				 UML2Factory.eINSTANCE.createDurationObservationAction()));
+				 UML2Factory.eINSTANCE.createDataStoreNode()));
 	}
 
 	/**
@@ -658,10 +658,10 @@
 		boolean qualify =
 			feature == UML2Package.eINSTANCE.getActivity_Group() ||
 			feature == UML2Package.eINSTANCE.getActivity_Node() ||
-			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
-			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
+			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
+			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityNodeItemProvider.java
index 9597c3f..cb1da90 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -200,8 +200,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityParameterNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityParameterNodeItemProvider.java
index 2e98322..935bb95 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityParameterNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityParameterNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityParameterNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityParameterNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityPartitionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityPartitionItemProvider.java
index 152cd0c..18fa57d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityPartitionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActivityPartitionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityPartitionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActivityPartitionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -241,8 +241,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActorItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActorItemProvider.java
index 0e89a93..dd38cb6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActorItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ActorItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActorItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ActorItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddStructuralFeatureValueActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddStructuralFeatureValueActionItemProvider.java
index 72e5be2..5b03ea5 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddStructuralFeatureValueActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddStructuralFeatureValueActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AddStructuralFeatureValueActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: AddStructuralFeatureValueActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -155,8 +155,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddVariableValueActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddVariableValueActionItemProvider.java
index 99d6ce7..93a0b6d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddVariableValueActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AddVariableValueActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AddVariableValueActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: AddVariableValueActionItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -155,8 +155,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AnyTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AnyTriggerItemProvider.java
index f59ffc8..8cbca41 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AnyTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AnyTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AnyTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: AnyTriggerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ApplyFunctionActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ApplyFunctionActionItemProvider.java
index ca57d34..7c595e3 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ApplyFunctionActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ApplyFunctionActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ApplyFunctionActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ApplyFunctionActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ArtifactItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ArtifactItemProvider.java
index 22537d6..1ee0144 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ArtifactItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ArtifactItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ArtifactItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ArtifactItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -234,8 +234,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationClassItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationClassItemProvider.java
index a4fee91..1c9a7a6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationClassItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationClassItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AssociationClassItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: AssociationClassItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -213,8 +213,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -267,12 +267,12 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
 			feature == UML2Package.eINSTANCE.getAssociation_OwnedEnd() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationItemProvider.java
index 56e7112..4826ff3 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/AssociationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AssociationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: AssociationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -213,8 +213,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehaviorItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehaviorItemProvider.java
index e446cce..61e2c87 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehaviorItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehaviorItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BehaviorItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: BehaviorItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -264,8 +264,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -308,11 +308,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioralFeatureItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioralFeatureItemProvider.java
index a74ec21..8e6890c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioralFeatureItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioralFeatureItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BehavioralFeatureItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: BehavioralFeatureItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -328,8 +328,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioredClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioredClassifierItemProvider.java
index 634e888..7403ade 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioredClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BehavioredClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BehavioredClassifierItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: BehavioredClassifierItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -214,8 +214,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BroadcastSignalActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BroadcastSignalActionItemProvider.java
index e3c9a9f..06f15f7 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BroadcastSignalActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/BroadcastSignalActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BroadcastSignalActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: BroadcastSignalActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallActionItemProvider.java
index cfbd6ed..ab0952d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CallActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CallActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -155,8 +155,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallBehaviorActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallBehaviorActionItemProvider.java
index c16457e..7f4c01a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallBehaviorActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallBehaviorActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CallBehaviorActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CallBehaviorActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallOperationActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallOperationActionItemProvider.java
index d299e1a..71fa653 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallOperationActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallOperationActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CallOperationActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: CallOperationActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallTriggerItemProvider.java
index 1021503..e224dbc 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CallTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CallTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CallTriggerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CentralBufferNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CentralBufferNodeItemProvider.java
index 0707ea2..201cf59 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CentralBufferNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CentralBufferNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CentralBufferNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CentralBufferNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ChangeTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ChangeTriggerItemProvider.java
index 7dcf0bf..dd937ae 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ChangeTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ChangeTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ChangeTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ChangeTriggerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassItemProvider.java
index ab6eefe..9245c62 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClassItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ClassItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -325,8 +325,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -438,7 +438,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -448,12 +448,12 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInterface()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -468,7 +468,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createInterface()));
+				 UML2Factory.eINSTANCE.createArtifact()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -493,6 +493,11 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
+				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
 				 UML2Factory.eINSTANCE.createComponent()));
 
 		newChildDescriptors.add
@@ -518,11 +523,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getClass_NestedClassifier(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 
 		newChildDescriptors.add
@@ -539,11 +539,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierItemProvider.java
index 76e0d30..9e4d0ff 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClassifierItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ClassifierItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -443,8 +443,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierTemplateParameterItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierTemplateParameterItemProvider.java
index bf16c39..ecb0138 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierTemplateParameterItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClassifierTemplateParameterItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClassifierTemplateParameterItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ClassifierTemplateParameterItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -117,8 +117,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClauseItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClauseItemProvider.java
index 8c70e15..cef6945 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClauseItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClauseItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClauseItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ClauseItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -197,8 +197,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearAssociationActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearAssociationActionItemProvider.java
index 914fdf4..892e59e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearAssociationActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearAssociationActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClearAssociationActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ClearAssociationActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearStructuralFeatureActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearStructuralFeatureActionItemProvider.java
index 398ced9..812abaa 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearStructuralFeatureActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearStructuralFeatureActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClearStructuralFeatureActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ClearStructuralFeatureActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearVariableActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearVariableActionItemProvider.java
index f5b5747..e1d75b1 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearVariableActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ClearVariableActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClearVariableActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ClearVariableActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationItemProvider.java
index 123fdc4..ae0cd19 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CollaborationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CollaborationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -222,8 +222,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationOccurrenceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationOccurrenceItemProvider.java
index 54415e3..8a9f368 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationOccurrenceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CollaborationOccurrenceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CollaborationOccurrenceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CollaborationOccurrenceItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -214,12 +214,12 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getCollaborationOccurrence_RoleBinding(),
-				 UML2Factory.eINSTANCE.createManifestation()));
+				 UML2Factory.eINSTANCE.createImplementation()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getCollaborationOccurrence_RoleBinding(),
-				 UML2Factory.eINSTANCE.createImplementation()));
+				 UML2Factory.eINSTANCE.createManifestation()));
 
 		newChildDescriptors.add
 			(createChildParameter
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CombinedFragmentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CombinedFragmentItemProvider.java
index 5183dc4..c6430bb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CombinedFragmentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CombinedFragmentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CombinedFragmentItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CombinedFragmentItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -189,8 +189,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommentItemProvider.java
index 2b8a694..1df6699 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CommentItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CommentItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -172,8 +172,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommunicationPathItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommunicationPathItemProvider.java
index 3ec94a4..5cda8ff 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommunicationPathItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CommunicationPathItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CommunicationPathItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CommunicationPathItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ComponentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ComponentItemProvider.java
index 93c0b6c..2942b0d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ComponentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ComponentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ComponentItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ComponentItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -228,8 +228,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -337,11 +337,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createModel()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDependency()));
 
 		newChildDescriptors.add
@@ -372,12 +367,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createGeneralizationSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -387,17 +377,27 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createModel()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createManifestation()));
+				 UML2Factory.eINSTANCE.createGeneralizationSet()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createInterface()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createImplementation()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -412,12 +412,12 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInterface()));
+				 UML2Factory.eINSTANCE.createArtifact()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createImplementation()));
+				 UML2Factory.eINSTANCE.createManifestation()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -462,21 +462,41 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInteractionConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
 				 UML2Factory.eINSTANCE.createStateMachine()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createInteractionConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
 				 UML2Factory.eINSTANCE.createComponent()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createIntervalConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createTimeConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
+				 UML2Factory.eINSTANCE.createDurationConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDeployment()));
 
 		newChildDescriptors.add
@@ -502,26 +522,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createIntervalConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createTimeConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
-				 UML2Factory.eINSTANCE.createDurationConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getComponent_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 	}
 
@@ -533,17 +533,17 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
+			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
 			feature == UML2Package.eINSTANCE.getComponent_OwnedMember() ||
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
-			feature == UML2Package.eINSTANCE.getComponent_Realization() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
 			feature == UML2Package.eINSTANCE.getClassifier_Substitution() ||
-			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_Implementation();
+			feature == UML2Package.eINSTANCE.getComponent_Realization() ||
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_Implementation() ||
+			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
 			new Object[] { getTypeText(child), getFeatureText(feature), getTypeText(owner) });
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConditionalNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConditionalNodeItemProvider.java
index a991b56..85e9048 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConditionalNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConditionalNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConditionalNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConditionalNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -207,8 +207,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementItemProvider.java
index faf1f75..a4b185e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConnectableElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConnectableElementItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -143,8 +143,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementTemplateParameterItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementTemplateParameterItemProvider.java
index 604b05c..3f03d46 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementTemplateParameterItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectableElementTemplateParameterItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConnectableElementTemplateParameterItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConnectableElementTemplateParameterItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -93,8 +93,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectionPointReferenceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectionPointReferenceItemProvider.java
index 4c9c07b..bfd8652 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectionPointReferenceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectionPointReferenceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConnectionPointReferenceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConnectionPointReferenceItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorEndItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorEndItemProvider.java
index 31bdda4..3a2664f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorEndItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorEndItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConnectorEndItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConnectorEndItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -148,8 +148,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorItemProvider.java
index 8f45219..4e557e5 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConnectorItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConnectorItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConnectorItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -206,8 +206,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConstraintItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConstraintItemProvider.java
index 4d7e77b..1792d81 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConstraintItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ConstraintItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ConstraintItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ConstraintItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -171,8 +171,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ContinuationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ContinuationItemProvider.java
index 7c59b9a..e5d605d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ContinuationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ContinuationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ContinuationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ContinuationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlFlowItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlFlowItemProvider.java
index a390c03..3413e3a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlFlowItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlFlowItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ControlFlowItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ControlFlowItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlNodeItemProvider.java
index 4cdb423..2007d9a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ControlNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ControlNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ControlNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkActionItemProvider.java
index 193b497..c94a870 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CreateLinkActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CreateLinkActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkObjectActionItemProvider.java
index 34eb566..8e6899d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateLinkObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CreateLinkObjectActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CreateLinkObjectActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateObjectActionItemProvider.java
index cdb6c32..b7206f4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/CreateObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CreateObjectActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: CreateObjectActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataStoreNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataStoreNodeItemProvider.java
index a8b2312..5ac6e64 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataStoreNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataStoreNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DataStoreNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DataStoreNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataTypeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataTypeItemProvider.java
index 8341296..cc05e1c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataTypeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DataTypeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DataTypeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DataTypeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -172,8 +172,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DecisionNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DecisionNodeItemProvider.java
index 683ec51..f07cbe2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DecisionNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DecisionNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DecisionNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DecisionNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DependencyItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DependencyItemProvider.java
index 33191ad..3e07b74 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DependencyItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DependencyItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DependencyItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DependencyItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -184,8 +184,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeployedArtifactItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeployedArtifactItemProvider.java
index 91a8bee..dad559a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeployedArtifactItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeployedArtifactItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeployedArtifactItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DeployedArtifactItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentItemProvider.java
index 0b0b4dd..01bf6da 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeploymentItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DeploymentItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -162,8 +162,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentSpecificationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentSpecificationItemProvider.java
index da4b681..1f85ae6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentSpecificationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentSpecificationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeploymentSpecificationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DeploymentSpecificationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -137,8 +137,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentTargetItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentTargetItemProvider.java
index a819d0f..980c581 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentTargetItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeploymentTargetItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeploymentTargetItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DeploymentTargetItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -161,8 +161,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyLinkActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyLinkActionItemProvider.java
index 248a1e3..e0de194 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyLinkActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyLinkActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DestroyLinkActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DestroyLinkActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyObjectActionItemProvider.java
index 3d448a0..62825f4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DestroyObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DestroyObjectActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DestroyObjectActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeviceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeviceItemProvider.java
index 1446bb6..58ab15e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeviceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DeviceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeviceItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: DeviceItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -127,12 +127,12 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
-			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
+			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DirectedRelationshipItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DirectedRelationshipItemProvider.java
index 9ef6877..12524b3 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DirectedRelationshipItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DirectedRelationshipItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DirectedRelationshipItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DirectedRelationshipItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -129,8 +129,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationConstraintItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationConstraintItemProvider.java
index 6b4c9f6..f9e0293 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationConstraintItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationConstraintItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DurationConstraintItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DurationConstraintItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationIntervalItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationIntervalItemProvider.java
index eec5d21..99de93a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationIntervalItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationIntervalItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DurationIntervalItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DurationIntervalItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationItemProvider.java
index 341fe0b..e6d70df 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DurationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: DurationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -136,8 +136,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationObservationActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationObservationActionItemProvider.java
index ab18af6..9975326 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationObservationActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/DurationObservationActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DurationObservationActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: DurationObservationActionItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementImportItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementImportItemProvider.java
index 398b09f..7ec8793 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementImportItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementImportItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ElementImportItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ElementImportItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -156,8 +156,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementItemProvider.java
index 3cda47f..6c992df 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ElementItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -170,8 +170,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EncapsulatedClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EncapsulatedClassifierItemProvider.java
index f9c005d..41f8317 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EncapsulatedClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EncapsulatedClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EncapsulatedClassifierItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: EncapsulatedClassifierItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationItemProvider.java
index 4e775c2..423f561 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EnumerationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: EnumerationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationLiteralItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationLiteralItemProvider.java
index a2a8629..b4db227 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationLiteralItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EnumerationLiteralItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EnumerationLiteralItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: EnumerationLiteralItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EventOccurrenceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EventOccurrenceItemProvider.java
index e6cb875..8e4824b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EventOccurrenceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/EventOccurrenceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EventOccurrenceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: EventOccurrenceItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -201,8 +201,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExceptionHandlerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExceptionHandlerItemProvider.java
index e9b8056..dc7a977 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExceptionHandlerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExceptionHandlerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExceptionHandlerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExceptionHandlerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -146,8 +146,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutableNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutableNodeItemProvider.java
index c465ffb..35e1068 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutableNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutableNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExecutableNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExecutableNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionEnvironmentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionEnvironmentItemProvider.java
index 9a50eb3..102424c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionEnvironmentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionEnvironmentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExecutionEnvironmentItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ExecutionEnvironmentItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -127,12 +127,12 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
-			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
+			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionOccurrenceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionOccurrenceItemProvider.java
index 9284e46..cc9b9dd 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionOccurrenceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExecutionOccurrenceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExecutionOccurrenceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExecutionOccurrenceItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -150,8 +150,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionNodeItemProvider.java
index 0a909aa..f54802a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExpansionNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExpansionNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionRegionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionRegionItemProvider.java
index dee3e87..6dd8dad 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionRegionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpansionRegionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExpansionRegionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExpansionRegionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -153,8 +153,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpressionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpressionItemProvider.java
index 068a1ac..4de1bcb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpressionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExpressionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExpressionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExpressionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -155,8 +155,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtendItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtendItemProvider.java
index bdfe1ed..5a76f54 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtendItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtendItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExtendItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExtendItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -222,8 +222,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionEndItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionEndItemProvider.java
index e3dc440..325e189 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionEndItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionEndItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExtensionEndItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExtensionEndItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionItemProvider.java
index 1d00206..d5c8ceb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExtensionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExtensionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -136,8 +136,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionPointItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionPointItemProvider.java
index 32fef22..8bed407 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionPointItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ExtensionPointItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExtensionPointItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ExtensionPointItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FeatureItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FeatureItemProvider.java
index c302ee3..e3c3a20 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FeatureItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FeatureItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: FeatureItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: FeatureItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -136,8 +136,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalNodeItemProvider.java
index 3132516..5714ea4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: FinalNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: FinalNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalStateItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalStateItemProvider.java
index 993844f..7b0cb1d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalStateItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FinalStateItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: FinalStateItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: FinalStateItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FlowFinalNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FlowFinalNodeItemProvider.java
index e51a096..c1eb266 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FlowFinalNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/FlowFinalNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: FlowFinalNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: FlowFinalNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ForkNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ForkNodeItemProvider.java
index c721bcb..88624b2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ForkNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ForkNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ForkNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ForkNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GateItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GateItemProvider.java
index 8ea92df..f763c0c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GateItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GateItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: GateItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: GateItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralOrderingItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralOrderingItemProvider.java
index a32c38a..1099f54 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralOrderingItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralOrderingItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: GeneralOrderingItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: GeneralOrderingItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationItemProvider.java
index d24ef9b..7b4eace 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: GeneralizationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: GeneralizationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -151,8 +151,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationSetItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationSetItemProvider.java
index 3fd0e18..c93853e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationSetItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/GeneralizationSetItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: GeneralizationSetItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: GeneralizationSetItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -171,8 +171,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ImplementationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ImplementationItemProvider.java
index 145d05f..7385d48 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ImplementationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ImplementationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ImplementationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ImplementationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -122,8 +122,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IncludeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IncludeItemProvider.java
index 990a4cb..fd0b16b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IncludeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IncludeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: IncludeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: IncludeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -167,8 +167,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationFlowItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationFlowItemProvider.java
index 4d52ce3..d39f135 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationFlowItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationFlowItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InformationFlowItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InformationFlowItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -129,8 +129,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationItemItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationItemItemProvider.java
index 2fb2c1f..1c86ae0 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationItemItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InformationItemItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InformationItemItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InformationItemItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InitialNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InitialNodeItemProvider.java
index 9481fbf..27378f8 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InitialNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InitialNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InitialNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InitialNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InputPinItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InputPinItemProvider.java
index 9923a84..e57621a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InputPinItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InputPinItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InputPinItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InputPinItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceSpecificationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceSpecificationItemProvider.java
index f68404d..543457e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceSpecificationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceSpecificationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InstanceSpecificationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InstanceSpecificationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -230,8 +230,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceValueItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceValueItemProvider.java
index 5d4deb1..7a6ec23 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceValueItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InstanceValueItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InstanceValueItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InstanceValueItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionConstraintItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionConstraintItemProvider.java
index da7583c..717c9e6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionConstraintItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionConstraintItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionConstraintItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InteractionConstraintItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -172,8 +172,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionFragmentItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionFragmentItemProvider.java
index 01c46f5..dc8a7fd 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionFragmentItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionFragmentItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionFragmentItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InteractionFragmentItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionItemProvider.java
index 9fac828..2c3a9c0 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: InteractionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -248,8 +248,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -358,13 +358,13 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
+			feature == UML2Package.eINSTANCE.getInteraction_Fragment() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
-			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase() ||
-			feature == UML2Package.eINSTANCE.getInteraction_Fragment();
+			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
 			new Object[] { getTypeText(child), getFeatureText(feature), getTypeText(owner) });
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOccurrenceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOccurrenceItemProvider.java
index fe40eab..af952b4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOccurrenceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOccurrenceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionOccurrenceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InteractionOccurrenceItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOperandItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOperandItemProvider.java
index 5e57956..31968e1 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOperandItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InteractionOperandItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionOperandItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InteractionOperandItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -210,8 +210,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterfaceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterfaceItemProvider.java
index aa348da..94bd867 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterfaceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterfaceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InterfaceItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: InterfaceItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -248,8 +248,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -337,7 +337,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -347,12 +347,12 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInterface()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -367,7 +367,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createInterface()));
+				 UML2Factory.eINSTANCE.createArtifact()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -392,6 +392,11 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
+				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
 				 UML2Factory.eINSTANCE.createComponent()));
 
 		newChildDescriptors.add
@@ -417,11 +422,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
-				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getInterface_NestedClassifier(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 
 		newChildDescriptors.add
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterruptibleActivityRegionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterruptibleActivityRegionItemProvider.java
index 56ea4cc..3ed7c9f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterruptibleActivityRegionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InterruptibleActivityRegionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InterruptibleActivityRegionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InterruptibleActivityRegionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -129,8 +129,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalConstraintItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalConstraintItemProvider.java
index 8d6c681..47d81ff 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalConstraintItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalConstraintItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: IntervalConstraintItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: IntervalConstraintItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalItemProvider.java
index 4f44f3c..6a858b2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/IntervalItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: IntervalItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: IntervalItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InvocationActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InvocationActionItemProvider.java
index 673dd79..9ab9d98 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InvocationActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/InvocationActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InvocationActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: InvocationActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/JoinNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/JoinNodeItemProvider.java
index 9da155c..4a32e6b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/JoinNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/JoinNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: JoinNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: JoinNodeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -156,8 +156,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LifelineItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LifelineItemProvider.java
index efbdb67..e79b0f0 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LifelineItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LifelineItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LifelineItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: LifelineItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkActionItemProvider.java
index 84ebabc..3aaaeb6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LinkActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LinkActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndCreationDataItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndCreationDataItemProvider.java
index a385f20..1cc224f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndCreationDataItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndCreationDataItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LinkEndCreationDataItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LinkEndCreationDataItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -134,8 +134,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndDataItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndDataItemProvider.java
index 2877bc4..74881d1 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndDataItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LinkEndDataItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LinkEndDataItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LinkEndDataItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -168,8 +168,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralBooleanItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralBooleanItemProvider.java
index e0678cc..c349cf8 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralBooleanItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralBooleanItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralBooleanItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralBooleanItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralIntegerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralIntegerItemProvider.java
index 72185e0..ffdeab6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralIntegerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralIntegerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralIntegerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralIntegerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralNullItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralNullItemProvider.java
index 7231c0d..7e6b79a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralNullItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralNullItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralNullItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralNullItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralSpecificationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralSpecificationItemProvider.java
index d09d983..c31ecaa 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralSpecificationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralSpecificationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralSpecificationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralSpecificationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralStringItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralStringItemProvider.java
index 2f9fc5c..3a3aa3c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralStringItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralStringItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralStringItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralStringItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralUnlimitedNaturalItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralUnlimitedNaturalItemProvider.java
index 95e3f6e..863ee8a 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralUnlimitedNaturalItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LiteralUnlimitedNaturalItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LiteralUnlimitedNaturalItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: LiteralUnlimitedNaturalItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LoopNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LoopNodeItemProvider.java
index 2914165..34f53a2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LoopNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/LoopNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: LoopNodeItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: LoopNodeItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -294,8 +294,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -355,11 +355,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
-			feature == UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode() ||
-			feature == UML2Package.eINSTANCE.getLoopNode_LoopVariableInput() ||
 			feature == UML2Package.eINSTANCE.getAction_LocalPrecondition() ||
 			feature == UML2Package.eINSTANCE.getAction_LocalPostcondition() ||
 			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
+			feature == UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode() ||
+			feature == UML2Package.eINSTANCE.getLoopNode_LoopVariableInput() ||
 			feature == UML2Package.eINSTANCE.getLoopNode_Result() ||
 			feature == UML2Package.eINSTANCE.getLoopNode_LoopVariable();
 		return getString(
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ManifestationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ManifestationItemProvider.java
index 02af1ed..51ee968 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ManifestationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ManifestationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ManifestationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ManifestationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -122,8 +122,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MergeNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MergeNodeItemProvider.java
index cfbe0cd..555807c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MergeNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MergeNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: MergeNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: MergeNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageEndItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageEndItemProvider.java
index 77c95ee..ab8ac52 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageEndItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageEndItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: MessageEndItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: MessageEndItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageItemProvider.java
index 9645e10..df729cc 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: MessageItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: MessageItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -241,8 +241,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageTriggerItemProvider.java
index df916e9..fb7e5e0 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MessageTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: MessageTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: MessageTriggerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ModelItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ModelItemProvider.java
index 831322d..7b99667 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ModelItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ModelItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ModelItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ModelItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -155,10 +155,10 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
-			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
-			feature == UML2Package.eINSTANCE.getPackage_PackageExtension() ||
 			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
-			feature == UML2Package.eINSTANCE.getPackage_OwnedMember();
+			feature == UML2Package.eINSTANCE.getPackage_OwnedMember() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageExtension();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
 			new Object[] { getTypeText(child), getFeatureText(feature), getTypeText(owner) });
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MultiplicityElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MultiplicityElementItemProvider.java
index 0fda547..148378f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MultiplicityElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/MultiplicityElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: MultiplicityElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: MultiplicityElementItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -241,8 +241,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamedElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamedElementItemProvider.java
index 1778595..ff1e9eb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamedElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamedElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: NamedElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: NamedElementItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -208,8 +208,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamespaceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamespaceItemProvider.java
index 3357710..ffdd012 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamespaceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NamespaceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: NamespaceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: NamespaceItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -225,8 +225,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NodeItemProvider.java
index 45c07c2..4d98779 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/NodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: NodeItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: NodeItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -193,8 +193,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -250,12 +250,12 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
-			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
+			feature == UML2Package.eINSTANCE.getNode_NestedNode() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectFlowItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectFlowItemProvider.java
index 73cb0d2..98a76df 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectFlowItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectFlowItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ObjectFlowItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ObjectFlowItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -171,8 +171,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectNodeItemProvider.java
index 5ba7206..626793e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ObjectNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ObjectNodeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ObjectNodeItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -206,8 +206,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OpaqueExpressionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OpaqueExpressionItemProvider.java
index 66a1ca6..d297dd6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OpaqueExpressionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OpaqueExpressionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OpaqueExpressionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: OpaqueExpressionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -171,8 +171,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationItemProvider.java
index f1b1f28..95c5328 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OperationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: OperationItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -400,8 +400,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationTemplateParameterItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationTemplateParameterItemProvider.java
index dac8213..c0a174b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationTemplateParameterItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OperationTemplateParameterItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OperationTemplateParameterItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: OperationTemplateParameterItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -93,8 +93,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OutputPinItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OutputPinItemProvider.java
index 5a6deed..4127dda 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OutputPinItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/OutputPinItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: OutputPinItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: OutputPinItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageImportItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageImportItemProvider.java
index e82f858..a810413 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageImportItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageImportItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PackageImportItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PackageImportItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageItemProvider.java
index f1fc0b6..baf6e3e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PackageItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: PackageItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -301,8 +301,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -396,11 +396,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createModel()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDependency()));
 
 		newChildDescriptors.add
@@ -431,12 +426,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createGeneralizationSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -446,17 +436,27 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createModel()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createManifestation()));
+				 UML2Factory.eINSTANCE.createGeneralizationSet()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createInterface()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createImplementation()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -471,12 +471,12 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInterface()));
+				 UML2Factory.eINSTANCE.createArtifact()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createImplementation()));
+				 UML2Factory.eINSTANCE.createManifestation()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -521,21 +521,41 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createInteractionConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
 				 UML2Factory.eINSTANCE.createStateMachine()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createInteractionConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
 				 UML2Factory.eINSTANCE.createComponent()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createIntervalConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createTimeConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
+				 UML2Factory.eINSTANCE.createDurationConstraint()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDeployment()));
 
 		newChildDescriptors.add
@@ -561,26 +581,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createProtocolStateMachine()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createIntervalConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createTimeConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
-				 UML2Factory.eINSTANCE.createDurationConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getPackage_OwnedMember(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 
 		newChildDescriptors.add
@@ -602,10 +602,10 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
-			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
-			feature == UML2Package.eINSTANCE.getPackage_PackageExtension() ||
 			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
-			feature == UML2Package.eINSTANCE.getPackage_OwnedMember();
+			feature == UML2Package.eINSTANCE.getPackage_OwnedMember() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageExtension();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
 			new Object[] { getTypeText(child), getFeatureText(feature), getTypeText(owner) });
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageMergeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageMergeItemProvider.java
index 5b32eb0..a111e51 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageMergeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageMergeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PackageMergeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PackageMergeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -112,8 +112,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageableElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageableElementItemProvider.java
index d96fa02..2b5c72e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageableElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PackageableElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PackageableElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PackageableElementItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -146,8 +146,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterItemProvider.java
index 683d85c..0bde5fb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ParameterItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ParameterItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -387,8 +387,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterSetItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterSetItemProvider.java
index 2d42341..6a4ba11 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterSetItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterSetItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ParameterSetItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ParameterSetItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableClassifierItemProvider.java
index 2c229c4..57692d2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ParameterableClassifierItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ParameterableClassifierItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableElementItemProvider.java
index ba9df20..f7bf100 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ParameterableElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ParameterableElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ParameterableElementItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -122,8 +122,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PartDecompositionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PartDecompositionItemProvider.java
index 2bf2ff7..50899b5 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PartDecompositionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PartDecompositionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PartDecompositionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PartDecompositionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PermissionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PermissionItemProvider.java
index 73eaac0..1034761 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PermissionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PermissionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PermissionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PermissionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PinItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PinItemProvider.java
index 9a34a4d..1c38f42 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PinItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PinItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PinItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PinItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PortItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PortItemProvider.java
index bbeea38..3973ee7 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PortItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PortItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PortItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PortItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -205,8 +205,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveFunctionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveFunctionItemProvider.java
index 9f54375..b130307 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveFunctionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveFunctionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PrimitiveFunctionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PrimitiveFunctionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -137,8 +137,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveTypeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveTypeItemProvider.java
index b1cf715..b0b3b0f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveTypeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PrimitiveTypeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PrimitiveTypeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PrimitiveTypeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileApplicationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileApplicationItemProvider.java
index 3138964..2c9ffb1 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileApplicationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileApplicationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProfileApplicationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ProfileApplicationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -124,8 +124,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileItemProvider.java
index 60a6295..1d4db87 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProfileItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProfileItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ProfileItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -157,8 +157,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -187,10 +187,10 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
-			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
-			feature == UML2Package.eINSTANCE.getPackage_PackageExtension() ||
 			feature == UML2Package.eINSTANCE.getNamespace_OwnedRule() ||
-			feature == UML2Package.eINSTANCE.getPackage_OwnedMember();
+			feature == UML2Package.eINSTANCE.getPackage_OwnedMember() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageMerge() ||
+			feature == UML2Package.eINSTANCE.getPackage_PackageExtension();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
 			new Object[] { getTypeText(child), getFeatureText(feature), getTypeText(owner) });
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PropertyItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PropertyItemProvider.java
index 0effd5e..519ed74 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PropertyItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PropertyItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PropertyItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PropertyItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -430,8 +430,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolConformanceItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolConformanceItemProvider.java
index 164338c..992c243 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolConformanceItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolConformanceItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProtocolConformanceItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ProtocolConformanceItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -112,8 +112,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolStateMachineItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolStateMachineItemProvider.java
index eed046b..ebbd22b 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolStateMachineItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolStateMachineItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProtocolStateMachineItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: ProtocolStateMachineItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -179,11 +179,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolTransitionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolTransitionItemProvider.java
index dd29ced..1777329 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolTransitionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ProtocolTransitionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProtocolTransitionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ProtocolTransitionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -177,8 +177,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PseudostateItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PseudostateItemProvider.java
index 620fdaa..4264c73 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PseudostateItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/PseudostateItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PseudostateItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: PseudostateItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -119,8 +119,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/QualifierValueItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/QualifierValueItemProvider.java
index f3a6645..01028e2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/QualifierValueItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/QualifierValueItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: QualifierValueItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: QualifierValueItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -129,8 +129,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RaiseExceptionActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RaiseExceptionActionItemProvider.java
index 694335c..e4eb349 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RaiseExceptionActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RaiseExceptionActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RaiseExceptionActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RaiseExceptionActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadExtentActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadExtentActionItemProvider.java
index 930ab12..6f18517 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadExtentActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadExtentActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadExtentActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadExtentActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadIsClassifiedObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadIsClassifiedObjectActionItemProvider.java
index 3402234..0d366dd 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadIsClassifiedObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadIsClassifiedObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadIsClassifiedObjectActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadIsClassifiedObjectActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -206,8 +206,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkActionItemProvider.java
index 4ea993e..8b08737 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadLinkActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadLinkActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndActionItemProvider.java
index 49e3287..31e4f77 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadLinkObjectEndActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadLinkObjectEndActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndQualifierActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndQualifierActionItemProvider.java
index 2aafc5e..8ae2536 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndQualifierActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadLinkObjectEndQualifierActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadLinkObjectEndQualifierActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadLinkObjectEndQualifierActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadSelfActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadSelfActionItemProvider.java
index 6cbfc92..b63ddb5 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadSelfActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadSelfActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadSelfActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadSelfActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadStructuralFeatureActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadStructuralFeatureActionItemProvider.java
index 54e322a..df52b62 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadStructuralFeatureActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadStructuralFeatureActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadStructuralFeatureActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadStructuralFeatureActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadVariableActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadVariableActionItemProvider.java
index 33decf5..3fee11f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadVariableActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReadVariableActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReadVariableActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReadVariableActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RealizationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RealizationItemProvider.java
index 12b20b2..ef8171d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RealizationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RealizationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RealizationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RealizationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -122,8 +122,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReceptionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReceptionItemProvider.java
index 8a3eb2f..7099e78 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReceptionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReceptionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReceptionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReceptionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReclassifyObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReclassifyObjectActionItemProvider.java
index d730156..a29d951 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReclassifyObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReclassifyObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReclassifyObjectActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReclassifyObjectActionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -189,8 +189,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableElementItemProvider.java
index aacbe13..240de54 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RedefinableElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RedefinableElementItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -136,8 +136,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableTemplateSignatureItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableTemplateSignatureItemProvider.java
index 08b7866..86048d7 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableTemplateSignatureItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RedefinableTemplateSignatureItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RedefinableTemplateSignatureItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RedefinableTemplateSignatureItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -195,8 +195,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RegionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RegionItemProvider.java
index 17d141e..ff121d4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RegionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RegionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RegionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RegionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RelationshipItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RelationshipItemProvider.java
index 75952c8..0275bd7 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RelationshipItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RelationshipItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RelationshipItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RelationshipItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -112,8 +112,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveStructuralFeatureValueActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveStructuralFeatureValueActionItemProvider.java
index 61e9042..0eeddfb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveStructuralFeatureValueActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveStructuralFeatureValueActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RemoveStructuralFeatureValueActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: RemoveStructuralFeatureValueActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveVariableValueActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveVariableValueActionItemProvider.java
index c2a387e..698c5dd 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveVariableValueActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/RemoveVariableValueActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: RemoveVariableValueActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: RemoveVariableValueActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReplyActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReplyActionItemProvider.java
index 108616b..5d6298e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReplyActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ReplyActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ReplyActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ReplyActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -150,8 +150,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendObjectActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendObjectActionItemProvider.java
index c37ecdb..1d4742f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendObjectActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendObjectActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SendObjectActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: SendObjectActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -172,8 +172,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendSignalActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendSignalActionItemProvider.java
index 0736143..017f01f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendSignalActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SendSignalActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SendSignalActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: SendSignalActionItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalItemProvider.java
index cafc24a..bf267f8 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SignalItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: SignalItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalTriggerItemProvider.java
index e18f3ed..80a83ca 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SignalTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SignalTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: SignalTriggerItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SlotItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SlotItemProvider.java
index 8e4adea..efb2f7f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SlotItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SlotItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SlotItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: SlotItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -151,8 +151,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StartOwnedBehaviorActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StartOwnedBehaviorActionItemProvider.java
index 52a5bfd..3987cc3 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StartOwnedBehaviorActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StartOwnedBehaviorActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StartOwnedBehaviorActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StartOwnedBehaviorActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateInvariantItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateInvariantItemProvider.java
index b5919ee..db52d9d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateInvariantItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateInvariantItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StateInvariantItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StateInvariantItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateItemProvider.java
index b0cb0ee..6dc3324 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StateItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StateItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -408,8 +408,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateMachineItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateMachineItemProvider.java
index ea733cc..d458059 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateMachineItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StateMachineItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StateMachineItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: StateMachineItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -188,8 +188,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -235,11 +235,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StereotypeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StereotypeItemProvider.java
index 8db2651..c439d74 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StereotypeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StereotypeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StereotypeItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: StereotypeItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -127,11 +127,11 @@
 	 */
 	public String getCreateChildText(Object owner, Object feature, Object child, Collection selection) {
 		boolean qualify =
+			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
+			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getStructuredClassifier_OwnedAttribute() ||
 			feature == UML2Package.eINSTANCE.getEncapsulatedClassifier_OwnedPort() ||
-			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedBehavior() ||
 			feature == UML2Package.eINSTANCE.getBehavioredClassifier_OwnedStateMachine() ||
-			feature == UML2Package.eINSTANCE.getClass_NestedClassifier() ||
 			feature == UML2Package.eINSTANCE.getClassifier_OwnedUseCase();
 		return getString(
 			qualify ? "_UI_CreateChild_text2" : "_UI_CreateChild_text", //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StopItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StopItemProvider.java
index 684ecfa..fcc3357 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StopItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StopItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StopItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StopItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StringExpressionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StringExpressionItemProvider.java
index 4cd3e98..646b735 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StringExpressionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StringExpressionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StringExpressionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StringExpressionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -135,8 +135,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureActionItemProvider.java
index e72bdb4..543bcae 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StructuralFeatureActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StructuralFeatureActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -154,8 +154,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureItemProvider.java
index 7b3061c..f939e68 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuralFeatureItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StructuralFeatureItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StructuralFeatureItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -278,8 +278,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredActivityNodeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredActivityNodeItemProvider.java
index 78af35b..9111ef3 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredActivityNodeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredActivityNodeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StructuredActivityNodeItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: StructuredActivityNodeItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -320,8 +320,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -483,16 +483,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
-				 UML2Factory.eINSTANCE.createExpansionNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
-				 UML2Factory.eINSTANCE.createExpansionRegion()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
 				 UML2Factory.eINSTANCE.createCreateObjectAction()));
 
 		newChildDescriptors.add
@@ -603,7 +593,22 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
-				 UML2Factory.eINSTANCE.createDataStoreNode()));
+				 UML2Factory.eINSTANCE.createExpansionNode()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
+				 UML2Factory.eINSTANCE.createExpansionRegion()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
+				 UML2Factory.eINSTANCE.createTimeObservationAction()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
+				 UML2Factory.eINSTANCE.createDurationObservationAction()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -663,12 +668,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
-				 UML2Factory.eINSTANCE.createTimeObservationAction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getStructuredActivityNode_ContainedNode(),
-				 UML2Factory.eINSTANCE.createDurationObservationAction()));
+				 UML2Factory.eINSTANCE.createDataStoreNode()));
 
 		newChildDescriptors.add
 			(createChildParameter
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredClassifierItemProvider.java
index ddf27d5..d917e2d 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/StructuredClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StructuredClassifierItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: StructuredClassifierItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -205,8 +205,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SubstitutionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SubstitutionItemProvider.java
index 4214324..eb97587 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SubstitutionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/SubstitutionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SubstitutionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: SubstitutionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -122,8 +122,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateBindingItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateBindingItemProvider.java
index a5e858f..6896de7 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateBindingItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateBindingItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateBindingItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TemplateBindingItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -151,8 +151,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterItemProvider.java
index fdaa6fb..af4fbd6 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: TemplateParameterItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -206,8 +206,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -237,6 +237,16 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createOpaqueExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createClass()));
 
 		newChildDescriptors.add
@@ -287,12 +297,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createOpaqueExpression()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createExpression()));
+				 UML2Factory.eINSTANCE.createConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -322,11 +327,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createInstanceValue()));
 
 		newChildDescriptors.add
@@ -357,11 +357,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createModel()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createDependency()));
 
 		newChildDescriptors.add
@@ -392,12 +387,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createGeneralizationSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -407,27 +397,17 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createModel()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createManifestation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createActor()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createUseCase()));
+				 UML2Factory.eINSTANCE.createGeneralizationSet()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -442,12 +422,32 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createActor()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createUseCase()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createArtifact()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createManifestation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createCollaboration()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createVariable()));
+				 UML2Factory.eINSTANCE.createInteraction()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -457,11 +457,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createInteraction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createCallTrigger()));
 
 		newChildDescriptors.add
@@ -492,7 +487,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createInteractionConstraint()));
+				 UML2Factory.eINSTANCE.createVariable()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -502,32 +497,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createComponent()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createDeployment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createDevice()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
-				 UML2Factory.eINSTANCE.createCommunicationPath()));
+				 UML2Factory.eINSTANCE.createInteractionConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -537,6 +507,11 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createComponent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createTimeExpression()));
 
 		newChildDescriptors.add
@@ -577,11 +552,46 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createDeployment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createNode()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createDevice()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
+				 UML2Factory.eINSTANCE.createCommunicationPath()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedParameteredElement(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createOpaqueExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createClass()));
 
 		newChildDescriptors.add
@@ -632,12 +642,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createOpaqueExpression()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createExpression()));
+				 UML2Factory.eINSTANCE.createConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -667,11 +672,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createInstanceValue()));
 
 		newChildDescriptors.add
@@ -702,11 +702,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createModel()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createDependency()));
 
 		newChildDescriptors.add
@@ -737,12 +732,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createGeneralizationSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -752,27 +742,17 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createModel()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createManifestation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createActor()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createUseCase()));
+				 UML2Factory.eINSTANCE.createGeneralizationSet()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -787,12 +767,32 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createActor()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createUseCase()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createArtifact()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createManifestation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createCollaboration()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createVariable()));
+				 UML2Factory.eINSTANCE.createInteraction()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -802,11 +802,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createInteraction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createCallTrigger()));
 
 		newChildDescriptors.add
@@ -837,7 +832,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createInteractionConstraint()));
+				 UML2Factory.eINSTANCE.createVariable()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -847,32 +842,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createComponent()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createDeployment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createDevice()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
-				 UML2Factory.eINSTANCE.createCommunicationPath()));
+				 UML2Factory.eINSTANCE.createInteractionConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -882,6 +852,11 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createComponent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createTimeExpression()));
 
 		newChildDescriptors.add
@@ -922,6 +897,31 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createDeployment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createNode()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createDevice()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
+				 UML2Factory.eINSTANCE.createCommunicationPath()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameter_OwnedDefault(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 	}
 
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterSubstitutionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterSubstitutionItemProvider.java
index f2df7c7..f6a9bdf 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterSubstitutionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateParameterSubstitutionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: TemplateParameterSubstitutionItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -34,6 +34,8 @@
 import org.eclipse.uml2.TemplateParameterSubstitution;
 import org.eclipse.uml2.UML2Factory;
 import org.eclipse.uml2.UML2Package;
+import org.eclipse.uml2.edit.internal.command.SubsetAddCommand;
+import org.eclipse.uml2.edit.internal.command.SubsetReplaceCommand;
 import org.eclipse.uml2.edit.internal.command.SubsetSetCommand;
 import org.eclipse.uml2.edit.internal.command.SupersetRemoveCommand;
 import org.eclipse.uml2.edit.internal.command.SupersetReplaceCommand;
@@ -174,8 +176,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -204,6 +206,16 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createOpaqueExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createClass()));
 
 		newChildDescriptors.add
@@ -254,12 +266,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createOpaqueExpression()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createExpression()));
+				 UML2Factory.eINSTANCE.createConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -289,11 +296,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createConstraint()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createInstanceValue()));
 
 		newChildDescriptors.add
@@ -324,11 +326,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createModel()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createDependency()));
 
 		newChildDescriptors.add
@@ -359,12 +356,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createGeneralizationSet()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createInformationItem()));
+				 UML2Factory.eINSTANCE.createActivity()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -374,27 +366,17 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createActivity()));
+				 UML2Factory.eINSTANCE.createModel()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createArtifact()));
+				 UML2Factory.eINSTANCE.createInformationItem()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createManifestation()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createActor()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createUseCase()));
+				 UML2Factory.eINSTANCE.createGeneralizationSet()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -409,12 +391,32 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createActor()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createUseCase()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createArtifact()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createManifestation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createCollaboration()));
 
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createVariable()));
+				 UML2Factory.eINSTANCE.createInteraction()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -424,11 +426,6 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createInteraction()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createCallTrigger()));
 
 		newChildDescriptors.add
@@ -459,7 +456,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createInteractionConstraint()));
+				 UML2Factory.eINSTANCE.createVariable()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -469,32 +466,7 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createComponent()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createDeployment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createNode()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createDevice()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
-
-		newChildDescriptors.add
-			(createChildParameter
-				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
-				 UML2Factory.eINSTANCE.createCommunicationPath()));
+				 UML2Factory.eINSTANCE.createInteractionConstraint()));
 
 		newChildDescriptors.add
 			(createChildParameter
@@ -504,6 +476,11 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createComponent()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createTimeExpression()));
 
 		newChildDescriptors.add
@@ -544,6 +521,31 @@
 		newChildDescriptors.add
 			(createChildParameter
 				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createDeployment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createNode()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createDevice()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createExecutionEnvironment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+				 UML2Factory.eINSTANCE.createCommunicationPath()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
 				 UML2Factory.eINSTANCE.createDeploymentSpecification()));
 	}
 
@@ -558,6 +560,19 @@
 	}
 
 	/**
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Command createAddCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Collection collection, int index) {
+		if (feature == UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual()) {
+			return new SubsetAddCommand(domain, owner, feature, new EStructuralFeature[] {UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual()}, collection, index);
+		}
+		return super.createAddCommand(domain, owner, feature, collection, index);
+	}
+
+	/**
 	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -577,22 +592,12 @@
 	 * @generated
 	 */
 	protected Command createReplaceCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, EObject value, Collection collection) {
+		if (feature == UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual()) {
+			return new SubsetReplaceCommand(domain, owner, feature, new EStructuralFeature[] {UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual()}, value, collection);
+		}
 		if (feature == UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual()) {
 			return new SupersetReplaceCommand(domain, owner, feature, new EStructuralFeature[] {UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual()}, value, collection);
 		}
 		return super.createReplaceCommand(domain, owner, feature, value, collection);
 	}
-
-	/**
-	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected Command createSetCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Object value) {
-		if (feature == UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual()) {
-			return new SubsetSetCommand(domain, owner, feature, new EStructuralFeature[] {UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual()}, value);
-		}
-		return super.createSetCommand(domain, owner, feature, value);
-	}
 }
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateSignatureItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateSignatureItemProvider.java
index aa5a21b..6045d98 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateSignatureItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateSignatureItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateSignatureItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TemplateSignatureItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -192,8 +192,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableClassifierItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableClassifierItemProvider.java
index af7965f..0d6a14e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableClassifierItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableClassifierItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateableClassifierItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TemplateableClassifierItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableElementItemProvider.java
index ebd4d26..5827521 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TemplateableElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateableElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TemplateableElementItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -169,8 +169,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TestIdentityActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TestIdentityActionItemProvider.java
index d8dfc6a..19f29fa 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TestIdentityActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TestIdentityActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TestIdentityActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: TestIdentityActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -192,8 +192,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeConstraintItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeConstraintItemProvider.java
index 2753c83..03e93d8 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeConstraintItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeConstraintItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TimeConstraintItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TimeConstraintItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeExpressionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeExpressionItemProvider.java
index d580556..809453f 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeExpressionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeExpressionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TimeExpressionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TimeExpressionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -136,8 +136,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeIntervalItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeIntervalItemProvider.java
index 03d0abd..e79ea1e 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeIntervalItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeIntervalItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TimeIntervalItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TimeIntervalItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeObservationActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeObservationActionItemProvider.java
index 4bb980e..2b7a4cb 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeObservationActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeObservationActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TimeObservationActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: TimeObservationActionItemProvider.java,v 1.5 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeTriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeTriggerItemProvider.java
index e9de890..3ff5ba2 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeTriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TimeTriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TimeTriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TimeTriggerItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -155,8 +155,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TransitionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TransitionItemProvider.java
index 9a417e6..e167136 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TransitionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TransitionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TransitionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TransitionItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -257,8 +257,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TriggerItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TriggerItemProvider.java
index 142c24a..826ba13 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TriggerItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TriggerItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TriggerItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TriggerItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypeItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypeItemProvider.java
index 7f4555a..6f52c01 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypeItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypeItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TypeItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TypeItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypedElementItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypedElementItemProvider.java
index 683a58b..cf82751 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypedElementItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/TypedElementItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TypedElementItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: TypedElementItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UsageItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UsageItemProvider.java
index 35c607b..e290911 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UsageItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UsageItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UsageItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: UsageItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -96,8 +96,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UseCaseItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UseCaseItemProvider.java
index cb755bc..35146b8 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UseCaseItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/UseCaseItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UseCaseItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: UseCaseItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -208,8 +208,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValuePinItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValuePinItemProvider.java
index b7600bd..91e8101 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValuePinItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValuePinItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ValuePinItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ValuePinItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValueSpecificationItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValueSpecificationItemProvider.java
index 3deb01f..10d9d54 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValueSpecificationItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/ValueSpecificationItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ValueSpecificationItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: ValueSpecificationItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -126,8 +126,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableActionItemProvider.java
index 3d0f1ba..1fdd8d4 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: VariableActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: VariableActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableItemProvider.java
index 955429b..826661c 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VariableItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: VariableItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: VariableItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -116,8 +116,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VertexItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VertexItemProvider.java
index 56a00e0..c39a930 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VertexItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/VertexItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: VertexItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: VertexItemProvider.java,v 1.4 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -133,8 +133,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteLinkActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteLinkActionItemProvider.java
index 7b40797..d1a4786 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteLinkActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteLinkActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: WriteLinkActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: WriteLinkActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -97,8 +97,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteStructuralFeatureActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteStructuralFeatureActionItemProvider.java
index 32bc43a..7a22d30 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteStructuralFeatureActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteStructuralFeatureActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: WriteStructuralFeatureActionItemProvider.java,v 1.4 2004/04/23 02:26:00 khussey Exp $
+ * $Id: WriteStructuralFeatureActionItemProvider.java,v 1.5 2004/04/30 17:20:12 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteVariableActionItemProvider.java b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteVariableActionItemProvider.java
index 4c219c5..1961795 100644
--- a/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteVariableActionItemProvider.java
+++ b/deprecated/plugins/org.eclipse.uml2.edit/src/org/eclipse/uml2/provider/WriteVariableActionItemProvider.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: WriteVariableActionItemProvider.java,v 1.3 2004/04/14 20:45:54 khussey Exp $
+ * $Id: WriteVariableActionItemProvider.java,v 1.4 2004/04/30 17:20:11 khussey Exp $
  */
 package org.eclipse.uml2.provider;
 
@@ -138,8 +138,8 @@
 	}
 
 	/**
-	 * This handles model notifications by updating any cached children and by
-	 * creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
diff --git a/deprecated/plugins/org.eclipse.uml2.editor/src/org/eclipse/uml2/presentation/UML2ActionBarContributor.java b/deprecated/plugins/org.eclipse.uml2.editor/src/org/eclipse/uml2/presentation/UML2ActionBarContributor.java
index 1423ae7..a715070 100644
--- a/deprecated/plugins/org.eclipse.uml2.editor/src/org/eclipse/uml2/presentation/UML2ActionBarContributor.java
+++ b/deprecated/plugins/org.eclipse.uml2.editor/src/org/eclipse/uml2/presentation/UML2ActionBarContributor.java
@@ -8,16 +8,19 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2ActionBarContributor.java,v 1.3 2004/04/14 20:45:21 khussey Exp $
+ * $Id: UML2ActionBarContributor.java,v 1.4 2004/04/30 17:18:18 khussey Exp $
  */
 package org.eclipse.uml2.presentation;
 
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
 
 import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor;
+import org.eclipse.emf.edit.ui.action.LoadResourceAction;
+
 import org.eclipse.emf.edit.ui.action.CreateChildAction;
 import org.eclipse.emf.edit.ui.action.CreateSiblingAction;
 
@@ -91,14 +94,14 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected IAction showPropertiesViewAction = 
+	protected IAction showPropertiesViewAction =
 		new Action(UML2EditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) //$NON-NLS-1$
 		{
 			public void run() {
 				try {
 					getPage().showView("org.eclipse.ui.views.PropertySheet"); //$NON-NLS-1$
 				}
-				catch(PartInitException exception) {
+				catch (PartInitException exception) {
 					UML2EditorPlugin.INSTANCE.log(exception);
 				}
 			}
@@ -106,18 +109,18 @@
 
 	/**
 	 * This action refreshes the viewer of the current editor if the editor
-	 * implements {@link IViewerProvider}.
+	 * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected IAction refreshViewerAction = 
+	protected IAction refreshViewerAction =
 		new Action(UML2EditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) //$NON-NLS-1$
 		{
 			public boolean isEnabled() {
 				return activeEditorPart instanceof IViewerProvider;
 			}
-			
+
 			public void run() {
 				if (activeEditorPart instanceof IViewerProvider) {
 					Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer();
@@ -129,7 +132,7 @@
 		};
 
 	/**
-	 * This will contain one {@link CreateChildAction} corresponding to each descriptor
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor
 	 * generated for the current selection by the item provider.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -146,7 +149,7 @@
 	protected IMenuManager createChildMenuManager;
 
 	/**
-	 * This will contain one {@link CreateSiblingAction} corresponding to each descriptor
+	 * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor
 	 * generated for the current selection by the item provider.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -169,7 +172,7 @@
 	 * @generated
 	 */
 	public UML2ActionBarContributor() {
-		super();
+		loadResourceAction = new LoadResourceAction();
 	}
 
 	/**
@@ -212,9 +215,7 @@
 	}
 
 	/**
-	 * When the active editor changes,
-	 * this remembers the change,
-	 * and registers with it as a selection provider.
+	 * When the active editor changes, this remembers the change and registers with it as a selection provider.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -244,8 +245,8 @@
 	}
 
 	/**
-	 * This implements {@link ISelectionChangedListener},
-	 * handling {@link SelectionChangedEvent}s by querying for the children and siblings
+	 * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener},
+	 * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings
 	 * that can be added to the selected object and updating the menus accordingly.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -270,8 +271,7 @@
 		if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) {
 			Object object = ((IStructuredSelection)selection).getFirstElement();
 
-			EditingDomain domain =
-				((IEditingDomainProvider) activeEditorPart).getEditingDomain();
+			EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain();
 
 			newChildDescriptors = domain.getNewChildDescriptors(object, null);
 			newSiblingDescriptors = domain.getNewChildDescriptors(null, object);
@@ -293,14 +293,14 @@
 	}
 
 	/**
-	 * This generates a {@link CreateChildAction} for each object in <code>descriptors</code>,
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>,
 	 * and returns the collection of these actions.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected Collection generateCreateChildActions(Collection descriptors, ISelection selection) {
-		Collection actions = new LinkedList();
+		Collection actions = new ArrayList();
 		if (descriptors != null) {
 			for (Iterator i = descriptors.iterator(); i.hasNext(); ) {
 				actions.add(new CreateChildAction(activeEditorPart, selection, i.next()));
@@ -310,14 +310,14 @@
 	}
 
 	/**
-	 * This generates a {@link CreateSiblingAction} for each object in <code>descriptors</code>,
+	 * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>,
 	 * and returns the collection of these actions.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected Collection generateCreateSiblingActions(Collection descriptors, ISelection selection) {
-		Collection actions = new LinkedList();
+		Collection actions = new ArrayList();
 		if (descriptors != null) {
 			for (Iterator i = descriptors.iterator(); i.hasNext(); ) {
 				actions.add(new CreateSiblingAction(activeEditorPart, selection, i.next()));
@@ -327,8 +327,8 @@
 	}
 
 	/**
-	 * This populates the specified <code>manager</code> with {@link ActionContributionItem}s
-	 * based on the {@link IAction}s contained in the <code>actions</code> collection,
+	 * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection,
 	 * by inserting them before the specified contribution item <code>contributionID</code>.
 	 * If <code>ID</code> is <code>null</code>, they are simply added.
 	 * <!-- begin-user-doc -->
@@ -338,7 +338,7 @@
 	protected void populateManager(IContributionManager manager, Collection actions, String contributionID) {
 		if (actions != null) {
 			for (Iterator i = actions.iterator(); i.hasNext(); ) {
-				IAction action = (IAction) i.next();
+				IAction action = (IAction)i.next();
 				if (contributionID != null) {
 					manager.insertBefore(contributionID, action);
 				}
@@ -350,8 +350,8 @@
 	}
 		
 	/**
-	 * This removes from the specified <code>manager</code> all {@link ActionContributionItem}s
-	 * based on the {@link IAction}s contained in the <code>actions</code> collection.
+	 * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s
+	 * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
@@ -370,7 +370,7 @@
 				// Delete the ActionContributionItems with matching action.
 				//
 				if (contributionItem instanceof ActionContributionItem) {
-					IAction action = ((ActionContributionItem) contributionItem).getAction();
+					IAction action = ((ActionContributionItem)contributionItem).getAction();
 					if (actions.contains(action)) {
 						manager.remove(contributionItem);
 					}
@@ -386,8 +386,6 @@
 	 * @generated
 	 */
 	public void menuAboutToShow(IMenuManager menuManager) {
-		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());
-		
 		super.menuAboutToShow(menuManager);
 		MenuManager submenuManager = null;
 
@@ -398,9 +396,11 @@
 		submenuManager = new MenuManager(UML2EditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); //$NON-NLS-1$
 		populateManager(submenuManager, createSiblingActions, null);
 		menuManager.insertBefore("additions", submenuManager); //$NON-NLS-1$
-		
-		menuManager.insertAfter("additions-end", new Separator("ui-actions")); //$NON-NLS-2$
+
+		menuManager.insertAfter("additions-end", new Separator("ui-actions")); //$NON-NLS-1$ //$NON-NLS-2$
 		menuManager.insertAfter("ui-actions", showPropertiesViewAction); //$NON-NLS-1$
+
+		refreshViewerAction.setEnabled(refreshViewerAction.isEnabled());		
 		menuManager.insertAfter("ui-actions", refreshViewerAction); //$NON-NLS-1$
 	}
 }
diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore b/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
index 9a14b30..6e1e045 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2.ecore
@@ -170,6 +170,284 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//TemplateableElement">
+    <eOperations name="validateNoName" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()&#xD;&#xA;&#x9;implies self.qualifiedName->isEmpty()&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="validateQualifiedName" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xD;&#xA;self.qualifiedName =&#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |&#xD;&#xA;&#x9;&#x9;ns.name->union(self.separator())->union(result))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (List) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);&#xD;&#xA;}"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.namespace->isEmpty()&#xD;&#xA;then Sequence{}&#xD;&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="isDistinguishableFrom" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xD;&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="n" eType="#//NamedElement"/>
+      <eParameters name="ns" eType="#//Namespace"/>
+    </eOperations>
+    <eOperations name="separator" eType="#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;'::'&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="qualifiedName" eType="#//String">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xD;&#xA;then &#xD;&#xA;    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xD;&#xA;else&#xD;&#xA;    Set{}&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="validateVisibilityNeedsOwnership" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="namespace"/>
+        <details key="eType" value="org.eclipse.uml2.Namespace"/>
+        <details key="eOpposite" value="ownedMember"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
+      </eAnnotations>
+      <eAnnotations source="union"/>
+    </eOperations>
+    <eOperations name="getOwner" ordered="false" eType="#//Element">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="owner"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="ownedElement"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//NamedElement/getNamespace"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//NamedElement/nameExpression"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
+        defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
+        eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
+        eType="#//VisibilityKind"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
+        upperBound="-1" eType="#//Dependency" volatile="true" eOpposite="#//Dependency/client"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
+        eType="#//StringExpression" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
+    <eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;membersAreDistinguishable()&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.ownedMember->includes(element)&#xD;&#xA;then Set{}->include(element.name)&#xD;&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xD;&#xA;    if elementImports->notEmpty()&#xD;&#xA;    then elementImports->collect(el | el.getName())&#xD;&#xA;    else &#xD;&#xA;        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xD;&#xA;    endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="element" eType="#//NamedElement"/>
+    </eOperations>
+    <eOperations name="membersAreDistinguishable" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.member->forAll( memb |&#xD;&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xD;&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="validateImportedMemberDerived" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);&#xD;&#xA;}"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//Set">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="imps" eType="#//Set"/>
+    </eOperations>
+    <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//Set">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="imps" eType="#//Set"/>
+    </eOperations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Namespace/ownedRule"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/elementImport #//Namespace/packageImport"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
+        upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/importedMember.1"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
+        upperBound="-1" eType="#//Constraint" volatile="true" containment="true" eOpposite="#//Constraint/namespace">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
+        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
+        upperBound="-1" eType="#//ElementImport" volatile="true" containment="true"
+        eOpposite="#//ElementImport/importingNamespace">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
+        upperBound="-1" eType="#//PackageImport" volatile="true" containment="true"
+        eOpposite="#//PackageImport/importingNamespace">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//TemplateableElement">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Comment/bodyExpression"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
+        defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
+        upperBound="-1" eType="#//Element"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" ordered="false"
+        eType="#//StringExpression" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
+      eSuperTypes="#//Relationship">
+    <eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="relatedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//DirectedRelationship/source #//DirectedRelationship/target"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union"/>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="OpaqueExpression" eSuperTypes="#//ValueSpecification">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
         defaultValueLiteral=""/>
@@ -242,31 +520,6 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Comment" eSuperTypes="#//TemplateableElement">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Comment/bodyExpression"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" eType="#//String"
-        defaultValueLiteral=""/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" ordered="false"
-        upperBound="-1" eType="#//Element"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyExpression" ordered="false"
-        eType="#//StringExpression" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="#//EncapsulatedClassifier #//BehavioredClassifier">
     <eOperations name="inherit" ordered="false" upperBound="-1" eType="#//Set">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -950,112 +1203,6 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSet" ordered="false"
         upperBound="-1" eType="#//ParameterSet" eOpposite="#//ParameterSet/parameter"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//TemplateableElement">
-    <eOperations name="validateNoName" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()&#xD;&#xA;&#x9;implies self.qualifiedName->isEmpty()&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="validateQualifiedName" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies&#xD;&#xA;self.qualifiedName =&#xD;&#xA; self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |&#xD;&#xA;&#x9;&#x9;ns.name->union(self.separator())->union(result))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="allNamespaces" unique="false" upperBound="-1" eType="#//Sequence">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;allNamespaces&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (List) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);&#xD;&#xA;}"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.namespace->isEmpty()&#xD;&#xA;then Sequence{}&#xD;&#xA;else self.namespace.allNamespaces()->prepend(self.namespace)&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="isDistinguishableFrom" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)&#xD;&#xA;then ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()&#xD;&#xA;else true&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="n" eType="#//NamedElement"/>
-      <eParameters name="ns" eType="#//Namespace"/>
-    </eOperations>
-    <eOperations name="separator" eType="#//String">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;'::'&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="qualifiedName" eType="#//String">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()&#xD;&#xA;then &#xD;&#xA;    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))&#xD;&#xA;else&#xD;&#xA;    Set{}&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="validateVisibilityNeedsOwnership" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;namespace->isEmpty() implies visibility->isEmpty()&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="namespace"/>
-        <details key="eType" value="org.eclipse.uml2.Namespace"/>
-        <details key="eOpposite" value="ownedMember"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-      <eAnnotations source="union"/>
-    </eOperations>
-    <eOperations name="getOwner" ordered="false" eType="#//Element">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="owner"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="ownedElement"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//NamedElement/getNamespace"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//NamedElement/nameExpression"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" eType="#//String"
-        defaultValueLiteral=""/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" ordered="false"
-        eType="#//String" changeable="false" volatile="true" transient="true" defaultValueLiteral=""
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="visibility" ordered="false"
-        eType="#//VisibilityKind"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="clientDependency" ordered="false"
-        upperBound="-1" eType="#//Dependency" volatile="true" eOpposite="#//Dependency/client"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="nameExpression" ordered="false"
-        eType="#//StringExpression" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="#//Namespace #//PackageableElement">
     <eOperations name="validateElementsPublicOrPrivate" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1269,153 +1416,6 @@
     </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PrimitiveType" eSuperTypes="#//DataType"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Namespace" abstract="true" eSuperTypes="#//NamedElement">
-    <eOperations name="validateMembersAreDistinguishable" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;membersAreDistinguishable()&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="getNamesOfMember" ordered="false" upperBound="-1" eType="#//Set">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;if self.ownedMember->includes(element)&#xD;&#xA;then Set{}->include(element.name)&#xD;&#xA;else let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in&#xD;&#xA;    if elementImports->notEmpty()&#xD;&#xA;    then elementImports->collect(el | el.getName())&#xD;&#xA;    else &#xD;&#xA;        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))&#xD;&#xA;    endif&#xD;&#xA;endif&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="element" eType="#//NamedElement"/>
-    </eOperations>
-    <eOperations name="membersAreDistinguishable" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.member->forAll( memb |&#xD;&#xA;&#x9;self.member->excluding(memb)->forAll(other |&#xD;&#xA;&#x9;&#x9;memb.isDistinguishableFrom(other, self)))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="validateImportedMemberDerived" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="importedMember" ordered="false" upperBound="-1" eType="#//Set">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;try {&#xD;&#xA;&#x9;java.lang.reflect.Method method = getClass().getMethod(&quot;importedMember&quot;, new Class[] {}); //$NON-NLS-1$&#xD;&#xA;&#x9;if (!getCacheAdapter().containsKey(this, method)) {&#xD;&#xA;&#x9;&#x9;getCacheAdapter().put(this,&#xD;&#xA;&#x9;&#x9;&#x9;method,&#xD;&#xA;&#x9;&#x9;&#x9;java.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));&#xD;&#xA;&#x9;}&#xD;&#xA;&#x9;return (Set) getCacheAdapter().get(this, method);&#xD;&#xA;} catch (Exception e) {&#xD;&#xA;&#x9;return org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);&#xD;&#xA;}"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="importMembers" ordered="false" upperBound="-1" eType="#//Set">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="imps" eType="#//Set"/>
-    </eOperations>
-    <eOperations name="excludeCollisions" ordered="false" upperBound="-1" eType="#//Set">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;imps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="imps" eType="#//Set"/>
-    </eOperations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Namespace/ownedRule"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/elementImport #//Namespace/packageImport"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="member" ordered="false"
-        upperBound="-1" eType="#//NamedElement" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union" references="#//Namespace/getOwnedMembers #//Namespace/importedMember.1"/>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedRule" ordered="false"
-        upperBound="-1" eType="#//Constraint" volatile="true" containment="true" eOpposite="#//Constraint/namespace">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="importedMember" ordered="false"
-        upperBound="-1" eType="#//PackageableElement" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="elementImport" ordered="false"
-        upperBound="-1" eType="#//ElementImport" volatile="true" containment="true"
-        eOpposite="#//ElementImport/importingNamespace">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="packageImport" ordered="false"
-        upperBound="-1" eType="#//PackageImport" volatile="true" containment="true"
-        eOpposite="#//PackageImport/importingNamespace">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DirectedRelationship" abstract="true"
-      eSuperTypes="#//Relationship">
-    <eOperations name="getRelatedElements" ordered="false" lowerBound="1" upperBound="-1"
-        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="relatedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//DirectedRelationship/source #//DirectedRelationship/target"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union"/>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union"/>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Relationship#getRelatedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Relationship" abstract="true" eSuperTypes="#//Element">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="relatedElement" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Element" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union"/>
-    </eStructuralFeatures>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Constraint" eSuperTypes="#//PackageableElement">
     <eOperations name="validateNotApplyToSelf" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1459,6 +1459,12 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="constrainedElement" upperBound="-1"
         eType="#//Element"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
+    <eLiterals name="public"/>
+    <eLiterals name="private" value="1"/>
+    <eLiterals name="protected" value="2"/>
+    <eLiterals name="package" value="3"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="LiteralBoolean" eSuperTypes="#//LiteralSpecification">
     <eOperations name="isComputable" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1539,12 +1545,6 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
         eType="#//UnlimitedNatural"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="VisibilityKind">
-    <eLiterals name="public"/>
-    <eLiterals name="private" value="1"/>
-    <eLiterals name="protected" value="2"/>
-    <eLiterals name="package" value="3"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Classifier" abstract="true" eSuperTypes="#//Namespace #//Type #//RedefinableElement">
     <eOperations name="allFeatures" ordered="false" upperBound="-1" eType="#//Set">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1736,8 +1736,6 @@
         <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
-        upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="substitution" ordered="false"
         upperBound="-1" eType="#//Substitution" volatile="true" containment="true"
         eOpposite="#//Substitution/substitutingClassifier">
@@ -1746,6 +1744,8 @@
         <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="powertypeExtent" ordered="false"
+        upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/powertype"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ownedUseCase" ordered="false"
         upperBound="-1" eType="#//UseCase" containment="true">
       <eAnnotations source="subsets">
@@ -1892,6 +1892,53 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="generalizationSet" ordered="false"
         upperBound="-1" eType="#//GeneralizationSet" eOpposite="#//GeneralizationSet/generalization"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
+      eSuperTypes="#//NamedElement">
+    <eOperations name="validateRedefinitionContextValid" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionContextValid(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="validateRedefinitionConsistent" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionConsistent(this, diagnostics, context);"/>
+        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eAnnotations source="constraint"/>
+    </eOperations>
+    <eOperations name="isConsistentWith" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isConsistentWith(this, redefinee);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="redefinee" eType="#//RedefinableElement"/>
+    </eOperations>
+    <eOperations name="isRedefinitionContextValid" eType="#//Boolean">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isRedefinitionContextValid(this, redefinable);"/>
+        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinitionContext->exists(c | redefinable.redefinitionContext->exists(r | c.allParents()->includes(r)))&#xD;&#xA;&lt;/code>"/>
+      </eAnnotations>
+      <eParameters name="redefinable" eType="#//RedefinableElement"/>
+    </eOperations>
+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="redefinedElement"/>
+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
+      </eAnnotations>
+      <eAnnotations source="union"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
+        upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
+        derived="true">
+      <eAnnotations source="union"/>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InstanceSpecification" eSuperTypes="#//PackageableElement #//DeploymentTarget #//DeployedArtifact">
     <eOperations name="validateSlotsAreDefined" eType="#//Boolean">
       <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
@@ -1981,53 +2028,6 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="instance" ordered="false"
         lowerBound="1" eType="#//InstanceSpecification"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="RedefinableElement" abstract="true"
-      eSuperTypes="#//NamedElement">
-    <eOperations name="validateRedefinitionContextValid" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionContextValid(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(e | self.isRedefinitionContextValid(e))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="validateRedefinitionConsistent" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL constraint&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.validateRedefinitionConsistent(this, diagnostics, context);"/>
-        <details key="documentation" value="An invariant constraint based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinedElement->forAll(re | re.isConsistentWith(self))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eAnnotations source="constraint"/>
-    </eOperations>
-    <eOperations name="isConsistentWith" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isConsistentWith(this, redefinee);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;false&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="redefinee" eType="#//RedefinableElement"/>
-    </eOperations>
-    <eOperations name="isRedefinitionContextValid" eType="#//Boolean">
-      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-        <details key="body" value="// TODO: test this OCL operation&#xD;&#xA;return org.eclipse.uml2.internal.operation.RedefinableElementOperations.isRedefinitionContextValid(this, redefinable);"/>
-        <details key="documentation" value="A query based on the following OCL expression:&#xD;&#xA;&lt;code>&#xD;&#xA;self.redefinitionContext->exists(c | redefinable.redefinitionContext->exists(r | c.allParents()->includes(r)))&#xD;&#xA;&lt;/code>"/>
-      </eAnnotations>
-      <eParameters name="redefinable" eType="#//RedefinableElement"/>
-    </eOperations>
-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="redefinedElement"/>
-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
-      </eAnnotations>
-      <eAnnotations source="union"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinitionContext" ordered="false"
-        upperBound="-1" eType="#//Classifier" changeable="false" volatile="true" transient="true"
-        derived="true">
-      <eAnnotations source="union"/>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isLeaf" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
       eSuperTypes="#//NamedElement #//ParameterableElement">
     <eOperations name="getVisibility" ordered="false" eType="#//VisibilityKind">
@@ -2422,31 +2422,6 @@
     <eLiterals name="shared" value="1"/>
     <eLiterals name="composite" value="2"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association"/>
-  <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
-        eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
-        upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
-        upperBound="-1" eType="#//Classifier"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//DirectedRelationship">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
-        upperBound="-1" eType="#//Relationship"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Classifier"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
-        eType="#//String" defaultValueLiteral=""/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Permission" eSuperTypes="#//Dependency"/>
   <eClassifiers xsi:type="ecore:EClass" name="Dependency" eSuperTypes="#//PackageableElement #//DirectedRelationship">
     <eStructuralFeatures xsi:type="ecore:EReference" name="client" ordered="false"
@@ -2815,312 +2790,54 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="isReadOnly" ordered="false"
         eType="#//Boolean" defaultValueLiteral="false"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
-    <eOperations name="getOwner" ordered="false" eType="#//Element">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="owner"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="ownedElement"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityEdge/activity"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityEdge/guard #//ActivityEdge/weight"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
-        eType="#//Activity" transient="true" eOpposite="#//Activity/edge">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
-        lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
-        lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
-        upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union" references="#//ActivityEdge/inStructuredNode #//ActivityEdge/inPartition"/>
-      <eAnnotations source="redefined">
-        <details key="eOpposite" value="containedEdge"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge">
-      <eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
-        eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/containedEdge">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
-        upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedEdge">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" ordered="false"
-        eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/interruptingEdge"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
-    <eOperations name="getSubgroups" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="subgroup"/>
-        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
-        <details key="eOpposite" value="superGroup"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-      <eAnnotations source="union"/>
-    </eOperations>
-    <eOperations name="getContainedEdges" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="containedEdge"/>
-        <details key="eType" value="org.eclipse.uml2.ActivityEdge"/>
-        <details key="eOpposite" value="inGroup"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="getContainedNodes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="containedNode"/>
-        <details key="eType" value="org.eclipse.uml2.ActivityNode"/>
-        <details key="eOpposite" value="inGroup"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="getActivity" ordered="false" eType="#//Activity">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="node"/>
-        <details key="eOpposite.containment" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
-    </eOperations>
-    <eOperations name="setActivity" ordered="false">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="node"/>
-        <details key="eOpposite.containment" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
-      <eParameters name="newActivity" eType="#//Activity"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityGroup/getSubgroups"/>
-    </eOperations>
-    <eOperations name="getOwner" ordered="false" eType="#//Element">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="owner"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="ownedElement"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityGroup/superGroup #//ActivityGroup/activityGroup_activity"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
-        eType="#//ActivityGroup" changeable="false" volatile="true" transient="true"
-        derived="true">
-      <eAnnotations source="union"/>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-      <eAnnotations source="redefined">
-        <details key="eOpposite" value="subgroup"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="activityGroup_activity"
-        ordered="false" eType="#//Activity" volatile="true" transient="true" eOpposite="#//Activity/group">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-      <eAnnotations source="redefines">
-        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
-    <eOperations name="getOwner" ordered="false" eType="#//Element">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="owner"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="ownedElement"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityNode/activity"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
-        upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
-        transient="true" derived="true">
-      <eAnnotations source="union" references="#//ActivityNode/inStructuredNode #//ActivityNode/inPartition #//ActivityNode/inInterruptibleRegion"/>
-      <eAnnotations source="redefined">
-        <details key="eOpposite" value="containedNode"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
-        eType="#//Activity" volatile="true" transient="true" eOpposite="#//Activity/node">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
-        upperBound="-1" eType="#//ActivityNode">
-      <eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
-        eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/containedNode">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
-        upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedNode">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
-        ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/containedNode">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//ExecutableNode">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Action/output #//Action/input #//Action/localPrecondition #//Action/localPostcondition"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
+  <eClassifiers xsi:type="ecore:EClass" name="AssociationClass" eSuperTypes="#//Class #//Association"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Model" eSuperTypes="#//Package">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="viewpoint" ordered="false"
         eType="#//String" defaultValueLiteral=""/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
-        eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
-      <eAnnotations source="union"/>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
-        eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
-      <eAnnotations source="union"/>
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
-        eType="#//Classifier" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
-        upperBound="-1" eType="#//Constraint" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
-        upperBound="-1" eType="#//Constraint" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
+  <eClassifiers xsi:type="ecore:EClass" name="InformationItem" eSuperTypes="#//Classifier">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="represented" ordered="false"
+        upperBound="-1" eType="#//Classifier"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InformationFlow" eSuperTypes="#//DirectedRelationship">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+        upperBound="-1" eType="#//Relationship"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="conveyed" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Classifier"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="GeneralizationSet" eSuperTypes="#//PackageableElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCovering" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDisjoint" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="powertype" ordered="false"
+        eType="#//Classifier" eOpposite="#//Classifier/powertypeExtent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="generalization" ordered="false"
+        upperBound="-1" eType="#//Generalization" eOpposite="#//Generalization/generalizationSet"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
+        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" eType="#//ConnectableElement"
+        eOpposite="#//ConnectableElement/end"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
+        eType="#//Property"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
+      eSuperTypes="#//NamedElement #//ParameterableElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"
+        eType="#//ConnectorEnd" eOpposite="#//ConnectorEnd/role"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="redefinedElement"/>
+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Connector/redefinedConnector"/>
+    </eOperations>
     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
@@ -3132,72 +2849,96 @@
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//ObjectNode/upperBound"/>
+      <eAnnotations source="union" references="#//Connector/end"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
-        eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
+        upperBound="-1" eType="#//Connector">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
+        eType="#//ConnectorEnd" containment="true">
       <eAnnotations source="subsets">
         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
-        upperBound="-1" eType="#//State"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
-        eType="#//Behavior"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
+        upperBound="-1" eType="#//Behavior"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
-        eType="#//Behavior"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
-        eType="#//Behavior"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
-        eType="#//Behavior"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+  <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"
+      eSuperTypes="#//Classifier">
+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="attribute"/>
+        <details key="eType" value="org.eclipse.uml2.Property"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
+    </eOperations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
         <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
         <details key="eOpposite.containment" value="false"/>
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//ExecutableNode/handler"/>
+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute #//StructuredClassifier/ownedConnector"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
-        upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
+    <eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="member"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//StructuredClassifier/role"/>
+    </eOperations>
+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="feature"/>
+        <details key="eType" value="org.eclipse.uml2.Feature"/>
+        <details key="eOpposite" value="featuringClassifier"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//StructuredClassifier/ownedConnector"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" ordered="false"
+        upperBound="-1" eType="#//Property" volatile="true" containment="true">
       <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>
+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin"/>
-  <eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Pin" abstract="true" eSuperTypes="#//ObjectNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
-        lowerBound="1" eType="#//Parameter"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
+        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
+        eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
+        derived="true">
+      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
+        upperBound="-1" eType="#//Connector" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Interface" eSuperTypes="#//Classifier">
     <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
@@ -3591,28 +3332,19 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConnectorEnd" eSuperTypes="#//MultiplicityElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="definingEnd" ordered="false"
-        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" eType="#//ConnectableElement"
-        eOpposite="#//ConnectableElement/end"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="partWithPort" ordered="false"
-        eType="#//Property"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConnectableElement" abstract="true"
-      eSuperTypes="#//NamedElement #//ParameterableElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" upperBound="-1"
-        eType="#//ConnectorEnd" eOpposite="#//ConnectorEnd/role"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//Feature">
-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityEdge" abstract="true" eSuperTypes="#//RedefinableElement">
+    <eOperations name="getOwner" ordered="false" eType="#//Element">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="owner"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="ownedElement"/>
+        <details key="eOpposite.containment" value="false"/>
         <details key="containment" value="false"/>
-        <details key="name" value="redefinedElement"/>
-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
+        <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//Connector/redefinedConnector"/>
+      <eAnnotations source="union" references="#//ActivityEdge/activity"/>
     </eOperations>
     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -3625,97 +3357,365 @@
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//Connector/end"/>
+      <eAnnotations source="union" references="#//ActivityEdge/guard #//ActivityEdge/weight"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" eType="#//Association"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedConnector" ordered="false"
-        upperBound="-1" eType="#//Connector">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+        eType="#//Activity" transient="true" eOpposite="#//Activity/edge">
       <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="end" lowerBound="2" upperBound="-1"
-        eType="#//ConnectorEnd" containment="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+        lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/outgoing"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+        lowerBound="1" eType="#//ActivityNode" eOpposite="#//ActivityNode/incoming"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+        upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union" references="#//ActivityEdge/inStructuredNode #//ActivityEdge/inPartition"/>
+      <eAnnotations source="redefined">
+        <details key="eOpposite" value="containedEdge"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true">
       <eAnnotations source="subsets">
         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" eType="#//ConnectorKind"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="contract" ordered="false"
-        upperBound="-1" eType="#//Behavior"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StructuredClassifier" abstract="true"
-      eSuperTypes="#//Classifier">
-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="attribute"/>
-        <details key="eType" value="org.eclipse.uml2.Property"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge">
+      <eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
-    </eOperations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+        eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/containedEdge">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+        upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedEdge">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityEdge#getInGroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="interrupts" ordered="false"
+        eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/interruptingEdge"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityGroup" abstract="true" eSuperTypes="#//Element">
+    <eOperations name="getSubgroups" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
         <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
+        <details key="name" value="subgroup"/>
+        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
+        <details key="eOpposite" value="superGroup"/>
         <details key="eOpposite.containment" value="false"/>
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute #//StructuredClassifier/ownedConnector"/>
-    </eOperations>
-    <eOperations name="getMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="member"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//StructuredClassifier/role"/>
+      <eAnnotations source="union"/>
     </eOperations>
-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+    <eOperations name="getContainedEdges" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
         <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="feature"/>
-        <details key="eType" value="org.eclipse.uml2.Feature"/>
-        <details key="eOpposite" value="featuringClassifier"/>
+        <details key="name" value="containedEdge"/>
+        <details key="eType" value="org.eclipse.uml2.ActivityEdge"/>
+        <details key="eOpposite" value="inGroup"/>
         <details key="eOpposite.containment" value="false"/>
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//StructuredClassifier/ownedConnector"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" ordered="false"
-        upperBound="-1" eType="#//Property" volatile="true" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.StructuredClassifier#getRoles" value=""/>
-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+    <eOperations name="getContainedNodes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="containedNode"/>
+        <details key="eType" value="org.eclipse.uml2.ActivityNode"/>
+        <details key="eOpposite" value="inGroup"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" upperBound="-1"
-        eType="#//Property" changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="role" ordered="false" upperBound="-1"
-        eType="#//ConnectableElement" changeable="false" volatile="true" transient="true"
+    </eOperations>
+    <eOperations name="getActivity" ordered="false" eType="#//Activity">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="node"/>
+        <details key="eOpposite.containment" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
+    </eOperations>
+    <eOperations name="setActivity" ordered="false">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="node"/>
+        <details key="eOpposite.containment" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefined" references="#//ActivityGroup/activityGroup_activity"/>
+      <eParameters name="newActivity" eType="#//Activity"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ActivityGroup/getSubgroups"/>
+    </eOperations>
+    <eOperations name="getOwner" ordered="false" eType="#//Element">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="owner"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="ownedElement"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ActivityGroup/superGroup #//ActivityGroup/activityGroup_activity"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="superGroup" ordered="false"
+        eType="#//ActivityGroup" changeable="false" volatile="true" transient="true"
         derived="true">
-      <eAnnotations source="union" references="#//StructuredClassifier/ownedAttribute"/>
+      <eAnnotations source="union"/>
       <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getMembers" value=""/>
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
+      </eAnnotations>
+      <eAnnotations source="redefined">
+        <details key="eOpposite" value="subgroup"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedConnector" ordered="false"
-        upperBound="-1" eType="#//Connector" containment="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="activityGroup_activity"
+        ordered="false" eType="#//Activity" volatile="true" transient="true" eOpposite="#//Activity/group">
       <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
+      </eAnnotations>
+      <eAnnotations source="redefines">
+        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityNode" abstract="true" eSuperTypes="#//RedefinableElement">
+    <eOperations name="getOwner" ordered="false" eType="#//Element">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="owner"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="ownedElement"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ActivityNode/activity"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoing" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/source"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="incoming" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/target"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inGroup" ordered="false"
+        upperBound="-1" eType="#//ActivityGroup" changeable="false" volatile="true"
+        transient="true" derived="true">
+      <eAnnotations source="union" references="#//ActivityNode/inStructuredNode #//ActivityNode/inPartition #//ActivityNode/inInterruptibleRegion"/>
+      <eAnnotations source="redefined">
+        <details key="eOpposite" value="containedNode"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="activity" ordered="false"
+        eType="#//Activity" volatile="true" transient="true" eOpposite="#//Activity/node">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedElement" ordered="false"
+        upperBound="-1" eType="#//ActivityNode">
+      <eAnnotations source="redefines" references="#//RedefinableElement/getRedefinedElements">
+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inStructuredNode" ordered="false"
+        eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/containedNode">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inPartition" ordered="false"
+        upperBound="-1" eType="#//ActivityPartition" eOpposite="#//ActivityPartition/containedNode">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inInterruptibleRegion"
+        ordered="false" upperBound="-1" eType="#//InterruptibleActivityRegion" eOpposite="#//InterruptibleActivityRegion/containedNode">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityNode#getInGroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Action" eSuperTypes="#//ExecutableNode">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Action/output #//Action/input #//Action/localPrecondition #//Action/localPostcondition"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="effect" ordered="false"
+        eType="#//String" defaultValueLiteral=""/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="output" upperBound="-1"
+        eType="#//OutputPin" changeable="false" volatile="true" transient="true" derived="true">
+      <eAnnotations source="union"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="input" upperBound="-1"
+        eType="#//InputPin" changeable="false" volatile="true" transient="true" derived="true">
+      <eAnnotations source="union"/>
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="context" ordered="false"
+        eType="#//Classifier" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="localPrecondition" ordered="false"
+        upperBound="-1" eType="#//Constraint" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="localPostcondition" ordered="false"
+        upperBound="-1" eType="#//Constraint" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ObjectNode" abstract="true" eSuperTypes="#//ActivityNode #//TypedElement">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ObjectNode/upperBound"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ordering" ordered="false"
+        eType="#//ObjectNodeOrderingKind" defaultValueLiteral="FIFO"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inState" ordered="false"
+        upperBound="-1" eType="#//State"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+        eType="#//Behavior"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ControlNode" abstract="true" eSuperTypes="#//ActivityNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ControlFlow" eSuperTypes="#//ActivityEdge"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ObjectFlow" eSuperTypes="#//ActivityEdge">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulticast" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMultireceive" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="transformation" ordered="false"
+        eType="#//Behavior"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="selection" ordered="false"
+        eType="#//Behavior"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InitialNode" eSuperTypes="#//ControlNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="FinalNode" abstract="true" eSuperTypes="#//ControlNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityFinalNode" eSuperTypes="#//FinalNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="DecisionNode" eSuperTypes="#//ControlNode">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="decisionInput" ordered="false"
+        eType="#//Behavior"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MergeNode" eSuperTypes="#//ControlNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutableNode" abstract="true" eSuperTypes="#//ActivityNode">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ExecutableNode/handler"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="handler" ordered="false"
+        upperBound="-1" eType="#//ExceptionHandler" containment="true" eOpposite="#//ExceptionHandler/protectedNode">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OutputPin" eSuperTypes="#//Pin"/>
+  <eClassifiers xsi:type="ecore:EClass" name="InputPin" eSuperTypes="#//Pin"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Pin" abstract="true" eSuperTypes="#//ObjectNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityParameterNode" eSuperTypes="#//ObjectNode">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+        lowerBound="1" eType="#//Parameter"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ValuePin" eSuperTypes="#//InputPin">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CollaborationOccurrence" eSuperTypes="#//NamedElement">
     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -3756,6 +3756,676 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="The point is that the InteractionConstraint &quot;received&quot; from StructuralArchitecture will consist of a set of such units described by sequence diagrams (or collaboration diagrams)."/>
+    </eAnnotations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Interaction/lifeline #//Interaction/message #//Interaction/formalGate"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
+        upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
+        upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+        eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
+        upperBound="-1" eType="#//Gate" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionFragment" abstract="true"
+      eSuperTypes="#//NamedElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An InteractionFragment is a general class that holds the common parts of CompositeFragment, AtomicFragment and InteractionExpressionOperand.&#xD;&#xA;Conceptually it is very much the same as a full sequence diagram, but a fragment is not named and must be referred then through structure."/>
+    </eAnnotations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//InteractionFragment/generalOrdering"/>
+    </eOperations>
+    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="namespace"/>
+        <details key="eType" value="org.eclipse.uml2.Namespace"/>
+        <details key="eOpposite" value="ownedMember"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//InteractionFragment/enclosingOperand"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
+        upperBound="-1" eType="#//Lifeline" volatile="true" eOpposite="#//Lifeline/coveredBy"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
+        upperBound="-1" eType="#//GeneralOrdering" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" ordered="false"
+        eType="#//Interaction" transient="true" eOpposite="#//Interaction/fragment"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
+        eType="#//InteractionOperand" transient="true" eOpposite="#//InteractionOperand/fragment">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A Lifelineis the concept behind a lifeline in a Sequence &#xD;&#xA;Diagram. A Participant may be a Part or it may be a parameter representing a part. Its qualification is a Classifier which in turn may be an Interface (or ClassifierRole?)"/>
+    </eAnnotations>
+    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="namespace"/>
+        <details key="eType" value="org.eclipse.uml2.Namespace"/>
+        <details key="eOpposite" value="ownedMember"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Lifeline/interaction"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Lifeline/selector"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
+        upperBound="-1" eType="#//InteractionFragment" volatile="true" eOpposite="#//InteractionFragment/covered"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+        lowerBound="1" eType="#//ConnectableElement"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+        lowerBound="1" eType="#//Interaction" transient="true" eOpposite="#//Interaction/lifeline">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="selector" ordered="false"
+        eType="#//OpaqueExpression" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
+        eType="#//PartDecomposition"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
+    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="namespace"/>
+        <details key="eType" value="org.eclipse.uml2.Namespace"/>
+        <details key="eOpposite" value="ownedMember"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Message/interaction"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Message/argument"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
+        eType="#//MessageKind" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
+        eType="#//MessageSort"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
+        eType="#//MessageEnd" eOpposite="#//MessageEnd/receiveMessage"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
+        eType="#//MessageEnd" eOpposite="#//MessageEnd/sendMessage"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
+        eType="#//Connector"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
+        lowerBound="1" eType="#//Interaction" transient="true" eOpposite="#//Interaction/message">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
+        eType="#//NamedElement"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
+        upperBound="-1" eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="before" ordered="false"
+        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toAfter"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
+        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toBefore"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
+    <eLiterals name="complete"/>
+    <eLiterals name="lost" value="1"/>
+    <eLiterals name="found" value="2"/>
+    <eLiterals name="unknown" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
+    <eLiterals name="synchCall"/>
+    <eLiterals name="synchSignal" value="1"/>
+    <eLiterals name="asynchCall" value="2"/>
+    <eLiterals name="asynchSignal" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="receiveMessage" ordered="false"
+        eType="#//Message" eOpposite="#//Message/receiveEvent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sendMessage" ordered="false"
+        eType="#//Message" eOpposite="#//Message/sendEvent"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EventOccurrence" eSuperTypes="#//InteractionFragment #//MessageEnd">
+    <eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="covered"/>
+        <details key="eType" value="org.eclipse.uml2.Lifeline"/>
+      </eAnnotations>
+      <eAnnotations source="redefines" references="#//InteractionFragment/covered">
+        <details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="startExec" ordered="false"
+        upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/start"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="finishExec" ordered="false"
+        upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/finish"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
+        upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
+        upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrence" eSuperTypes="#//InteractionFragment">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
+        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/startExec"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
+        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/finishExec"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
+        upperBound="-1" eType="#//Behavior"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
+    <eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="covered"/>
+        <details key="eType" value="org.eclipse.uml2.Lifeline"/>
+      </eAnnotations>
+      <eAnnotations source="redefines" references="#//InteractionFragment/covered">
+        <details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//StateInvariant/invariant"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
+        lowerBound="1" eType="#//Constraint" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//EventOccurrence"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
+    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="redefinedElement"/>
+        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Port/redefinedPort"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
+        upperBound="-1" eType="#//Port">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
+        eType="#//ProtocolStateMachine"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
+      eSuperTypes="#//StructuredClassifier">
+    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="feature"/>
+        <details key="eType" value="org.eclipse.uml2.Feature"/>
+        <details key="eOpposite" value="featuringClassifier"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
+    </eOperations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
+        upperBound="-1" eType="#//Port" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">
+    <eLiterals name="sequential"/>
+    <eLiterals name="guarded" value="1"/>
+    <eLiterals name="concurrent" value="2"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CallTrigger" eSuperTypes="#//MessageTrigger">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
+        lowerBound="1" eType="#//Operation"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true" eSuperTypes="#//PackageableElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
+        eType="#//Port"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+        eType="#//Signal"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//BehavioredClassifier">
+    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="attribute"/>
+        <details key="eType" value="org.eclipse.uml2.Property"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>
+    </eOperations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
+        eType="#//Property" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SignalTrigger" eSuperTypes="#//MessageTrigger">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
+        upperBound="-1" eType="#//Signal"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//TimeTrigger/when"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"
+        eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="AnyTrigger" eSuperTypes="#//MessageTrigger"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement">
+    <eOperations name="getOwner" ordered="false" eType="#//Element">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="owner"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="ownedElement"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Variable/scope"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
+        lowerBound="1" eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/variable">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
+    <eOperations name="getActivity" ordered="false" eType="#//Activity">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="structuredNode"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
+        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
+        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="setActivity" ordered="false">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="structuredNode"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
+        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
+        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
+      </eAnnotations>
+      <eParameters name="newActivity" eType="#//Activity"/>
+    </eOperations>
+    <eOperations name="getActivityGroup_activity" ordered="false" eType="#//Activity">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activityGroup_activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="group"/>
+        <details key="eOpposite.containment" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>
+    </eOperations>
+    <eOperations name="setActivityGroup_activity" ordered="false">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="activityGroup_activity"/>
+        <details key="eType" value="org.eclipse.uml2.Activity"/>
+        <details key="eOpposite" value="group"/>
+        <details key="eOpposite.containment" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="redefined" references="#//StructuredActivityNode/setActivity"/>
+      <eParameters name="newActivityGroup_activity" eType="#//Activity"/>
+    </eOperations>
+    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedMember"/>
+        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
+        <details key="eOpposite" value="namespace"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//StructuredActivityNode/variable"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
+        upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
+        upperBound="-1" eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
+        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"
+        eType="#//Boolean"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ConditionalNode/clause"/>
+    </eOperations>
+    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="output"/>
+        <details key="eType" value="org.eclipse.uml2.OutputPin"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ConditionalNode/result"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+        eType="#//OutputPin" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+        eType="#//ActivityNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
+        eType="#//ActivityNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
+        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
+        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+        lowerBound="1" eType="#//OutputPin"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
+        upperBound="-1" eType="#//OutputPin"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
+    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="output"/>
+        <details key="eType" value="org.eclipse.uml2.OutputPin"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//LoopNode/result"/>
+    </eOperations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//LoopNode/loopVariable"/>
+    </eOperations>
+    <eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="input"/>
+        <details key="eType" value="org.eclipse.uml2.InputPin"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
+        eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
+        upperBound="-1" eType="#//ActivityNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
+        upperBound="-1" eType="#//ActivityNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
+        lowerBound="1" eType="#//OutputPin"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
+        eType="#//ActivityNode"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
+        eType="#//OutputPin" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
+        eType="#//OutputPin" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
+        upperBound="-1" eType="#//OutputPin"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
+        eType="#//InputPin" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Action#getInputs" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TemplateSignature" eSuperTypes="#//Element">
     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -4073,7 +4743,7 @@
       <eAnnotations source="superset" references="#//TemplateParameterSubstitution/ownedActual"/>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ownedActual" ordered="false"
-        eType="#//ParameterableElement" volatile="true" containment="true">
+        upperBound="-1" eType="#//ParameterableElement" volatile="true" containment="true">
       <eAnnotations source="subsets" references="#//TemplateParameterSubstitution/actual">
         <details key="org.eclipse.uml2.TemplateParameterSubstitution#getActuals" value=""/>
         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
@@ -4092,817 +4762,6 @@
       eSuperTypes="#//Classifier"/>
   <eClassifiers xsi:type="ecore:EClass" name="ConnectableElementTemplateParameter"
       eSuperTypes="#//TemplateParameter"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//Behavior #//InteractionFragment">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="The point is that the InteractionConstraint &quot;received&quot; from StructuralArchitecture will consist of a set of such units described by sequence diagrams (or collaboration diagrams)."/>
-    </eAnnotations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Interaction/lifeline #//Interaction/message #//Interaction/formalGate"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="lifeline" ordered="false"
-        upperBound="-1" eType="#//Lifeline" containment="true" eOpposite="#//Lifeline/interaction">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="message" ordered="false"
-        upperBound="-1" eType="#//Message" containment="true" eOpposite="#//Message/interaction">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
-        eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingInteraction"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="formalGate" ordered="false"
-        upperBound="-1" eType="#//Gate" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionFragment" abstract="true"
-      eSuperTypes="#//NamedElement">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="An InteractionFragment is a general class that holds the common parts of CompositeFragment, AtomicFragment and InteractionExpressionOperand.&#xD;&#xA;Conceptually it is very much the same as a full sequence diagram, but a fragment is not named and must be referred then through structure."/>
-    </eAnnotations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//InteractionFragment/generalOrdering"/>
-    </eOperations>
-    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="namespace"/>
-        <details key="eType" value="org.eclipse.uml2.Namespace"/>
-        <details key="eOpposite" value="ownedMember"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//InteractionFragment/enclosingOperand"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="covered" ordered="false"
-        upperBound="-1" eType="#//Lifeline" volatile="true" eOpposite="#//Lifeline/coveredBy"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="generalOrdering" ordered="false"
-        upperBound="-1" eType="#//GeneralOrdering" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingInteraction" ordered="false"
-        eType="#//Interaction" transient="true" eOpposite="#//Interaction/fragment"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="enclosingOperand" ordered="false"
-        eType="#//InteractionOperand" transient="true" eOpposite="#//InteractionOperand/fragment">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Lifeline" eSuperTypes="#//NamedElement">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="A Lifelineis the concept behind a lifeline in a Sequence &#xD;&#xA;Diagram. A Participant may be a Part or it may be a parameter representing a part. Its qualification is a Classifier which in turn may be an Interface (or ClassifierRole?)"/>
-    </eAnnotations>
-    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="namespace"/>
-        <details key="eType" value="org.eclipse.uml2.Namespace"/>
-        <details key="eOpposite" value="ownedMember"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Lifeline/interaction"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Lifeline/selector"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="coveredBy" ordered="false"
-        upperBound="-1" eType="#//InteractionFragment" volatile="true" eOpposite="#//InteractionFragment/covered"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
-        lowerBound="1" eType="#//ConnectableElement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
-        lowerBound="1" eType="#//Interaction" transient="true" eOpposite="#//Interaction/lifeline">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="selector" ordered="false"
-        eType="#//OpaqueExpression" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="decomposedAs" ordered="false"
-        eType="#//PartDecomposition"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Message" eSuperTypes="#//NamedElement">
-    <eOperations name="getNamespace" ordered="false" eType="#//Namespace">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="namespace"/>
-        <details key="eType" value="org.eclipse.uml2.Namespace"/>
-        <details key="eOpposite" value="ownedMember"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Message/interaction"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Message/argument"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageKind" ordered="false"
-        eType="#//MessageKind" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="messageSort" ordered="false"
-        eType="#//MessageSort"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="receiveEvent" ordered="false"
-        eType="#//MessageEnd" eOpposite="#//MessageEnd/receiveMessage"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="sendEvent" ordered="false"
-        eType="#//MessageEnd" eOpposite="#//MessageEnd/sendMessage"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
-        eType="#//Connector"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interaction" ordered="false"
-        lowerBound="1" eType="#//Interaction" transient="true" eOpposite="#//Interaction/message">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.NamedElement#getNamespace" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="signature" ordered="false"
-        eType="#//NamedElement"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
-        upperBound="-1" eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="GeneralOrdering" eSuperTypes="#//NamedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="before" ordered="false"
-        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toAfter"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="after" ordered="false"
-        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/toBefore"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="MessageKind">
-    <eLiterals name="complete"/>
-    <eLiterals name="lost" value="1"/>
-    <eLiterals name="found" value="2"/>
-    <eLiterals name="unknown" value="3"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="MessageSort">
-    <eLiterals name="synchCall"/>
-    <eLiterals name="synchSignal" value="1"/>
-    <eLiterals name="asynchCall" value="2"/>
-    <eLiterals name="asynchSignal" value="3"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="MessageEnd" abstract="true" eSuperTypes="#//NamedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="receiveMessage" ordered="false"
-        eType="#//Message" eOpposite="#//Message/receiveEvent"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="sendMessage" ordered="false"
-        eType="#//Message" eOpposite="#//Message/sendEvent"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventOccurrence" eSuperTypes="#//InteractionFragment #//MessageEnd">
-    <eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="covered"/>
-        <details key="eType" value="org.eclipse.uml2.Lifeline"/>
-      </eAnnotations>
-      <eAnnotations source="redefines" references="#//InteractionFragment/covered">
-        <details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
-      </eAnnotations>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="startExec" ordered="false"
-        upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/start"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="finishExec" ordered="false"
-        upperBound="-1" eType="#//ExecutionOccurrence" eOpposite="#//ExecutionOccurrence/finish"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="toAfter" ordered="false"
-        upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/before"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="toBefore" ordered="false"
-        upperBound="-1" eType="#//GeneralOrdering" eOpposite="#//GeneralOrdering/after"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ExecutionOccurrence" eSuperTypes="#//InteractionFragment">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false"
-        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/startExec"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="finish" ordered="false"
-        lowerBound="1" eType="#//EventOccurrence" eOpposite="#//EventOccurrence/finishExec"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
-        upperBound="-1" eType="#//Behavior"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StateInvariant" eSuperTypes="#//InteractionFragment">
-    <eOperations name="getCovereds" ordered="false" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="covered"/>
-        <details key="eType" value="org.eclipse.uml2.Lifeline"/>
-      </eAnnotations>
-      <eAnnotations source="redefines" references="#//InteractionFragment/covered">
-        <details key="org.eclipse.uml2.InteractionFragment#getCovereds" value=""/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//StateInvariant/invariant"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="invariant" ordered="false"
-        lowerBound="1" eType="#//Constraint" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//EventOccurrence"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//ConnectableElement #//TypedElement">
-    <eOperations name="getOwner" ordered="false" eType="#//Element">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="owner"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="ownedElement"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Variable/scope"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" ordered="false"
-        lowerBound="1" eType="#//StructuredActivityNode" transient="true" eOpposite="#//StructuredActivityNode/variable">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwner" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StructuredActivityNode" eSuperTypes="#//Action #//Namespace #//ActivityGroup">
-    <eOperations name="getActivity" ordered="false" eType="#//Activity">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="structuredNode"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
-        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
-        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
-      </eAnnotations>
-    </eOperations>
-    <eOperations name="setActivity" ordered="false">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="structuredNode"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefines" references="#//ActivityNode/activity #//ActivityGroup/activityGroup_activity">
-        <details key="org.eclipse.uml2.ActivityNode#getActivity" value=""/>
-        <details key="org.eclipse.uml2.ActivityGroup#getActivityGroup_activity" value=""/>
-      </eAnnotations>
-      <eParameters name="newActivity" eType="#//Activity"/>
-    </eOperations>
-    <eOperations name="getActivityGroup_activity" ordered="false" eType="#//Activity">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activityGroup_activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="group"/>
-        <details key="eOpposite.containment" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefined" references="#//StructuredActivityNode/getActivity"/>
-    </eOperations>
-    <eOperations name="setActivityGroup_activity" ordered="false">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="activityGroup_activity"/>
-        <details key="eType" value="org.eclipse.uml2.Activity"/>
-        <details key="eOpposite" value="group"/>
-        <details key="eOpposite.containment" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="redefined" references="#//StructuredActivityNode/setActivity"/>
-      <eParameters name="newActivityGroup_activity" eType="#//Activity"/>
-    </eOperations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//StructuredActivityNode/variable"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
-        upperBound="-1" eType="#//Variable" containment="true" eOpposite="#//Variable/scope">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
-        upperBound="-1" eType="#//ActivityNode" containment="true" eOpposite="#//ActivityNode/inStructuredNode">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge" containment="true" eOpposite="#//ActivityEdge/inStructuredNode">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
-        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mustIsolate" ordered="false"
-        eType="#//Boolean"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConditionalNode" eSuperTypes="#//StructuredActivityNode">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ConditionalNode/clause"/>
-    </eOperations>
-    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="output"/>
-        <details key="eType" value="org.eclipse.uml2.OutputPin"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ConditionalNode/result"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeterminate" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAssured" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="clause" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Clause" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
-        eType="#//OutputPin" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Clause" eSuperTypes="#//Element">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
-        eType="#//ActivityNode"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="body" ordered="false" upperBound="-1"
-        eType="#//ActivityNode"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="predecessorClause" ordered="false"
-        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/successorClause"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="successorClause" ordered="false"
-        upperBound="-1" eType="#//Clause" eOpposite="#//Clause/predecessorClause"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
-        lowerBound="1" eType="#//OutputPin"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
-        upperBound="-1" eType="#//OutputPin"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="LoopNode" eSuperTypes="#//StructuredActivityNode">
-    <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="output"/>
-        <details key="eType" value="org.eclipse.uml2.OutputPin"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//LoopNode/result"/>
-    </eOperations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//LoopNode/loopVariable"/>
-    </eOperations>
-    <eOperations name="getInputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="input"/>
-        <details key="eType" value="org.eclipse.uml2.InputPin"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//LoopNode/loopVariableInput"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isTestedFirst" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyPart" ordered="false"
-        upperBound="-1" eType="#//ActivityNode"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="setupPart" ordered="false"
-        upperBound="-1" eType="#//ActivityNode"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="decider" ordered="false"
-        lowerBound="1" eType="#//OutputPin"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="test" ordered="false" upperBound="-1"
-        eType="#//ActivityNode"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="result" upperBound="-1"
-        eType="#//OutputPin" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Action#getOutputs" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariable" upperBound="-1"
-        eType="#//OutputPin" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="bodyOutput" ordered="false"
-        upperBound="-1" eType="#//OutputPin"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="loopVariableInput" upperBound="-1"
-        eType="#//InputPin" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Action#getInputs" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//Property">
-    <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="redefinedElement"/>
-        <details key="eType" value="org.eclipse.uml2.RedefinableElement"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Port/redefinedPort"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isBehavior" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isService" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="redefinedPort" ordered="false"
-        upperBound="-1" eType="#//Port">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.RedefinableElement#getRedefinedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="protocol" ordered="false"
-        eType="#//ProtocolStateMachine"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EncapsulatedClassifier" abstract="true"
-      eSuperTypes="#//StructuredClassifier">
-    <eOperations name="getFeatures" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="feature"/>
-        <details key="eType" value="org.eclipse.uml2.Feature"/>
-        <details key="eOpposite" value="featuringClassifier"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
-    </eOperations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//EncapsulatedClassifier/ownedPort"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedPort" ordered="false"
-        upperBound="-1" eType="#//Port" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Classifier#getFeatures" value=""/>
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="CallConcurrencyKind">
-    <eLiterals name="sequential"/>
-    <eLiterals name="guarded" value="1"/>
-    <eLiterals name="concurrent" value="2"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CallTrigger" eSuperTypes="#//MessageTrigger">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="operation" ordered="false"
-        lowerBound="1" eType="#//Operation"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="MessageTrigger" abstract="true" eSuperTypes="#//Trigger"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ChangeTrigger" eSuperTypes="#//Trigger">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ChangeTrigger/changeExpression"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="changeExpression" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true" eSuperTypes="#//PackageableElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="port" ordered="false" upperBound="-1"
-        eType="#//Port"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Reception" eSuperTypes="#//BehavioralFeature">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
-        eType="#//Signal"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Signal" eSuperTypes="#//BehavioredClassifier">
-    <eOperations name="getAttributes" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="attribute"/>
-        <details key="eType" value="org.eclipse.uml2.Property"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>
-    </eOperations>
-    <eOperations name="getOwnedMembers" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedMember"/>
-        <details key="eType" value="org.eclipse.uml2.NamedElement"/>
-        <details key="eOpposite" value="namespace"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Signal/ownedAttribute"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedAttribute" upperBound="-1"
-        eType="#//Property" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Classifier#getAttributes" value=""/>
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SignalTrigger" eSuperTypes="#//MessageTrigger">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="signal" ordered="false"
-        upperBound="-1" eType="#//Signal"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TimeTrigger" eSuperTypes="#//Trigger">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//TimeTrigger/when"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isRelative" ordered="false"
-        eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="when" ordered="false" lowerBound="1"
-        eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AnyTrigger" eSuperTypes="#//MessageTrigger"/>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionOccurrence" eSuperTypes="#//InteractionFragment">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)"/>
-    </eAnnotations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//InteractionOccurrence/actualGate"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
-        lowerBound="1" eType="#//Interaction"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
-        upperBound="-1" eType="#//Gate" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
-        upperBound="-1" eType="#//InputPin" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.&#xD;&#xA;More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.&#xD;&#xA;Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)"/>
-    </eAnnotations>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionOccurrence">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram."/>
-    </eAnnotations>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.&#xD;&#xA;An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)"/>
-    </eAnnotations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//InteractionOperand/guard"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
-        eType="#//InteractionConstraint" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
-        eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//InteractionConstraint/minint #//InteractionConstraint/maxint"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
-        eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
-        eType="#//ValueSpecification" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="InteractionOperator">
-    <eLiterals name="seq"/>
-    <eLiterals name="alt" value="1"/>
-    <eLiterals name="opt" value="2"/>
-    <eLiterals name="break" value="3"/>
-    <eLiterals name="par" value="4"/>
-    <eLiterals name="strict" value="5"/>
-    <eLiterals name="loop" value="6"/>
-    <eLiterals name="critical" value="7"/>
-    <eLiterals name="neg" value="8"/>
-    <eLiterals name="assert" value="9"/>
-    <eLiterals name="ignore" value="10"/>
-    <eLiterals name="consider" value="11"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
-    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
-      <details key="documentation" value="An interaction fragment that decomposes into a set of other interaction fragments under some operator.&#xD;&#xA;In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.&#xD;&#xA;Combined interactions consist of operands and an implicit or explicit operator"/>
-    </eAnnotations>
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//CombinedFragment/operand #//CombinedFragment/cfragmentGate"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
-        eType="#//InteractionOperator"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="operand" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//InteractionOperand" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
-        upperBound="-1" eType="#//Gate" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="True"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="StateMachine" eSuperTypes="#//Behavior">
     <eOperations name="getRedefinedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -5234,6 +5093,77 @@
     <eLiterals name="terminate" value="9"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//State"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//JoinNode/joinSpec"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
+        lowerBound="1" eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
+    <eOperations name="getSuperGroup" ordered="false" eType="#//ActivityGroup">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="containment" value="false"/>
+        <details key="name" value="superGroup"/>
+        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
+        <details key="eOpposite" value="subgroup"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ActivityPartition/superPartition"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
+        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
+        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
+        upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getSubgroups">
+        <details key="org.eclipse.uml2.ActivityGroup#getSubgroups" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"
+        eType="#//ActivityPartition" transient="true" eOpposite="#//ActivityPartition/subgroup">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.ActivityGroup#getSuperGroup" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
+        eType="#//Element"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CreateObjectAction" eSuperTypes="#//Action">
     <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -5699,8 +5629,10 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="behavior" ordered="false"
         lowerBound="1" eType="#//Behavior"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ForkNode" eSuperTypes="#//ControlNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="JoinNode" eSuperTypes="#//ControlNode">
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionOccurrence" eSuperTypes="#//InteractionFragment">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)"/>
+    </eAnnotations>
     <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
@@ -5712,63 +5644,131 @@
         <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//JoinNode/joinSpec"/>
+      <eAnnotations source="union" references="#//InteractionOccurrence/actualGate"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isCombineDuplicate" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="joinSpec" ordered="false"
-        lowerBound="1" eType="#//ValueSpecification" containment="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="refersTo" ordered="false"
+        lowerBound="1" eType="#//Interaction"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="actualGate" ordered="false"
+        upperBound="-1" eType="#//Gate" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="argument" ordered="false"
+        upperBound="-1" eType="#//InputPin" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Gate" eSuperTypes="#//MessageEnd">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.&#xD;&#xA;More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.&#xD;&#xA;Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="PartDecomposition" eSuperTypes="#//InteractionOccurrence">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram."/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionOperand" eSuperTypes="#//Namespace #//InteractionFragment">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.&#xD;&#xA;An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)"/>
+    </eAnnotations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//InteractionOperand/guard"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" ordered="false"
+        eType="#//InteractionConstraint" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="fragment" upperBound="-1"
+        eType="#//InteractionFragment" containment="true" eOpposite="#//InteractionFragment/enclosingOperand"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionConstraint" eSuperTypes="#//Constraint">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//InteractionConstraint/minint #//InteractionConstraint/maxint"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="minint" ordered="false"
+        eType="#//ValueSpecification" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="maxint" ordered="false"
+        eType="#//ValueSpecification" containment="true">
       <eAnnotations source="subsets">
         <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FlowFinalNode" eSuperTypes="#//FinalNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="CentralBufferNode" eSuperTypes="#//ObjectNode"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ActivityPartition" eSuperTypes="#//NamedElement #//ActivityGroup">
-    <eOperations name="getSuperGroup" ordered="false" eType="#//ActivityGroup">
+  <eClassifiers xsi:type="ecore:EEnum" name="InteractionOperator">
+    <eLiterals name="seq"/>
+    <eLiterals name="alt" value="1"/>
+    <eLiterals name="opt" value="2"/>
+    <eLiterals name="break" value="3"/>
+    <eLiterals name="par" value="4"/>
+    <eLiterals name="strict" value="5"/>
+    <eLiterals name="loop" value="6"/>
+    <eLiterals name="critical" value="7"/>
+    <eLiterals name="neg" value="8"/>
+    <eLiterals name="assert" value="9"/>
+    <eLiterals name="ignore" value="10"/>
+    <eLiterals name="consider" value="11"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CombinedFragment" eSuperTypes="#//InteractionFragment">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="An interaction fragment that decomposes into a set of other interaction fragments under some operator.&#xD;&#xA;In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.&#xD;&#xA;Combined interactions consist of operands and an implicit or explicit operator"/>
+    </eAnnotations>
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
         <details key="derived" value="true"/>
-        <details key="containment" value="false"/>
-        <details key="name" value="superGroup"/>
-        <details key="eType" value="org.eclipse.uml2.ActivityGroup"/>
-        <details key="eOpposite" value="subgroup"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
         <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
         <details key="eOpposite.lowerBound" value="0"/>
-        <details key="eOpposite.upperBound" value="-1"/>
       </eAnnotations>
-      <eAnnotations source="union" references="#//ActivityPartition/superPartition"/>
+      <eAnnotations source="union" references="#//CombinedFragment/operand #//CombinedFragment/cfragmentGate"/>
     </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDimension" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isExternal" ordered="false"
-        eType="#//Boolean" defaultValueLiteral="false"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdge" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/inPartition">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedEdges">
-        <details key="org.eclipse.uml2.ActivityGroup#getContainedEdges" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
-        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inPartition">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="subgroup" ordered="false"
-        upperBound="-1" eType="#//ActivityPartition" containment="true" eOpposite="#//ActivityPartition/superPartition">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getSubgroups">
-        <details key="org.eclipse.uml2.ActivityGroup#getSubgroups" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="superPartition" ordered="false"
-        eType="#//ActivityPartition" transient="true" eOpposite="#//ActivityPartition/subgroup">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="interactionOperator" ordered="false"
+        eType="#//InteractionOperator"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="operand" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//InteractionOperand" containment="true">
       <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.ActivityGroup#getSuperGroup" value=""/>
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
       </eAnnotations>
     </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="represents" ordered="false"
-        eType="#//Element"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="cfragmentGate" ordered="false"
+        upperBound="-1" eType="#//Gate" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Continuation" eSuperTypes="#//InteractionFragment">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="setting" ordered="false"
+        eType="#//Boolean" defaultValueLiteral="True"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ExpansionNode" eSuperTypes="#//ObjectNode">
     <eStructuralFeatures xsi:type="ecore:EReference" name="regionAsOutput" ordered="false"
@@ -5924,6 +5924,60 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//Component/realization"/>
+    </eOperations>
+    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="false"/>
+        <details key="eOpposite.upperBound" value="-1"/>
+        <details key="name" value="clientDependency"/>
+        <details key="eType" value="org.eclipse.uml2.Dependency"/>
+        <details key="eOpposite" value="client"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="1"/>
+      </eAnnotations>
+      <eAnnotations source="superset" references="#//Component/realization"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
+        ordered="false" eType="#//Boolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
+        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
+        upperBound="-1" eType="#//Realization" volatile="true" containment="true"
+        eOpposite="#//Realization/abstraction">
+      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
+        upperBound="-1" eType="#//PackageableElement" containment="true">
+      <eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">
+        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
+    <eLiterals name="assembly"/>
+    <eLiterals name="delegation" value="1"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TimeExpression" eSuperTypes="#//ValueSpecification">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="firstTime" ordered="false"
         eType="#//Boolean" defaultValueLiteral="True"/>
@@ -6133,52 +6187,6 @@
       <eParameters name="newSpecification" eType="#//ValueSpecification"/>
     </eOperations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode"/>
-  <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
-    <eLiterals name="create"/>
-    <eLiterals name="read" value="1"/>
-    <eLiterals name="update" value="2"/>
-    <eLiterals name="delete" value="3"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
-        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
-        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
-      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
-        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
-    <eLiterals name="unordered"/>
-    <eLiterals name="ordered" value="1"/>
-    <eLiterals name="LIFO" value="2"/>
-    <eLiterals name="FIFO" value="3"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//ParameterSet/condition"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
-        upperBound="-1" eType="#//Constraint" containment="true">
-      <eAnnotations source="subsets">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ReadExtentAction" eSuperTypes="#//Action">
     <eOperations name="getOutputs" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
       <eAnnotations source="feature">
@@ -6472,60 +6480,6 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Component" eSuperTypes="#//Class">
-    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="true"/>
-        <details key="eOpposite.upperBound" value="1"/>
-        <details key="name" value="ownedElement"/>
-        <details key="eType" value="org.eclipse.uml2.Element"/>
-        <details key="eOpposite" value="owner"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="0"/>
-      </eAnnotations>
-      <eAnnotations source="union" references="#//Component/realization"/>
-    </eOperations>
-    <eOperations name="getClientDependencies" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
-      <eAnnotations source="feature">
-        <details key="derived" value="false"/>
-        <details key="eOpposite.upperBound" value="-1"/>
-        <details key="name" value="clientDependency"/>
-        <details key="eType" value="org.eclipse.uml2.Dependency"/>
-        <details key="eOpposite" value="client"/>
-        <details key="eOpposite.containment" value="false"/>
-        <details key="containment" value="false"/>
-        <details key="eOpposite.lowerBound" value="1"/>
-      </eAnnotations>
-      <eAnnotations source="superset" references="#//Component/realization"/>
-    </eOperations>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="isIndirectlyInstantiated"
-        ordered="false" eType="#//Boolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="required" ordered="false"
-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="provided" ordered="false"
-        upperBound="-1" eType="#//Interface" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="realization" ordered="false"
-        upperBound="-1" eType="#//Realization" volatile="true" containment="true"
-        eOpposite="#//Realization/abstraction">
-      <eAnnotations source="subsets" references="#//NamedElement/clientDependency">
-        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
-        <details key="org.eclipse.uml2.NamedElement#getClientDependencies" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="ownedMember" ordered="false"
-        upperBound="-1" eType="#//PackageableElement" containment="true">
-      <eAnnotations source="redefines" references="#//Namespace/getOwnedMembers">
-        <details key="org.eclipse.uml2.Namespace#getOwnedMembers" value=""/>
-      </eAnnotations>
-    </eStructuralFeatures>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="ConnectorKind">
-    <eLiterals name="assembly"/>
-    <eLiterals name="delegation" value="1"/>
-  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Deployment" eSuperTypes="#//Dependency">
     <eOperations name="getSuppliers" ordered="false" lowerBound="1" upperBound="-1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
@@ -6665,6 +6619,52 @@
   <eClassifiers xsi:type="ecore:EClass" name="Device" eSuperTypes="#//Node"/>
   <eClassifiers xsi:type="ecore:EClass" name="ExecutionEnvironment" eSuperTypes="#//Node"/>
   <eClassifiers xsi:type="ecore:EClass" name="CommunicationPath" eSuperTypes="#//Association"/>
+  <eClassifiers xsi:type="ecore:EClass" name="DataStoreNode" eSuperTypes="#//CentralBufferNode"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="ParameterEffectKind">
+    <eLiterals name="create"/>
+    <eLiterals name="read" value="1"/>
+    <eLiterals name="update" value="2"/>
+    <eLiterals name="delete" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InterruptibleActivityRegion" eSuperTypes="#//ActivityGroup">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="interruptingEdge" ordered="false"
+        upperBound="-1" eType="#//ActivityEdge" eOpposite="#//ActivityEdge/interrupts"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="containedNode" ordered="false"
+        upperBound="-1" eType="#//ActivityNode" eOpposite="#//ActivityNode/inInterruptibleRegion">
+      <eAnnotations source="redefines" references="#//ActivityGroup/getContainedNodes">
+        <details key="org.eclipse.uml2.ActivityGroup#getContainedNodes" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="ObjectNodeOrderingKind">
+    <eLiterals name="unordered"/>
+    <eLiterals name="ordered" value="1"/>
+    <eLiterals name="LIFO" value="2"/>
+    <eLiterals name="FIFO" value="3"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ParameterSet" eSuperTypes="#//NamedElement">
+    <eOperations name="getOwnedElements" ordered="false" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EEList">
+      <eAnnotations source="feature">
+        <details key="derived" value="true"/>
+        <details key="eOpposite.upperBound" value="1"/>
+        <details key="name" value="ownedElement"/>
+        <details key="eType" value="org.eclipse.uml2.Element"/>
+        <details key="eOpposite" value="owner"/>
+        <details key="eOpposite.containment" value="false"/>
+        <details key="containment" value="false"/>
+        <details key="eOpposite.lowerBound" value="0"/>
+      </eAnnotations>
+      <eAnnotations source="union" references="#//ParameterSet/condition"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" ordered="false"
+        lowerBound="1" upperBound="-1" eType="#//Parameter" eOpposite="#//Parameter/parameterSet"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false"
+        upperBound="-1" eType="#//Constraint" containment="true">
+      <eAnnotations source="subsets">
+        <details key="org.eclipse.uml2.Element#getOwnedElements" value=""/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="DeploymentSpecification" eSuperTypes="#//Artifact">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="deploymentLocation" ordered="false"
         eType="#//String" defaultValueLiteral=""/>
diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel b/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
index 06a3b02..3d2251c 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2.genmodel
@@ -45,20 +45,6 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/guarded"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//CallConcurrencyKind/concurrent"/>
     </genEnums>
-    <genEnums ecoreEnum="UML2.ecore#//InteractionOperator">
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/seq"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/alt"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/opt"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/break"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/par"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/strict"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/loop"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/critical"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/neg"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/assert"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/ignore"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/consider"/>
-    </genEnums>
     <genEnums ecoreEnum="UML2.ecore#//TransitionKind">
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//TransitionKind/internal"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//TransitionKind/local"/>
@@ -76,11 +62,29 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//PseudostateKind/exitPoint"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//PseudostateKind/terminate"/>
     </genEnums>
+    <genEnums ecoreEnum="UML2.ecore#//InteractionOperator">
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/seq"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/alt"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/opt"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/break"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/par"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/strict"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/loop"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/critical"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/neg"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/assert"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/ignore"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//InteractionOperator/consider"/>
+    </genEnums>
     <genEnums ecoreEnum="UML2.ecore#//ExpansionKind">
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/parallel"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/iterative"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ExpansionKind/stream"/>
     </genEnums>
+    <genEnums ecoreEnum="UML2.ecore#//ConnectorKind">
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/assembly"/>
+      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/delegation"/>
+    </genEnums>
     <genEnums ecoreEnum="UML2.ecore#//ParameterEffectKind">
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ParameterEffectKind/create"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ParameterEffectKind/read"/>
@@ -93,10 +97,6 @@
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ObjectNodeOrderingKind/LIFO"/>
       <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ObjectNodeOrderingKind/FIFO"/>
     </genEnums>
-    <genEnums ecoreEnum="UML2.ecore#//ConnectorKind">
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/assembly"/>
-      <genEnumLiterals ecoreEnumLiteral="UML2.ecore#//ConnectorKind/delegation"/>
-    </genEnums>
     <genDataTypes ecoreDataType="UML2.ecore#//Integer"/>
     <genDataTypes ecoreDataType="UML2.ecore#//Boolean"/>
     <genDataTypes ecoreDataType="UML2.ecore#//String"/>
@@ -137,6 +137,62 @@
       <genOperations ecoreOperation="UML2.ecore#//MultiplicityElement/upper"/>
       <genOperations ecoreOperation="UML2.ecore#//MultiplicityElement/getOwnedElements"/>
     </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//NamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/name"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/qualifiedName.1"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/visibility"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/clientDependency"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/nameExpression"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateNoName"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateQualifiedName"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/allNamespaces"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/isDistinguishableFrom">
+        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/n"/>
+        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/ns"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/separator"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/qualifiedName"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateVisibilityNeedsOwnership"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getNamespace"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwner"/>
+      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Namespace">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/member"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/ownedRule"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/importedMember.1"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/elementImport"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/packageImport"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateMembersAreDistinguishable"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getNamesOfMember">
+        <genParameters ecoreParameter="UML2.ecore#//Namespace/getNamesOfMember/element"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/membersAreDistinguishable"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateImportedMemberDerived"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/importedMember"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/importMembers">
+        <genParameters ecoreParameter="UML2.ecore#//Namespace/importMembers/imps"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/excludeCollisions">
+        <genParameters ecoreParameter="UML2.ecore#//Namespace/excludeCollisions/imps"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedMembers"/>
+      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Comment">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Comment/body"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Comment/annotatedElement"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Comment/bodyExpression"/>
+      <genOperations ecoreOperation="UML2.ecore#//Comment/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//DirectedRelationship">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/source"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/target"/>
+      <genOperations ecoreOperation="UML2.ecore#//DirectedRelationship/getRelatedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Relationship">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Relationship/relatedElement"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//OpaqueExpression">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//OpaqueExpression/body"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//OpaqueExpression/language"/>
@@ -156,12 +212,6 @@
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Expression/operand"/>
       <genOperations ecoreOperation="UML2.ecore#//Expression/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Comment">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Comment/body"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Comment/annotatedElement"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Comment/bodyExpression"/>
-      <genOperations ecoreOperation="UML2.ecore#//Comment/getOwnedElements"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Class">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Class/ownedOperation"/>
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Class/superClass"/>
@@ -281,26 +331,6 @@
       <genOperations ecoreOperation="UML2.ecore#//Parameter/getNamespace"/>
       <genOperations ecoreOperation="UML2.ecore#//Parameter/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//NamedElement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/name"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/qualifiedName.1"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//NamedElement/visibility"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/clientDependency"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//NamedElement/nameExpression"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateNoName"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateQualifiedName"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/allNamespaces"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/isDistinguishableFrom">
-        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/n"/>
-        <genParameters ecoreParameter="UML2.ecore#//NamedElement/isDistinguishableFrom/ns"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/separator"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/qualifiedName"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/validateVisibilityNeedsOwnership"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getNamespace"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwner"/>
-      <genOperations ecoreOperation="UML2.ecore#//NamedElement/getOwnedElements"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Package">
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/nestedPackage"/>
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Package/nestingPackage"/>
@@ -338,36 +368,6 @@
       <genOperations ecoreOperation="UML2.ecore#//EnumerationLiteral/getNamespace"/>
     </genClasses>
     <genClasses ecoreClass="UML2.ecore#//PrimitiveType"/>
-    <genClasses ecoreClass="UML2.ecore#//Namespace">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/member"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/ownedRule"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/importedMember.1"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/elementImport"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Namespace/packageImport"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateMembersAreDistinguishable"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getNamesOfMember">
-        <genParameters ecoreParameter="UML2.ecore#//Namespace/getNamesOfMember/element"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/membersAreDistinguishable"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/validateImportedMemberDerived"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/importedMember"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/importMembers">
-        <genParameters ecoreParameter="UML2.ecore#//Namespace/importMembers/imps"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/excludeCollisions">
-        <genParameters ecoreParameter="UML2.ecore#//Namespace/excludeCollisions/imps"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedMembers"/>
-      <genOperations ecoreOperation="UML2.ecore#//Namespace/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//DirectedRelationship">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/source"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//DirectedRelationship/target"/>
-      <genOperations ecoreOperation="UML2.ecore#//DirectedRelationship/getRelatedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Relationship">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Relationship/relatedElement"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Constraint">
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/context"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Constraint/namespace"/>
@@ -409,8 +409,8 @@
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/generalization"/>
       <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/attribute"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/redefinedClassifier"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/powertypeExtent"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/substitution"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/powertypeExtent"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/ownedUseCase"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/representation"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Classifier/occurrence"/>
@@ -475,6 +475,19 @@
       <genOperations ecoreOperation="UML2.ecore#//Generalization/getOwner"/>
       <genOperations ecoreOperation="UML2.ecore#//Generalization/getTargets"/>
     </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//RedefinableElement">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//RedefinableElement/redefinitionContext"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//RedefinableElement/isLeaf"/>
+      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/validateRedefinitionContextValid"/>
+      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/validateRedefinitionConsistent"/>
+      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/isConsistentWith">
+        <genParameters ecoreParameter="UML2.ecore#//RedefinableElement/isConsistentWith/redefinee"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/isRedefinitionContextValid">
+        <genParameters ecoreParameter="UML2.ecore#//RedefinableElement/isRedefinitionContextValid/redefinable"/>
+      </genOperations>
+      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/getRedefinedElements"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//InstanceSpecification">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InstanceSpecification/slot"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InstanceSpecification/classifier"/>
@@ -493,19 +506,6 @@
     <genClasses ecoreClass="UML2.ecore#//InstanceValue">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InstanceValue/instance"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//RedefinableElement">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//RedefinableElement/redefinitionContext"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//RedefinableElement/isLeaf"/>
-      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/validateRedefinitionContextValid"/>
-      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/validateRedefinitionConsistent"/>
-      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/isConsistentWith">
-        <genParameters ecoreParameter="UML2.ecore#//RedefinableElement/isConsistentWith/redefinee"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/isRedefinitionContextValid">
-        <genParameters ecoreParameter="UML2.ecore#//RedefinableElement/isRedefinitionContextValid/redefinable"/>
-      </genOperations>
-      <genOperations ecoreOperation="UML2.ecore#//RedefinableElement/getRedefinedElements"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//PackageableElement">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//PackageableElement/packageableElement_visibility"/>
       <genOperations ecoreOperation="UML2.ecore#//PackageableElement/getVisibility"/>
@@ -576,23 +576,6 @@
         <genParameters ecoreParameter="UML2.ecore#//ExtensionEnd/setType/newType"/>
       </genOperations>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//AssociationClass"/>
-    <genClasses ecoreClass="UML2.ecore#//GeneralizationSet">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//GeneralizationSet/isCovering"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//GeneralizationSet/isDisjoint"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/powertype"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/generalization"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//InformationItem">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationItem/represented"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//InformationFlow">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/realization"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/conveyed"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Model">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Model/viewpoint"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Permission"/>
     <genClasses ecoreClass="UML2.ecore#//Dependency">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Dependency/client"/>
@@ -655,6 +638,113 @@
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Activity/isReadOnly"/>
       <genOperations ecoreOperation="UML2.ecore#//Activity/getOwnedElements"/>
     </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//AssociationClass"/>
+    <genClasses ecoreClass="UML2.ecore#//Model">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Model/viewpoint"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//InformationItem">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationItem/represented"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//InformationFlow">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/realization"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InformationFlow/conveyed"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//GeneralizationSet">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//GeneralizationSet/isCovering"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//GeneralizationSet/isDisjoint"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/powertype"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//GeneralizationSet/generalization"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//ConnectorEnd">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/definingEnd"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/role"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/partWithPort"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//ConnectableElement">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectableElement/end"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Connector">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/type"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/redefinedConnector"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Connector/end"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Connector/kind"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/contract"/>
+      <genOperations ecoreOperation="UML2.ecore#//Connector/getRedefinedElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//Connector/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//StructuredClassifier">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedAttribute"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/part"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/role"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedConnector"/>
+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getAttributes"/>
+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getOwnedMembers"/>
+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getMembers"/>
+      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getFeatures"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Interface">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedAttribute"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedOperation"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Interface/redefinedInterface"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/nestedClassifier"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedReception"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/protocol"/>
+      <genOperations ecoreOperation="UML2.ecore#//Interface/getAttributes"/>
+      <genOperations ecoreOperation="UML2.ecore#//Interface/getOwnedMembers"/>
+      <genOperations ecoreOperation="UML2.ecore#//Interface/getFeatures"/>
+      <genOperations ecoreOperation="UML2.ecore#//Interface/getRedefinedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Implementation">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/contract"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/implementingClassifier"/>
+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSuppliers"/>
+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getTargets"/>
+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getClients"/>
+      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSources"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Actor"/>
+    <genClasses ecoreClass="UML2.ecore#//Extend">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extendedCase"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extension"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Extend/condition"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extensionLocation"/>
+      <genOperations ecoreOperation="UML2.ecore#//Extend/getTargets"/>
+      <genOperations ecoreOperation="UML2.ecore#//Extend/getSources"/>
+      <genOperations ecoreOperation="UML2.ecore#//Extend/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//UseCase">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/include"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/extend"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/extensionPoint"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/subject"/>
+      <genOperations ecoreOperation="UML2.ecore#//UseCase/getOwnedMembers"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//ExtensionPoint">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExtensionPoint/useCase"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Include">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Include/includingCase"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Include/addition"/>
+      <genOperations ecoreOperation="UML2.ecore#//Include/getSources"/>
+      <genOperations ecoreOperation="UML2.ecore#//Include/getTargets"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Artifact">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Artifact/fileName"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/nestedArtifact"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/manifestation"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedOperation"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedAttribute"/>
+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getClientDependencies"/>
+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getFeatures"/>
+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedMembers"/>
+      <genOperations ecoreOperation="UML2.ecore#//Artifact/getAttributes"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Manifestation">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Manifestation/utilizedElement"/>
+      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getSuppliers"/>
+      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getTargets"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//ActivityEdge">
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityEdge/activity"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityEdge/source"/>
@@ -737,96 +827,6 @@
     <genClasses ecoreClass="UML2.ecore#//ValuePin">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ValuePin/value"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Interface">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedAttribute"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedOperation"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Interface/redefinedInterface"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/nestedClassifier"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/ownedReception"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interface/protocol"/>
-      <genOperations ecoreOperation="UML2.ecore#//Interface/getAttributes"/>
-      <genOperations ecoreOperation="UML2.ecore#//Interface/getOwnedMembers"/>
-      <genOperations ecoreOperation="UML2.ecore#//Interface/getFeatures"/>
-      <genOperations ecoreOperation="UML2.ecore#//Interface/getRedefinedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Implementation">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/contract"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Implementation/implementingClassifier"/>
-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSuppliers"/>
-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getTargets"/>
-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getClients"/>
-      <genOperations ecoreOperation="UML2.ecore#//Implementation/getSources"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Actor"/>
-    <genClasses ecoreClass="UML2.ecore#//Extend">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extendedCase"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extension"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Extend/condition"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Extend/extensionLocation"/>
-      <genOperations ecoreOperation="UML2.ecore#//Extend/getTargets"/>
-      <genOperations ecoreOperation="UML2.ecore#//Extend/getSources"/>
-      <genOperations ecoreOperation="UML2.ecore#//Extend/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//UseCase">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/include"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/extend"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/extensionPoint"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//UseCase/subject"/>
-      <genOperations ecoreOperation="UML2.ecore#//UseCase/getOwnedMembers"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ExtensionPoint">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExtensionPoint/useCase"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Include">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Include/includingCase"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Include/addition"/>
-      <genOperations ecoreOperation="UML2.ecore#//Include/getSources"/>
-      <genOperations ecoreOperation="UML2.ecore#//Include/getTargets"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Artifact">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Artifact/fileName"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/nestedArtifact"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/manifestation"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedOperation"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Artifact/ownedAttribute"/>
-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getClientDependencies"/>
-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getFeatures"/>
-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getOwnedMembers"/>
-      <genOperations ecoreOperation="UML2.ecore#//Artifact/getAttributes"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Manifestation">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Manifestation/utilizedElement"/>
-      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getSuppliers"/>
-      <genOperations ecoreOperation="UML2.ecore#//Manifestation/getTargets"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ConnectorEnd">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/definingEnd"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/role"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectorEnd/partWithPort"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ConnectableElement">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ConnectableElement/end"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Connector">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/type"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/redefinedConnector"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Connector/end"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Connector/kind"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Connector/contract"/>
-      <genOperations ecoreOperation="UML2.ecore#//Connector/getRedefinedElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//Connector/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//StructuredClassifier">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedAttribute"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/part"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/role"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StructuredClassifier/ownedConnector"/>
-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getAttributes"/>
-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getOwnedMembers"/>
-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getMembers"/>
-      <genOperations ecoreOperation="UML2.ecore#//StructuredClassifier/getFeatures"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//CollaborationOccurrence">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/type"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CollaborationOccurrence/roleBinding"/>
@@ -836,66 +836,6 @@
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Collaboration/collaborationRole"/>
       <genOperations ecoreOperation="UML2.ecore#//Collaboration/getRoles"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TemplateSignature">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/parameter"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/ownedParameter"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/nestedSignature"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/nestingSignature"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/template"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateSignature/getOwnedElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateSignature/getOwner"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TemplateParameter">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/signature"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/parameteredElement"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/ownedParameteredElement"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/default"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/ownedDefault"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateParameter/getOwner"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateParameter/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TemplateableElement">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateableElement/templateBinding"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateableElement/ownedTemplateSignature"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateableElement/parameterableElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateableElement/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//StringExpression">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StringExpression/subExpression"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StringExpression/owningExpression"/>
-      <genOperations ecoreOperation="UML2.ecore#//StringExpression/getOwnedElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//StringExpression/getOwner"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ParameterableElement">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterableElement/templateParameter"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterableElement/owningParameter"/>
-      <genOperations ecoreOperation="UML2.ecore#//ParameterableElement/getOwner"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TemplateBinding">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/boundElement"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/signature"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/parameterSubstitution"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getOwner"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getSources"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getTargets"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TemplateParameterSubstitution">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/formal"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/templateBinding"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/actual"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/ownedActual"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwner"/>
-      <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//OperationTemplateParameter"/>
-    <genClasses ecoreClass="UML2.ecore#//ClassifierTemplateParameter">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ClassifierTemplateParameter/allowSubstitutable"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ParameterableClassifier"/>
-    <genClasses ecoreClass="UML2.ecore#//RedefinableTemplateSignature"/>
-    <genClasses ecoreClass="UML2.ecore#//TemplateableClassifier"/>
-    <genClasses ecoreClass="UML2.ecore#//ConnectableElementTemplateParameter"/>
     <genClasses ecoreClass="UML2.ecore#//Interaction">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interaction/lifeline"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Interaction/message"/>
@@ -958,6 +898,48 @@
       <genOperations ecoreOperation="UML2.ecore#//StateInvariant/getOwnedElements"/>
     </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Stop"/>
+    <genClasses ecoreClass="UML2.ecore#//Port">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isBehavior"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isService"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/required"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/redefinedPort"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/provided"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/protocol"/>
+      <genOperations ecoreOperation="UML2.ecore#//Port/getRedefinedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//EncapsulatedClassifier">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//EncapsulatedClassifier/ownedPort"/>
+      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getFeatures"/>
+      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getOwnedMembers"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//CallTrigger">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallTrigger/operation"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//MessageTrigger"/>
+    <genClasses ecoreClass="UML2.ecore#//ChangeTrigger">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ChangeTrigger/changeExpression"/>
+      <genOperations ecoreOperation="UML2.ecore#//ChangeTrigger/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Trigger">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Trigger/port"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Reception">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Reception/signal"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Signal">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Signal/ownedAttribute"/>
+      <genOperations ecoreOperation="UML2.ecore#//Signal/getAttributes"/>
+      <genOperations ecoreOperation="UML2.ecore#//Signal/getOwnedMembers"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//SignalTrigger">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//SignalTrigger/signal"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//TimeTrigger">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeTrigger/isRelative"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TimeTrigger/when"/>
+      <genOperations ecoreOperation="UML2.ecore#//TimeTrigger/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//AnyTrigger"/>
     <genClasses ecoreClass="UML2.ecore#//Variable">
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Variable/scope"/>
       <genOperations ecoreOperation="UML2.ecore#//Variable/getOwner"/>
@@ -1007,75 +989,66 @@
       <genOperations ecoreOperation="UML2.ecore#//LoopNode/getOwnedElements"/>
       <genOperations ecoreOperation="UML2.ecore#//LoopNode/getInputs"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Port">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isBehavior"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Port/isService"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/required"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/redefinedPort"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/provided"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Port/protocol"/>
-      <genOperations ecoreOperation="UML2.ecore#//Port/getRedefinedElements"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateSignature">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/parameter"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/ownedParameter"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/nestedSignature"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/nestingSignature"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateSignature/template"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateSignature/getOwnedElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateSignature/getOwner"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//EncapsulatedClassifier">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//EncapsulatedClassifier/ownedPort"/>
-      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getFeatures"/>
-      <genOperations ecoreOperation="UML2.ecore#//EncapsulatedClassifier/getOwnedMembers"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateParameter">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/signature"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/parameteredElement"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/ownedParameteredElement"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/default"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameter/ownedDefault"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateParameter/getOwner"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateParameter/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//CallTrigger">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallTrigger/operation"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateableElement">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateableElement/templateBinding"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateableElement/ownedTemplateSignature"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateableElement/parameterableElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateableElement/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//MessageTrigger"/>
-    <genClasses ecoreClass="UML2.ecore#//ChangeTrigger">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ChangeTrigger/changeExpression"/>
-      <genOperations ecoreOperation="UML2.ecore#//ChangeTrigger/getOwnedElements"/>
+    <genClasses ecoreClass="UML2.ecore#//StringExpression">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StringExpression/subExpression"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//StringExpression/owningExpression"/>
+      <genOperations ecoreOperation="UML2.ecore#//StringExpression/getOwnedElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//StringExpression/getOwner"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Trigger">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Trigger/port"/>
+    <genClasses ecoreClass="UML2.ecore#//ParameterableElement">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterableElement/templateParameter"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterableElement/owningParameter"/>
+      <genOperations ecoreOperation="UML2.ecore#//ParameterableElement/getOwner"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Reception">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Reception/signal"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateBinding">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/boundElement"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/signature"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateBinding/parameterSubstitution"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getOwner"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getSources"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getTargets"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateBinding/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Signal">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Signal/ownedAttribute"/>
-      <genOperations ecoreOperation="UML2.ecore#//Signal/getAttributes"/>
-      <genOperations ecoreOperation="UML2.ecore#//Signal/getOwnedMembers"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateParameterSubstitution">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/formal"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/templateBinding"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/actual"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TemplateParameterSubstitution/ownedActual"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwner"/>
+      <genOperations ecoreOperation="UML2.ecore#//TemplateParameterSubstitution/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//SignalTrigger">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//SignalTrigger/signal"/>
+    <genClasses ecoreClass="UML2.ecore#//OperationTemplateParameter"/>
+    <genClasses ecoreClass="UML2.ecore#//ClassifierTemplateParameter">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ClassifierTemplateParameter/allowSubstitutable"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//TimeTrigger">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeTrigger/isRelative"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//TimeTrigger/when"/>
-      <genOperations ecoreOperation="UML2.ecore#//TimeTrigger/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//AnyTrigger"/>
-    <genClasses ecoreClass="UML2.ecore#//InteractionOccurrence">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/refersTo"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/actualGate"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/argument"/>
-      <genOperations ecoreOperation="UML2.ecore#//InteractionOccurrence/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Gate"/>
-    <genClasses ecoreClass="UML2.ecore#//PartDecomposition"/>
-    <genClasses ecoreClass="UML2.ecore#//InteractionOperand">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOperand/guard"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOperand/fragment"/>
-      <genOperations ecoreOperation="UML2.ecore#//InteractionOperand/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//InteractionConstraint">
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionConstraint/minint"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionConstraint/maxint"/>
-      <genOperations ecoreOperation="UML2.ecore#//InteractionConstraint/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//CombinedFragment">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//CombinedFragment/interactionOperator"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CombinedFragment/operand"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CombinedFragment/cfragmentGate"/>
-      <genOperations ecoreOperation="UML2.ecore#//CombinedFragment/getOwnedElements"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Continuation">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Continuation/setting"/>
-    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//ParameterableClassifier"/>
+    <genClasses ecoreClass="UML2.ecore#//RedefinableTemplateSignature"/>
+    <genClasses ecoreClass="UML2.ecore#//TemplateableClassifier"/>
+    <genClasses ecoreClass="UML2.ecore#//ConnectableElementTemplateParameter"/>
     <genClasses ecoreClass="UML2.ecore#//StateMachine">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/region"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//StateMachine/connectionPoint"/>
@@ -1139,6 +1112,24 @@
       <genOperations ecoreOperation="UML2.ecore#//Transition/getOwnedElements"/>
     </genClasses>
     <genClasses ecoreClass="UML2.ecore#//FinalState"/>
+    <genClasses ecoreClass="UML2.ecore#//ForkNode"/>
+    <genClasses ecoreClass="UML2.ecore#//JoinNode">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//JoinNode/isCombineDuplicate"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//JoinNode/joinSpec"/>
+      <genOperations ecoreOperation="UML2.ecore#//JoinNode/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//FlowFinalNode"/>
+    <genClasses ecoreClass="UML2.ecore#//CentralBufferNode"/>
+    <genClasses ecoreClass="UML2.ecore#//ActivityPartition">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isDimension"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isExternal"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedEdge"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedNode"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/subgroup"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/superPartition"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/represents"/>
+      <genOperations ecoreOperation="UML2.ecore#//ActivityPartition/getSuperGroup"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//CreateObjectAction">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CreateObjectAction/classifier"/>
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CreateObjectAction/result"/>
@@ -1267,23 +1258,32 @@
     <genClasses ecoreClass="UML2.ecore#//CallBehaviorAction">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//CallBehaviorAction/behavior"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ForkNode"/>
-    <genClasses ecoreClass="UML2.ecore#//JoinNode">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//JoinNode/isCombineDuplicate"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//JoinNode/joinSpec"/>
-      <genOperations ecoreOperation="UML2.ecore#//JoinNode/getOwnedElements"/>
+    <genClasses ecoreClass="UML2.ecore#//InteractionOccurrence">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/refersTo"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/actualGate"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOccurrence/argument"/>
+      <genOperations ecoreOperation="UML2.ecore#//InteractionOccurrence/getOwnedElements"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//FlowFinalNode"/>
-    <genClasses ecoreClass="UML2.ecore#//CentralBufferNode"/>
-    <genClasses ecoreClass="UML2.ecore#//ActivityPartition">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isDimension"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//ActivityPartition/isExternal"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedEdge"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/containedNode"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/subgroup"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/superPartition"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ActivityPartition/represents"/>
-      <genOperations ecoreOperation="UML2.ecore#//ActivityPartition/getSuperGroup"/>
+    <genClasses ecoreClass="UML2.ecore#//Gate"/>
+    <genClasses ecoreClass="UML2.ecore#//PartDecomposition"/>
+    <genClasses ecoreClass="UML2.ecore#//InteractionOperand">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOperand/guard"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionOperand/fragment"/>
+      <genOperations ecoreOperation="UML2.ecore#//InteractionOperand/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//InteractionConstraint">
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionConstraint/minint"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//InteractionConstraint/maxint"/>
+      <genOperations ecoreOperation="UML2.ecore#//InteractionConstraint/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//CombinedFragment">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//CombinedFragment/interactionOperator"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CombinedFragment/operand"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//CombinedFragment/cfragmentGate"/>
+      <genOperations ecoreOperation="UML2.ecore#//CombinedFragment/getOwnedElements"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Continuation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Continuation/setting"/>
     </genClasses>
     <genClasses ecoreClass="UML2.ecore#//ExpansionNode">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ExpansionNode/regionAsOutput"/>
@@ -1321,6 +1321,15 @@
         <genParameters ecoreParameter="UML2.ecore#//ProtocolTransition/setGuard/newGuard"/>
       </genOperations>
     </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//Component">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Component/isIndirectlyInstantiated"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/required"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/provided"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/realization"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/ownedMember"/>
+      <genOperations ecoreOperation="UML2.ecore#//Component/getOwnedElements"/>
+      <genOperations ecoreOperation="UML2.ecore#//Component/getClientDependencies"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//TimeExpression">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//TimeExpression/firstTime"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//TimeExpression/event"/>
@@ -1373,16 +1382,6 @@
         <genParameters ecoreParameter="UML2.ecore#//DurationConstraint/setSpecification/newSpecification"/>
       </genOperations>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//DataStoreNode"/>
-    <genClasses ecoreClass="UML2.ecore#//InterruptibleActivityRegion">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/interruptingEdge"/>
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/containedNode"/>
-    </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//ParameterSet">
-      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/parameter"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/condition"/>
-      <genOperations ecoreOperation="UML2.ecore#//ParameterSet/getOwnedElements"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//ReadExtentAction">
       <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ReadExtentAction/result"/>
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ReadExtentAction/classifier"/>
@@ -1450,15 +1449,6 @@
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//RaiseExceptionAction/exception"/>
       <genOperations ecoreOperation="UML2.ecore#//RaiseExceptionAction/getInputs"/>
     </genClasses>
-    <genClasses ecoreClass="UML2.ecore#//Component">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//Component/isIndirectlyInstantiated"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/required"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Component/provided"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/realization"/>
-      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//Component/ownedMember"/>
-      <genOperations ecoreOperation="UML2.ecore#//Component/getOwnedElements"/>
-      <genOperations ecoreOperation="UML2.ecore#//Component/getClientDependencies"/>
-    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//Deployment">
       <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/deployedArtifact"/>
       <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//Deployment/location"/>
@@ -1483,6 +1473,16 @@
     <genClasses ecoreClass="UML2.ecore#//Device"/>
     <genClasses ecoreClass="UML2.ecore#//ExecutionEnvironment"/>
     <genClasses ecoreClass="UML2.ecore#//CommunicationPath"/>
+    <genClasses ecoreClass="UML2.ecore#//DataStoreNode"/>
+    <genClasses ecoreClass="UML2.ecore#//InterruptibleActivityRegion">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/interruptingEdge"/>
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//InterruptibleActivityRegion/containedNode"/>
+    </genClasses>
+    <genClasses ecoreClass="UML2.ecore#//ParameterSet">
+      <genFeatures notify="false" createChild="false" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/parameter"/>
+      <genFeatures children="true" createChild="true" ecoreFeature="ecore:EReference UML2.ecore#//ParameterSet/condition"/>
+      <genOperations ecoreOperation="UML2.ecore#//ParameterSet/getOwnedElements"/>
+    </genClasses>
     <genClasses ecoreClass="UML2.ecore#//DeploymentSpecification">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//DeploymentSpecification/deploymentLocation"/>
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute UML2.ecore#//DeploymentSpecification/executionLocation"/>
diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd b/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd
index 51cf9dd..d5bf79c 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd
@@ -48,22 +48,6 @@
 <xsd:enumeration value="concurrent"/>
 </xsd:restriction>
 </xsd:simpleType>
-<xsd:simpleType name="InteractionOperator">
-<xsd:restriction base="xsd:NCName">
-<xsd:enumeration value="seq"/>
-<xsd:enumeration value="alt"/>
-<xsd:enumeration value="opt"/>
-<xsd:enumeration value="break"/>
-<xsd:enumeration value="par"/>
-<xsd:enumeration value="strict"/>
-<xsd:enumeration value="loop"/>
-<xsd:enumeration value="critical"/>
-<xsd:enumeration value="neg"/>
-<xsd:enumeration value="assert"/>
-<xsd:enumeration value="ignore"/>
-<xsd:enumeration value="consider"/>
-</xsd:restriction>
-</xsd:simpleType>
 <xsd:simpleType name="TransitionKind">
 <xsd:restriction base="xsd:NCName">
 <xsd:enumeration value="internal"/>
@@ -85,6 +69,22 @@
 <xsd:enumeration value="terminate"/>
 </xsd:restriction>
 </xsd:simpleType>
+<xsd:simpleType name="InteractionOperator">
+<xsd:restriction base="xsd:NCName">
+<xsd:enumeration value="seq"/>
+<xsd:enumeration value="alt"/>
+<xsd:enumeration value="opt"/>
+<xsd:enumeration value="break"/>
+<xsd:enumeration value="par"/>
+<xsd:enumeration value="strict"/>
+<xsd:enumeration value="loop"/>
+<xsd:enumeration value="critical"/>
+<xsd:enumeration value="neg"/>
+<xsd:enumeration value="assert"/>
+<xsd:enumeration value="ignore"/>
+<xsd:enumeration value="consider"/>
+</xsd:restriction>
+</xsd:simpleType>
 <xsd:simpleType name="ExpansionKind">
 <xsd:restriction base="xsd:NCName">
 <xsd:enumeration value="parallel"/>
@@ -137,6 +137,45 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="MultiplicityElement" type="uml:MultiplicityElement"/>
+<xsd:complexType name="NamedElement">
+<xsd:complexContent>
+<xsd:extension base="uml:TemplateableElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="clientDependency" type="uml:Dependency"/>
+<xsd:element name="nameExpression" type="uml:StringExpression"/>
+</xsd:choice>
+<xsd:attribute name="name" type="xsd:string"/>
+<xsd:attribute name="visibility" type="uml:VisibilityKind"/>
+<xsd:attribute name="clientDependency" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="NamedElement" type="uml:NamedElement"/>
+<xsd:complexType name="Namespace">
+<xsd:complexContent>
+<xsd:extension base="uml:NamedElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedRule" type="uml:Constraint"/>
+<xsd:element name="elementImport" type="uml:ElementImport"/>
+<xsd:element name="packageImport" type="uml:PackageImport"/>
+</xsd:choice>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Namespace" type="uml:Namespace"/>
+<xsd:complexType name="Comment">
+<xsd:complexContent>
+<xsd:extension base="uml:TemplateableElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="annotatedElement" type="uml:Element"/>
+<xsd:element name="bodyExpression" type="uml:StringExpression"/>
+</xsd:choice>
+<xsd:attribute name="body" type="xsd:string"/>
+<xsd:attribute name="annotatedElement" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Comment" type="uml:Comment"/>
 <xsd:complexType name="DirectedRelationship">
 <xsd:complexContent>
 <xsd:extension base="uml:Relationship"/>
@@ -149,6 +188,41 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Relationship" type="uml:Relationship"/>
+<xsd:complexType name="OpaqueExpression">
+<xsd:complexContent>
+<xsd:extension base="uml:ValueSpecification">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="behavior" type="uml:Behavior"/>
+</xsd:choice>
+<xsd:attribute name="body" type="xsd:string"/>
+<xsd:attribute name="language" type="xsd:string"/>
+<xsd:attribute name="behavior" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="OpaqueExpression" type="uml:OpaqueExpression"/>
+<xsd:complexType name="ValueSpecification">
+<xsd:complexContent>
+<xsd:extension base="uml:TypedElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
+</xsd:choice>
+<xsd:attribute name="templateParameter" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ValueSpecification" type="uml:ValueSpecification"/>
+<xsd:complexType name="Expression">
+<xsd:complexContent>
+<xsd:extension base="uml:OpaqueExpression">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="operand" type="uml:ValueSpecification"/>
+</xsd:choice>
+<xsd:attribute name="symbol" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Expression" type="uml:Expression"/>
 <xsd:complexType name="Class">
 <xsd:complexContent>
 <xsd:extension base="uml:EncapsulatedClassifier">
@@ -255,20 +329,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Parameter" type="uml:Parameter"/>
-<xsd:complexType name="NamedElement">
-<xsd:complexContent>
-<xsd:extension base="uml:TemplateableElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="clientDependency" type="uml:Dependency"/>
-<xsd:element name="nameExpression" type="uml:StringExpression"/>
-</xsd:choice>
-<xsd:attribute name="name" type="xsd:string"/>
-<xsd:attribute name="visibility" type="uml:VisibilityKind"/>
-<xsd:attribute name="clientDependency" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="NamedElement" type="uml:NamedElement"/>
 <xsd:complexType name="Package">
 <xsd:complexContent>
 <xsd:extension base="uml:Namespace">
@@ -319,98 +379,18 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="PrimitiveType" type="uml:PrimitiveType"/>
-<xsd:complexType name="Namespace">
+<xsd:complexType name="Constraint">
 <xsd:complexContent>
-<xsd:extension base="uml:NamedElement">
+<xsd:extension base="uml:PackageableElement">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedRule" type="uml:Constraint"/>
-<xsd:element name="elementImport" type="uml:ElementImport"/>
-<xsd:element name="packageImport" type="uml:PackageImport"/>
+<xsd:element name="specification" type="uml:ValueSpecification"/>
+<xsd:element name="constrainedElement" type="uml:Element"/>
 </xsd:choice>
+<xsd:attribute name="constrainedElement" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Namespace" type="uml:Namespace"/>
-<xsd:complexType name="Comment">
-<xsd:complexContent>
-<xsd:extension base="uml:TemplateableElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="annotatedElement" type="uml:Element"/>
-<xsd:element name="bodyExpression" type="uml:StringExpression"/>
-</xsd:choice>
-<xsd:attribute name="body" type="xsd:string"/>
-<xsd:attribute name="annotatedElement" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Comment" type="uml:Comment"/>
-<xsd:complexType name="OpaqueExpression">
-<xsd:complexContent>
-<xsd:extension base="uml:ValueSpecification">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="behavior" type="uml:Behavior"/>
-</xsd:choice>
-<xsd:attribute name="body" type="xsd:string"/>
-<xsd:attribute name="language" type="xsd:string"/>
-<xsd:attribute name="behavior" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="OpaqueExpression" type="uml:OpaqueExpression"/>
-<xsd:complexType name="ValueSpecification">
-<xsd:complexContent>
-<xsd:extension base="uml:TypedElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
-</xsd:choice>
-<xsd:attribute name="templateParameter" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ValueSpecification" type="uml:ValueSpecification"/>
-<xsd:complexType name="Expression">
-<xsd:complexContent>
-<xsd:extension base="uml:OpaqueExpression">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="operand" type="uml:ValueSpecification"/>
-</xsd:choice>
-<xsd:attribute name="symbol" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Expression" type="uml:Expression"/>
-<xsd:complexType name="Classifier">
-<xsd:complexContent>
-<xsd:extension base="uml:Namespace">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
-<xsd:element name="generalization" type="uml:Generalization"/>
-<xsd:element name="redefinedClassifier" type="uml:Classifier"/>
-<xsd:element name="substitution" type="uml:Substitution"/>
-<xsd:element name="powertypeExtent" type="uml:GeneralizationSet"/>
-<xsd:element name="ownedUseCase" type="uml:UseCase"/>
-<xsd:element name="representation" type="uml:CollaborationOccurrence"/>
-<xsd:element name="occurrence" type="uml:CollaborationOccurrence"/>
-</xsd:choice>
-<xsd:attribute name="templateParameter" type="xsd:string"/>
-<xsd:attribute name="packageableElement_visibility" type="uml:VisibilityKind"/>
-<xsd:attribute name="isLeaf" type="xsd:string"/>
-<xsd:attribute name="isAbstract" type="xsd:string"/>
-<xsd:attribute name="redefinedClassifier" type="xsd:string"/>
-<xsd:attribute name="powertypeExtent" type="xsd:string"/>
-<xsd:attribute name="representation" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Classifier" type="uml:Classifier"/>
-<xsd:complexType name="Feature">
-<xsd:complexContent>
-<xsd:extension base="uml:RedefinableElement">
-<xsd:attribute name="isStatic" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Feature" type="uml:Feature"/>
+<xsd:element name="Constraint" type="uml:Constraint"/>
 <xsd:complexType name="LiteralBoolean">
 <xsd:complexContent>
 <xsd:extension base="uml:LiteralSpecification">
@@ -455,18 +435,38 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="LiteralUnlimitedNatural" type="uml:LiteralUnlimitedNatural"/>
-<xsd:complexType name="Constraint">
+<xsd:complexType name="Classifier">
 <xsd:complexContent>
-<xsd:extension base="uml:PackageableElement">
+<xsd:extension base="uml:Namespace">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="specification" type="uml:ValueSpecification"/>
-<xsd:element name="constrainedElement" type="uml:Element"/>
+<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
+<xsd:element name="generalization" type="uml:Generalization"/>
+<xsd:element name="redefinedClassifier" type="uml:Classifier"/>
+<xsd:element name="substitution" type="uml:Substitution"/>
+<xsd:element name="powertypeExtent" type="uml:GeneralizationSet"/>
+<xsd:element name="ownedUseCase" type="uml:UseCase"/>
+<xsd:element name="representation" type="uml:CollaborationOccurrence"/>
+<xsd:element name="occurrence" type="uml:CollaborationOccurrence"/>
 </xsd:choice>
-<xsd:attribute name="constrainedElement" type="xsd:string"/>
+<xsd:attribute name="templateParameter" type="xsd:string"/>
+<xsd:attribute name="packageableElement_visibility" type="uml:VisibilityKind"/>
+<xsd:attribute name="isLeaf" type="xsd:string"/>
+<xsd:attribute name="isAbstract" type="xsd:string"/>
+<xsd:attribute name="redefinedClassifier" type="xsd:string"/>
+<xsd:attribute name="powertypeExtent" type="xsd:string"/>
+<xsd:attribute name="representation" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Constraint" type="uml:Constraint"/>
+<xsd:element name="Classifier" type="uml:Classifier"/>
+<xsd:complexType name="Feature">
+<xsd:complexContent>
+<xsd:extension base="uml:RedefinableElement">
+<xsd:attribute name="isStatic" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Feature" type="uml:Feature"/>
 <xsd:complexType name="BehavioralFeature">
 <xsd:complexContent>
 <xsd:extension base="uml:Namespace">
@@ -502,6 +502,28 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="StructuralFeature" type="uml:StructuralFeature"/>
+<xsd:complexType name="Generalization">
+<xsd:complexContent>
+<xsd:extension base="uml:DirectedRelationship">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="general" type="uml:Classifier"/>
+<xsd:element name="generalizationSet" type="uml:GeneralizationSet"/>
+</xsd:choice>
+<xsd:attribute name="isSubstitutable" type="xsd:string"/>
+<xsd:attribute name="general" type="xsd:string"/>
+<xsd:attribute name="generalizationSet" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Generalization" type="uml:Generalization"/>
+<xsd:complexType name="RedefinableElement">
+<xsd:complexContent>
+<xsd:extension base="uml:NamedElement">
+<xsd:attribute name="isLeaf" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="RedefinableElement" type="uml:RedefinableElement"/>
 <xsd:complexType name="InstanceSpecification">
 <xsd:complexContent>
 <xsd:extension base="uml:PackageableElement">
@@ -539,28 +561,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="InstanceValue" type="uml:InstanceValue"/>
-<xsd:complexType name="RedefinableElement">
-<xsd:complexContent>
-<xsd:extension base="uml:NamedElement">
-<xsd:attribute name="isLeaf" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="RedefinableElement" type="uml:RedefinableElement"/>
-<xsd:complexType name="Generalization">
-<xsd:complexContent>
-<xsd:extension base="uml:DirectedRelationship">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="general" type="uml:Classifier"/>
-<xsd:element name="generalizationSet" type="uml:GeneralizationSet"/>
-</xsd:choice>
-<xsd:attribute name="isSubstitutable" type="xsd:string"/>
-<xsd:attribute name="general" type="xsd:string"/>
-<xsd:attribute name="generalizationSet" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Generalization" type="uml:Generalization"/>
 <xsd:complexType name="PackageableElement">
 <xsd:complexContent>
 <xsd:extension base="uml:NamedElement">
@@ -664,14 +664,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="ExtensionEnd" type="uml:ExtensionEnd"/>
-<xsd:complexType name="Model">
-<xsd:complexContent>
-<xsd:extension base="uml:Package">
-<xsd:attribute name="viewpoint" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Model" type="uml:Model"/>
 <xsd:complexType name="Permission">
 <xsd:complexContent>
 <xsd:extension base="uml:Dependency"/>
@@ -729,58 +721,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Substitution" type="uml:Substitution"/>
-<xsd:complexType name="GeneralizationSet">
-<xsd:complexContent>
-<xsd:extension base="uml:PackageableElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="powertype" type="uml:Classifier"/>
-<xsd:element name="generalization" type="uml:Generalization"/>
-</xsd:choice>
-<xsd:attribute name="isCovering" type="xsd:string"/>
-<xsd:attribute name="isDisjoint" type="xsd:string"/>
-<xsd:attribute name="powertype" type="xsd:string"/>
-<xsd:attribute name="generalization" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="GeneralizationSet" type="uml:GeneralizationSet"/>
-<xsd:complexType name="InformationItem">
-<xsd:complexContent>
-<xsd:extension base="uml:Classifier">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="represented" type="uml:Classifier"/>
-</xsd:choice>
-<xsd:attribute name="represented" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="InformationItem" type="uml:InformationItem"/>
-<xsd:complexType name="InformationFlow">
-<xsd:complexContent>
-<xsd:extension base="uml:DirectedRelationship">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="realization" type="uml:Relationship"/>
-<xsd:element name="conveyed" type="uml:Classifier"/>
-</xsd:choice>
-<xsd:attribute name="realization" type="xsd:string"/>
-<xsd:attribute name="conveyed" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="InformationFlow" type="uml:InformationFlow"/>
-<xsd:complexType name="AssociationClass">
-<xsd:complexContent>
-<xsd:extension base="uml:Class">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedEnd" type="uml:Property"/>
-<xsd:element name="memberEnd" type="uml:Property"/>
-</xsd:choice>
-<xsd:attribute name="isDerived" type="xsd:string"/>
-<xsd:attribute name="memberEnd" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="AssociationClass" type="uml:AssociationClass"/>
 <xsd:complexType name="Behavior">
 <xsd:complexContent>
 <xsd:extension base="uml:Class">
@@ -832,31 +772,147 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Activity" type="uml:Activity"/>
-<xsd:complexType name="Artifact">
+<xsd:complexType name="AssociationClass">
+<xsd:complexContent>
+<xsd:extension base="uml:Class">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedEnd" type="uml:Property"/>
+<xsd:element name="memberEnd" type="uml:Property"/>
+</xsd:choice>
+<xsd:attribute name="isDerived" type="xsd:string"/>
+<xsd:attribute name="memberEnd" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="AssociationClass" type="uml:AssociationClass"/>
+<xsd:complexType name="Model">
+<xsd:complexContent>
+<xsd:extension base="uml:Package">
+<xsd:attribute name="viewpoint" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Model" type="uml:Model"/>
+<xsd:complexType name="InformationItem">
 <xsd:complexContent>
 <xsd:extension base="uml:Classifier">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="nestedArtifact" type="uml:Artifact"/>
-<xsd:element name="manifestation" type="uml:Manifestation"/>
-<xsd:element name="ownedOperation" type="uml:Operation"/>
-<xsd:element name="ownedAttribute" type="uml:Property"/>
+<xsd:element name="represented" type="uml:Classifier"/>
 </xsd:choice>
-<xsd:attribute name="fileName" type="xsd:string"/>
+<xsd:attribute name="represented" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Artifact" type="uml:Artifact"/>
-<xsd:complexType name="Manifestation">
+<xsd:element name="InformationItem" type="uml:InformationItem"/>
+<xsd:complexType name="InformationFlow">
 <xsd:complexContent>
-<xsd:extension base="uml:Abstraction">
+<xsd:extension base="uml:DirectedRelationship">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="utilizedElement" type="uml:PackageableElement"/>
+<xsd:element name="realization" type="uml:Relationship"/>
+<xsd:element name="conveyed" type="uml:Classifier"/>
 </xsd:choice>
-<xsd:attribute name="utilizedElement" type="xsd:string"/>
+<xsd:attribute name="realization" type="xsd:string"/>
+<xsd:attribute name="conveyed" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Manifestation" type="uml:Manifestation"/>
+<xsd:element name="InformationFlow" type="uml:InformationFlow"/>
+<xsd:complexType name="GeneralizationSet">
+<xsd:complexContent>
+<xsd:extension base="uml:PackageableElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="powertype" type="uml:Classifier"/>
+<xsd:element name="generalization" type="uml:Generalization"/>
+</xsd:choice>
+<xsd:attribute name="isCovering" type="xsd:string"/>
+<xsd:attribute name="isDisjoint" type="xsd:string"/>
+<xsd:attribute name="powertype" type="xsd:string"/>
+<xsd:attribute name="generalization" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="GeneralizationSet" type="uml:GeneralizationSet"/>
+<xsd:complexType name="ConnectorEnd">
+<xsd:complexContent>
+<xsd:extension base="uml:MultiplicityElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="role" type="uml:ConnectableElement"/>
+<xsd:element name="partWithPort" type="uml:Property"/>
+</xsd:choice>
+<xsd:attribute name="role" type="xsd:string"/>
+<xsd:attribute name="partWithPort" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ConnectorEnd" type="uml:ConnectorEnd"/>
+<xsd:complexType name="ConnectableElement">
+<xsd:complexContent>
+<xsd:extension base="uml:NamedElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
+<xsd:element name="end" type="uml:ConnectorEnd"/>
+</xsd:choice>
+<xsd:attribute name="templateParameter" type="xsd:string"/>
+<xsd:attribute name="end" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ConnectableElement" type="uml:ConnectableElement"/>
+<xsd:complexType name="Connector">
+<xsd:complexContent>
+<xsd:extension base="uml:Feature">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="type" type="uml:Association"/>
+<xsd:element name="redefinedConnector" type="uml:Connector"/>
+<xsd:element name="end" type="uml:ConnectorEnd"/>
+<xsd:element name="contract" type="uml:Behavior"/>
+</xsd:choice>
+<xsd:attribute name="kind" type="uml:ConnectorKind"/>
+<xsd:attribute name="type" type="xsd:string"/>
+<xsd:attribute name="redefinedConnector" type="xsd:string"/>
+<xsd:attribute name="contract" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Connector" type="uml:Connector"/>
+<xsd:complexType name="StructuredClassifier">
+<xsd:complexContent>
+<xsd:extension base="uml:Classifier">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedAttribute" type="uml:Property"/>
+<xsd:element name="ownedConnector" type="uml:Connector"/>
+</xsd:choice>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="StructuredClassifier" type="uml:StructuredClassifier"/>
+<xsd:complexType name="Interface">
+<xsd:complexContent>
+<xsd:extension base="uml:Classifier">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedAttribute" type="uml:Property"/>
+<xsd:element name="ownedOperation" type="uml:Operation"/>
+<xsd:element name="redefinedInterface" type="uml:Interface"/>
+<xsd:element name="nestedClassifier" type="uml:Classifier"/>
+<xsd:element name="ownedReception" type="uml:Reception"/>
+<xsd:element name="protocol" type="uml:ProtocolStateMachine"/>
+</xsd:choice>
+<xsd:attribute name="redefinedInterface" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Interface" type="uml:Interface"/>
+<xsd:complexType name="Implementation">
+<xsd:complexContent>
+<xsd:extension base="uml:Realization">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="contract" type="uml:Interface"/>
+</xsd:choice>
+<xsd:attribute name="contract" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Implementation" type="uml:Implementation"/>
 <xsd:complexType name="Actor">
 <xsd:complexContent>
 <xsd:extension base="uml:Classifier"/>
@@ -908,33 +964,31 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Include" type="uml:Include"/>
-<xsd:complexType name="Interface">
+<xsd:complexType name="Artifact">
 <xsd:complexContent>
 <xsd:extension base="uml:Classifier">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedAttribute" type="uml:Property"/>
+<xsd:element name="nestedArtifact" type="uml:Artifact"/>
+<xsd:element name="manifestation" type="uml:Manifestation"/>
 <xsd:element name="ownedOperation" type="uml:Operation"/>
-<xsd:element name="redefinedInterface" type="uml:Interface"/>
-<xsd:element name="nestedClassifier" type="uml:Classifier"/>
-<xsd:element name="ownedReception" type="uml:Reception"/>
-<xsd:element name="protocol" type="uml:ProtocolStateMachine"/>
+<xsd:element name="ownedAttribute" type="uml:Property"/>
 </xsd:choice>
-<xsd:attribute name="redefinedInterface" type="xsd:string"/>
+<xsd:attribute name="fileName" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Interface" type="uml:Interface"/>
-<xsd:complexType name="Implementation">
+<xsd:element name="Artifact" type="uml:Artifact"/>
+<xsd:complexType name="Manifestation">
 <xsd:complexContent>
-<xsd:extension base="uml:Realization">
+<xsd:extension base="uml:Abstraction">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="contract" type="uml:Interface"/>
+<xsd:element name="utilizedElement" type="uml:PackageableElement"/>
 </xsd:choice>
-<xsd:attribute name="contract" type="xsd:string"/>
+<xsd:attribute name="utilizedElement" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Implementation" type="uml:Implementation"/>
+<xsd:element name="Manifestation" type="uml:Manifestation"/>
 <xsd:complexType name="ActivityEdge">
 <xsd:complexContent>
 <xsd:extension base="uml:RedefinableElement">
@@ -1121,60 +1175,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="ValuePin" type="uml:ValuePin"/>
-<xsd:complexType name="ConnectorEnd">
-<xsd:complexContent>
-<xsd:extension base="uml:MultiplicityElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="role" type="uml:ConnectableElement"/>
-<xsd:element name="partWithPort" type="uml:Property"/>
-</xsd:choice>
-<xsd:attribute name="role" type="xsd:string"/>
-<xsd:attribute name="partWithPort" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ConnectorEnd" type="uml:ConnectorEnd"/>
-<xsd:complexType name="ConnectableElement">
-<xsd:complexContent>
-<xsd:extension base="uml:NamedElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="templateParameter" type="uml:TemplateParameter"/>
-<xsd:element name="end" type="uml:ConnectorEnd"/>
-</xsd:choice>
-<xsd:attribute name="templateParameter" type="xsd:string"/>
-<xsd:attribute name="end" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ConnectableElement" type="uml:ConnectableElement"/>
-<xsd:complexType name="Connector">
-<xsd:complexContent>
-<xsd:extension base="uml:Feature">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="type" type="uml:Association"/>
-<xsd:element name="redefinedConnector" type="uml:Connector"/>
-<xsd:element name="end" type="uml:ConnectorEnd"/>
-<xsd:element name="contract" type="uml:Behavior"/>
-</xsd:choice>
-<xsd:attribute name="kind" type="uml:ConnectorKind"/>
-<xsd:attribute name="type" type="xsd:string"/>
-<xsd:attribute name="redefinedConnector" type="xsd:string"/>
-<xsd:attribute name="contract" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Connector" type="uml:Connector"/>
-<xsd:complexType name="StructuredClassifier">
-<xsd:complexContent>
-<xsd:extension base="uml:Classifier">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedAttribute" type="uml:Property"/>
-<xsd:element name="ownedConnector" type="uml:Connector"/>
-</xsd:choice>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="StructuredClassifier" type="uml:StructuredClassifier"/>
 <xsd:complexType name="CollaborationOccurrence">
 <xsd:complexContent>
 <xsd:extension base="uml:NamedElement">
@@ -1200,115 +1200,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Collaboration" type="uml:Collaboration"/>
-<xsd:complexType name="Variable">
-<xsd:complexContent>
-<xsd:extension base="uml:ConnectableElement">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="type" type="uml:Type"/>
-</xsd:choice>
-<xsd:attribute name="type" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Variable" type="uml:Variable"/>
-<xsd:complexType name="StructuredActivityNode">
-<xsd:complexContent>
-<xsd:extension base="uml:Action">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedRule" type="uml:Constraint"/>
-<xsd:element name="elementImport" type="uml:ElementImport"/>
-<xsd:element name="packageImport" type="uml:PackageImport"/>
-<xsd:element name="variable" type="uml:Variable"/>
-<xsd:element name="containedNode" type="uml:ActivityNode"/>
-<xsd:element name="containedEdge" type="uml:ActivityEdge"/>
-</xsd:choice>
-<xsd:attribute name="mustIsolate" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="StructuredActivityNode" type="uml:StructuredActivityNode"/>
-<xsd:complexType name="ConditionalNode">
-<xsd:complexContent>
-<xsd:extension base="uml:StructuredActivityNode">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="clause" type="uml:Clause"/>
-<xsd:element name="result" type="uml:OutputPin"/>
-</xsd:choice>
-<xsd:attribute name="isDeterminate" type="xsd:string"/>
-<xsd:attribute name="isAssured" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ConditionalNode" type="uml:ConditionalNode"/>
-<xsd:complexType name="Clause">
-<xsd:complexContent>
-<xsd:extension base="uml:Element">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="test" type="uml:ActivityNode"/>
-<xsd:element name="body" type="uml:ActivityNode"/>
-<xsd:element name="predecessorClause" type="uml:Clause"/>
-<xsd:element name="successorClause" type="uml:Clause"/>
-<xsd:element name="decider" type="uml:OutputPin"/>
-<xsd:element name="bodyOutput" type="uml:OutputPin"/>
-</xsd:choice>
-<xsd:attribute name="test" type="xsd:string"/>
-<xsd:attribute name="body" type="xsd:string"/>
-<xsd:attribute name="predecessorClause" type="xsd:string"/>
-<xsd:attribute name="successorClause" type="xsd:string"/>
-<xsd:attribute name="decider" type="xsd:string"/>
-<xsd:attribute name="bodyOutput" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Clause" type="uml:Clause"/>
-<xsd:complexType name="LoopNode">
-<xsd:complexContent>
-<xsd:extension base="uml:StructuredActivityNode">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="bodyPart" type="uml:ActivityNode"/>
-<xsd:element name="setupPart" type="uml:ActivityNode"/>
-<xsd:element name="decider" type="uml:OutputPin"/>
-<xsd:element name="test" type="uml:ActivityNode"/>
-<xsd:element name="result" type="uml:OutputPin"/>
-<xsd:element name="loopVariable" type="uml:OutputPin"/>
-<xsd:element name="bodyOutput" type="uml:OutputPin"/>
-<xsd:element name="loopVariableInput" type="uml:InputPin"/>
-</xsd:choice>
-<xsd:attribute name="isTestedFirst" type="xsd:string"/>
-<xsd:attribute name="bodyPart" type="xsd:string"/>
-<xsd:attribute name="setupPart" type="xsd:string"/>
-<xsd:attribute name="decider" type="xsd:string"/>
-<xsd:attribute name="test" type="xsd:string"/>
-<xsd:attribute name="bodyOutput" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="LoopNode" type="uml:LoopNode"/>
-<xsd:complexType name="Port">
-<xsd:complexContent>
-<xsd:extension base="uml:Property">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="redefinedPort" type="uml:Port"/>
-<xsd:element name="protocol" type="uml:ProtocolStateMachine"/>
-</xsd:choice>
-<xsd:attribute name="isBehavior" type="xsd:string"/>
-<xsd:attribute name="isService" type="xsd:string"/>
-<xsd:attribute name="redefinedPort" type="xsd:string"/>
-<xsd:attribute name="protocol" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Port" type="uml:Port"/>
-<xsd:complexType name="EncapsulatedClassifier">
-<xsd:complexContent>
-<xsd:extension base="uml:StructuredClassifier">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="ownedPort" type="uml:Port"/>
-</xsd:choice>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="EncapsulatedClassifier" type="uml:EncapsulatedClassifier"/>
 <xsd:complexType name="Interaction">
 <xsd:annotation>
 <xsd:documentation>The point is that the InteractionConstraint "received" from StructuralArchitecture will consist of a set of such units described by sequence diagrams (or collaboration diagrams).</xsd:documentation>
@@ -1475,6 +1366,31 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="Stop" type="uml:Stop"/>
+<xsd:complexType name="Port">
+<xsd:complexContent>
+<xsd:extension base="uml:Property">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="redefinedPort" type="uml:Port"/>
+<xsd:element name="protocol" type="uml:ProtocolStateMachine"/>
+</xsd:choice>
+<xsd:attribute name="isBehavior" type="xsd:string"/>
+<xsd:attribute name="isService" type="xsd:string"/>
+<xsd:attribute name="redefinedPort" type="xsd:string"/>
+<xsd:attribute name="protocol" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Port" type="uml:Port"/>
+<xsd:complexType name="EncapsulatedClassifier">
+<xsd:complexContent>
+<xsd:extension base="uml:StructuredClassifier">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedPort" type="uml:Port"/>
+</xsd:choice>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="EncapsulatedClassifier" type="uml:EncapsulatedClassifier"/>
 <xsd:complexType name="CallTrigger">
 <xsd:complexContent>
 <xsd:extension base="uml:MessageTrigger">
@@ -1562,6 +1478,90 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="AnyTrigger" type="uml:AnyTrigger"/>
+<xsd:complexType name="Variable">
+<xsd:complexContent>
+<xsd:extension base="uml:ConnectableElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="type" type="uml:Type"/>
+</xsd:choice>
+<xsd:attribute name="type" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Variable" type="uml:Variable"/>
+<xsd:complexType name="StructuredActivityNode">
+<xsd:complexContent>
+<xsd:extension base="uml:Action">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="ownedRule" type="uml:Constraint"/>
+<xsd:element name="elementImport" type="uml:ElementImport"/>
+<xsd:element name="packageImport" type="uml:PackageImport"/>
+<xsd:element name="variable" type="uml:Variable"/>
+<xsd:element name="containedNode" type="uml:ActivityNode"/>
+<xsd:element name="containedEdge" type="uml:ActivityEdge"/>
+</xsd:choice>
+<xsd:attribute name="mustIsolate" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="StructuredActivityNode" type="uml:StructuredActivityNode"/>
+<xsd:complexType name="ConditionalNode">
+<xsd:complexContent>
+<xsd:extension base="uml:StructuredActivityNode">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="clause" type="uml:Clause"/>
+<xsd:element name="result" type="uml:OutputPin"/>
+</xsd:choice>
+<xsd:attribute name="isDeterminate" type="xsd:string"/>
+<xsd:attribute name="isAssured" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ConditionalNode" type="uml:ConditionalNode"/>
+<xsd:complexType name="Clause">
+<xsd:complexContent>
+<xsd:extension base="uml:Element">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="test" type="uml:ActivityNode"/>
+<xsd:element name="body" type="uml:ActivityNode"/>
+<xsd:element name="predecessorClause" type="uml:Clause"/>
+<xsd:element name="successorClause" type="uml:Clause"/>
+<xsd:element name="decider" type="uml:OutputPin"/>
+<xsd:element name="bodyOutput" type="uml:OutputPin"/>
+</xsd:choice>
+<xsd:attribute name="test" type="xsd:string"/>
+<xsd:attribute name="body" type="xsd:string"/>
+<xsd:attribute name="predecessorClause" type="xsd:string"/>
+<xsd:attribute name="successorClause" type="xsd:string"/>
+<xsd:attribute name="decider" type="xsd:string"/>
+<xsd:attribute name="bodyOutput" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Clause" type="uml:Clause"/>
+<xsd:complexType name="LoopNode">
+<xsd:complexContent>
+<xsd:extension base="uml:StructuredActivityNode">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="bodyPart" type="uml:ActivityNode"/>
+<xsd:element name="setupPart" type="uml:ActivityNode"/>
+<xsd:element name="decider" type="uml:OutputPin"/>
+<xsd:element name="test" type="uml:ActivityNode"/>
+<xsd:element name="result" type="uml:OutputPin"/>
+<xsd:element name="loopVariable" type="uml:OutputPin"/>
+<xsd:element name="bodyOutput" type="uml:OutputPin"/>
+<xsd:element name="loopVariableInput" type="uml:InputPin"/>
+</xsd:choice>
+<xsd:attribute name="isTestedFirst" type="xsd:string"/>
+<xsd:attribute name="bodyPart" type="xsd:string"/>
+<xsd:attribute name="setupPart" type="xsd:string"/>
+<xsd:attribute name="decider" type="xsd:string"/>
+<xsd:attribute name="test" type="xsd:string"/>
+<xsd:attribute name="bodyOutput" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="LoopNode" type="uml:LoopNode"/>
 <xsd:complexType name="TemplateSignature">
 <xsd:complexContent>
 <xsd:extension base="uml:Element">
@@ -1699,121 +1699,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="ConnectableElementTemplateParameter" type="uml:ConnectableElementTemplateParameter"/>
-<xsd:complexType name="InteractionOccurrence">
-<xsd:annotation>
-<xsd:documentation>A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)</xsd:documentation>
-</xsd:annotation>
-<xsd:complexContent>
-<xsd:extension base="uml:InteractionFragment">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="refersTo" type="uml:Interaction"/>
-<xsd:element name="actualGate" type="uml:Gate"/>
-<xsd:element name="argument" type="uml:InputPin"/>
-</xsd:choice>
-<xsd:attribute name="refersTo" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="InteractionOccurrence" type="uml:InteractionOccurrence">
-<xsd:annotation>
-<xsd:documentation>A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)</xsd:documentation>
-</xsd:annotation>
-</xsd:element>
-<xsd:complexType name="Gate">
-<xsd:annotation>
-<xsd:documentation>A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.
-More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.
-Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)</xsd:documentation>
-</xsd:annotation>
-<xsd:complexContent>
-<xsd:extension base="uml:MessageEnd"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Gate" type="uml:Gate">
-<xsd:annotation>
-<xsd:documentation>A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.
-More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.
-Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)</xsd:documentation>
-</xsd:annotation>
-</xsd:element>
-<xsd:complexType name="PartDecomposition">
-<xsd:annotation>
-<xsd:documentation>A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram.</xsd:documentation>
-</xsd:annotation>
-<xsd:complexContent>
-<xsd:extension base="uml:InteractionOccurrence"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="PartDecomposition" type="uml:PartDecomposition">
-<xsd:annotation>
-<xsd:documentation>A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram.</xsd:documentation>
-</xsd:annotation>
-</xsd:element>
-<xsd:complexType name="InteractionOperand">
-<xsd:annotation>
-<xsd:documentation>An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.
-An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)</xsd:documentation>
-</xsd:annotation>
-<xsd:complexContent>
-<xsd:extension base="uml:Namespace">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="covered" type="uml:Lifeline"/>
-<xsd:element name="generalOrdering" type="uml:GeneralOrdering"/>
-<xsd:element name="guard" type="uml:InteractionConstraint"/>
-<xsd:element name="fragment" type="uml:InteractionFragment"/>
-</xsd:choice>
-<xsd:attribute name="covered" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="InteractionOperand" type="uml:InteractionOperand">
-<xsd:annotation>
-<xsd:documentation>An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.
-An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)</xsd:documentation>
-</xsd:annotation>
-</xsd:element>
-<xsd:complexType name="InteractionConstraint">
-<xsd:complexContent>
-<xsd:extension base="uml:Constraint">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="minint" type="uml:ValueSpecification"/>
-<xsd:element name="maxint" type="uml:ValueSpecification"/>
-</xsd:choice>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="InteractionConstraint" type="uml:InteractionConstraint"/>
-<xsd:complexType name="CombinedFragment">
-<xsd:annotation>
-<xsd:documentation>An interaction fragment that decomposes into a set of other interaction fragments under some operator.
-In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.
-Combined interactions consist of operands and an implicit or explicit operator</xsd:documentation>
-</xsd:annotation>
-<xsd:complexContent>
-<xsd:extension base="uml:InteractionFragment">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="operand" type="uml:InteractionOperand"/>
-<xsd:element name="cfragmentGate" type="uml:Gate"/>
-</xsd:choice>
-<xsd:attribute name="interactionOperator" type="uml:InteractionOperator"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="CombinedFragment" type="uml:CombinedFragment">
-<xsd:annotation>
-<xsd:documentation>An interaction fragment that decomposes into a set of other interaction fragments under some operator.
-In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.
-Combined interactions consist of operands and an implicit or explicit operator</xsd:documentation>
-</xsd:annotation>
-</xsd:element>
-<xsd:complexType name="Continuation">
-<xsd:complexContent>
-<xsd:extension base="uml:InteractionFragment">
-<xsd:attribute name="setting" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Continuation" type="uml:Continuation"/>
 <xsd:complexType name="StateMachine">
 <xsd:complexContent>
 <xsd:extension base="uml:Behavior">
@@ -1972,48 +1857,6 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="ActivityPartition" type="uml:ActivityPartition"/>
-<xsd:complexType name="ExpansionNode">
-<xsd:complexContent>
-<xsd:extension base="uml:ObjectNode">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="regionAsOutput" type="uml:ExpansionRegion"/>
-<xsd:element name="regionAsInput" type="uml:ExpansionRegion"/>
-</xsd:choice>
-<xsd:attribute name="regionAsOutput" type="xsd:string"/>
-<xsd:attribute name="regionAsInput" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ExpansionNode" type="uml:ExpansionNode"/>
-<xsd:complexType name="ExpansionRegion">
-<xsd:complexContent>
-<xsd:extension base="uml:StructuredActivityNode">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="outputElement" type="uml:ExpansionNode"/>
-<xsd:element name="inputElement" type="uml:ExpansionNode"/>
-</xsd:choice>
-<xsd:attribute name="mode" type="uml:ExpansionKind"/>
-<xsd:attribute name="outputElement" type="xsd:string"/>
-<xsd:attribute name="inputElement" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ExpansionRegion" type="uml:ExpansionRegion"/>
-<xsd:complexType name="ExceptionHandler">
-<xsd:complexContent>
-<xsd:extension base="uml:Element">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="handlerBody" type="uml:ExecutableNode"/>
-<xsd:element name="exceptionInput" type="uml:ObjectNode"/>
-<xsd:element name="exceptionType" type="uml:Classifier"/>
-</xsd:choice>
-<xsd:attribute name="handlerBody" type="xsd:string"/>
-<xsd:attribute name="exceptionInput" type="xsd:string"/>
-<xsd:attribute name="exceptionType" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="ExceptionHandler" type="uml:ExceptionHandler"/>
 <xsd:complexType name="CreateObjectAction">
 <xsd:complexContent>
 <xsd:extension base="uml:Action">
@@ -2345,75 +2188,163 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="CallBehaviorAction" type="uml:CallBehaviorAction"/>
-<xsd:complexType name="Component">
+<xsd:complexType name="InteractionOccurrence">
+<xsd:annotation>
+<xsd:documentation>A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)</xsd:documentation>
+</xsd:annotation>
 <xsd:complexContent>
-<xsd:extension base="uml:Class">
+<xsd:extension base="uml:InteractionFragment">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="realization" type="uml:Realization"/>
-<xsd:element name="ownedMember" type="uml:PackageableElement"/>
+<xsd:element name="refersTo" type="uml:Interaction"/>
+<xsd:element name="actualGate" type="uml:Gate"/>
+<xsd:element name="argument" type="uml:InputPin"/>
 </xsd:choice>
-<xsd:attribute name="isIndirectlyInstantiated" type="xsd:string"/>
+<xsd:attribute name="refersTo" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Component" type="uml:Component"/>
-<xsd:complexType name="Deployment">
+<xsd:element name="InteractionOccurrence" type="uml:InteractionOccurrence">
+<xsd:annotation>
+<xsd:documentation>A reference to an interaction with actual values. The interpretation is that the sequence diagram replaces the reference (with actual parameters substituted)</xsd:documentation>
+</xsd:annotation>
+</xsd:element>
+<xsd:complexType name="Gate">
+<xsd:annotation>
+<xsd:documentation>A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.
+More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.
+Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)</xsd:documentation>
+</xsd:annotation>
 <xsd:complexContent>
-<xsd:extension base="uml:Dependency">
+<xsd:extension base="uml:MessageEnd"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Gate" type="uml:Gate">
+<xsd:annotation>
+<xsd:documentation>A gate is a connection point. When the conceptual replacement of InteractionReferences with its referred Sequence Diagram is done, the actual gates of the reference must match the formal gates of the sequence diagram.
+More implicitly the unnamed gate of the atomic fragment match adjacent fragment gates.
+Expression gates are found on the border of the expression and they serve both as formal and actual gates. (Details to be explained other place)</xsd:documentation>
+</xsd:annotation>
+</xsd:element>
+<xsd:complexType name="PartDecomposition">
+<xsd:annotation>
+<xsd:documentation>A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram.</xsd:documentation>
+</xsd:annotation>
+<xsd:complexContent>
+<xsd:extension base="uml:InteractionOccurrence"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="PartDecomposition" type="uml:PartDecomposition">
+<xsd:annotation>
+<xsd:documentation>A part decomposition is a special InteractionReference that defines the behavior within one interacting entity (Part) in one sequence diagram.</xsd:documentation>
+</xsd:annotation>
+</xsd:element>
+<xsd:complexType name="InteractionOperand">
+<xsd:annotation>
+<xsd:documentation>An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.
+An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)</xsd:documentation>
+</xsd:annotation>
+<xsd:complexContent>
+<xsd:extension base="uml:Namespace">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="deployedArtifact" type="uml:DeployedArtifact"/>
-<xsd:element name="configuration" type="uml:DeploymentSpecification"/>
+<xsd:element name="covered" type="uml:Lifeline"/>
+<xsd:element name="generalOrdering" type="uml:GeneralOrdering"/>
+<xsd:element name="guard" type="uml:InteractionConstraint"/>
+<xsd:element name="fragment" type="uml:InteractionFragment"/>
 </xsd:choice>
-<xsd:attribute name="deployedArtifact" type="xsd:string"/>
+<xsd:attribute name="covered" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Deployment" type="uml:Deployment"/>
-<xsd:complexType name="DeployedArtifact">
+<xsd:element name="InteractionOperand" type="uml:InteractionOperand">
+<xsd:annotation>
+<xsd:documentation>An InteractionExpressionOperand is of course an InteractionFragment such that expressions can be nested freely.
+An operand may be guarded. If the guard evaluates to true, the operand is eligible in the expression, otherwise it is ignored. (very intuitively speaking, formalization has been done in Z.120 Annex B)</xsd:documentation>
+</xsd:annotation>
+</xsd:element>
+<xsd:complexType name="InteractionConstraint">
 <xsd:complexContent>
-<xsd:extension base="uml:NamedElement"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="DeployedArtifact" type="uml:DeployedArtifact"/>
-<xsd:complexType name="DeploymentTarget">
-<xsd:complexContent>
-<xsd:extension base="uml:NamedElement">
+<xsd:extension base="uml:Constraint">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="deployment" type="uml:Deployment"/>
+<xsd:element name="minint" type="uml:ValueSpecification"/>
+<xsd:element name="maxint" type="uml:ValueSpecification"/>
 </xsd:choice>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="DeploymentTarget" type="uml:DeploymentTarget"/>
-<xsd:complexType name="Node">
+<xsd:element name="InteractionConstraint" type="uml:InteractionConstraint"/>
+<xsd:complexType name="CombinedFragment">
+<xsd:annotation>
+<xsd:documentation>An interaction fragment that decomposes into a set of other interaction fragments under some operator.
+In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.
+Combined interactions consist of operands and an implicit or explicit operator</xsd:documentation>
+</xsd:annotation>
 <xsd:complexContent>
-<xsd:extension base="uml:Class">
+<xsd:extension base="uml:InteractionFragment">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="deployment" type="uml:Deployment"/>
-<xsd:element name="nestedNode" type="uml:Node"/>
+<xsd:element name="operand" type="uml:InteractionOperand"/>
+<xsd:element name="cfragmentGate" type="uml:Gate"/>
 </xsd:choice>
+<xsd:attribute name="interactionOperator" type="uml:InteractionOperator"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Node" type="uml:Node"/>
-<xsd:complexType name="Device">
+<xsd:element name="CombinedFragment" type="uml:CombinedFragment">
+<xsd:annotation>
+<xsd:documentation>An interaction fragment that decomposes into a set of other interaction fragments under some operator.
+In principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.
+Combined interactions consist of operands and an implicit or explicit operator</xsd:documentation>
+</xsd:annotation>
+</xsd:element>
+<xsd:complexType name="Continuation">
 <xsd:complexContent>
-<xsd:extension base="uml:Node"/>
+<xsd:extension base="uml:InteractionFragment">
+<xsd:attribute name="setting" type="xsd:string"/>
+</xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Device" type="uml:Device"/>
-<xsd:complexType name="ExecutionEnvironment">
+<xsd:element name="Continuation" type="uml:Continuation"/>
+<xsd:complexType name="ExpansionNode">
 <xsd:complexContent>
-<xsd:extension base="uml:Node"/>
+<xsd:extension base="uml:ObjectNode">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="regionAsOutput" type="uml:ExpansionRegion"/>
+<xsd:element name="regionAsInput" type="uml:ExpansionRegion"/>
+</xsd:choice>
+<xsd:attribute name="regionAsOutput" type="xsd:string"/>
+<xsd:attribute name="regionAsInput" type="xsd:string"/>
+</xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="ExecutionEnvironment" type="uml:ExecutionEnvironment"/>
-<xsd:complexType name="CommunicationPath">
+<xsd:element name="ExpansionNode" type="uml:ExpansionNode"/>
+<xsd:complexType name="ExpansionRegion">
 <xsd:complexContent>
-<xsd:extension base="uml:Association"/>
+<xsd:extension base="uml:StructuredActivityNode">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="outputElement" type="uml:ExpansionNode"/>
+<xsd:element name="inputElement" type="uml:ExpansionNode"/>
+</xsd:choice>
+<xsd:attribute name="mode" type="uml:ExpansionKind"/>
+<xsd:attribute name="outputElement" type="xsd:string"/>
+<xsd:attribute name="inputElement" type="xsd:string"/>
+</xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="CommunicationPath" type="uml:CommunicationPath"/>
+<xsd:element name="ExpansionRegion" type="uml:ExpansionRegion"/>
+<xsd:complexType name="ExceptionHandler">
+<xsd:complexContent>
+<xsd:extension base="uml:Element">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="handlerBody" type="uml:ExecutableNode"/>
+<xsd:element name="exceptionInput" type="uml:ObjectNode"/>
+<xsd:element name="exceptionType" type="uml:Classifier"/>
+</xsd:choice>
+<xsd:attribute name="handlerBody" type="xsd:string"/>
+<xsd:attribute name="exceptionInput" type="xsd:string"/>
+<xsd:attribute name="exceptionType" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ExceptionHandler" type="uml:ExceptionHandler"/>
 <xsd:complexType name="ProtocolConformance">
 <xsd:complexContent>
 <xsd:extension base="uml:DirectedRelationship">
@@ -2447,37 +2378,105 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="ProtocolTransition" type="uml:ProtocolTransition"/>
-<xsd:complexType name="DataStoreNode">
+<xsd:complexType name="Component">
 <xsd:complexContent>
-<xsd:extension base="uml:CentralBufferNode"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="DataStoreNode" type="uml:DataStoreNode"/>
-<xsd:complexType name="InterruptibleActivityRegion">
-<xsd:complexContent>
-<xsd:extension base="uml:ActivityGroup">
+<xsd:extension base="uml:Class">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="interruptingEdge" type="uml:ActivityEdge"/>
-<xsd:element name="containedNode" type="uml:ActivityNode"/>
+<xsd:element name="realization" type="uml:Realization"/>
+<xsd:element name="ownedMember" type="uml:PackageableElement"/>
 </xsd:choice>
-<xsd:attribute name="interruptingEdge" type="xsd:string"/>
-<xsd:attribute name="containedNode" type="xsd:string"/>
+<xsd:attribute name="isIndirectlyInstantiated" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="InterruptibleActivityRegion" type="uml:InterruptibleActivityRegion"/>
-<xsd:complexType name="ParameterSet">
+<xsd:element name="Component" type="uml:Component"/>
+<xsd:complexType name="TimeExpression">
 <xsd:complexContent>
-<xsd:extension base="uml:NamedElement">
+<xsd:extension base="uml:ValueSpecification">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="parameter" type="uml:Parameter"/>
-<xsd:element name="condition" type="uml:Constraint"/>
+<xsd:element name="event" type="uml:NamedElement"/>
 </xsd:choice>
-<xsd:attribute name="parameter" type="xsd:string"/>
+<xsd:attribute name="firstTime" type="xsd:string"/>
+<xsd:attribute name="event" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="ParameterSet" type="uml:ParameterSet"/>
+<xsd:element name="TimeExpression" type="uml:TimeExpression"/>
+<xsd:complexType name="Duration">
+<xsd:complexContent>
+<xsd:extension base="uml:ValueSpecification">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="event" type="uml:NamedElement"/>
+</xsd:choice>
+<xsd:attribute name="firstTime" type="xsd:string"/>
+<xsd:attribute name="event" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Duration" type="uml:Duration"/>
+<xsd:complexType name="TimeObservationAction">
+<xsd:complexContent>
+<xsd:extension base="uml:WriteStructuralFeatureAction">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="now" type="uml:TimeExpression"/>
+</xsd:choice>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="TimeObservationAction" type="uml:TimeObservationAction"/>
+<xsd:complexType name="DurationInterval">
+<xsd:complexContent>
+<xsd:extension base="uml:Interval"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="DurationInterval" type="uml:DurationInterval"/>
+<xsd:complexType name="Interval">
+<xsd:complexContent>
+<xsd:extension base="uml:ValueSpecification">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="min" type="uml:ValueSpecification"/>
+<xsd:element name="max" type="uml:ValueSpecification"/>
+</xsd:choice>
+<xsd:attribute name="min" type="xsd:string"/>
+<xsd:attribute name="max" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="Interval" type="uml:Interval"/>
+<xsd:complexType name="TimeConstraint">
+<xsd:complexContent>
+<xsd:extension base="uml:IntervalConstraint"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="TimeConstraint" type="uml:TimeConstraint"/>
+<xsd:complexType name="IntervalConstraint">
+<xsd:complexContent>
+<xsd:extension base="uml:Constraint"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="IntervalConstraint" type="uml:IntervalConstraint"/>
+<xsd:complexType name="TimeInterval">
+<xsd:complexContent>
+<xsd:extension base="uml:Interval"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="TimeInterval" type="uml:TimeInterval"/>
+<xsd:complexType name="DurationObservationAction">
+<xsd:complexContent>
+<xsd:extension base="uml:WriteStructuralFeatureAction">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="duration" type="uml:Duration"/>
+</xsd:choice>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="DurationObservationAction" type="uml:DurationObservationAction"/>
+<xsd:complexType name="DurationConstraint">
+<xsd:complexContent>
+<xsd:extension base="uml:IntervalConstraint"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="DurationConstraint" type="uml:DurationConstraint"/>
 <xsd:complexType name="ReadExtentAction">
 <xsd:complexContent>
 <xsd:extension base="uml:Action">
@@ -2628,93 +2627,94 @@
 </xsd:complexContent>
 </xsd:complexType>
 <xsd:element name="RaiseExceptionAction" type="uml:RaiseExceptionAction"/>
-<xsd:complexType name="TimeExpression">
+<xsd:complexType name="Deployment">
 <xsd:complexContent>
-<xsd:extension base="uml:ValueSpecification">
+<xsd:extension base="uml:Dependency">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="event" type="uml:NamedElement"/>
+<xsd:element name="deployedArtifact" type="uml:DeployedArtifact"/>
+<xsd:element name="configuration" type="uml:DeploymentSpecification"/>
 </xsd:choice>
-<xsd:attribute name="firstTime" type="xsd:string"/>
-<xsd:attribute name="event" type="xsd:string"/>
+<xsd:attribute name="deployedArtifact" type="xsd:string"/>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="TimeExpression" type="uml:TimeExpression"/>
-<xsd:complexType name="Duration">
+<xsd:element name="Deployment" type="uml:Deployment"/>
+<xsd:complexType name="DeployedArtifact">
 <xsd:complexContent>
-<xsd:extension base="uml:ValueSpecification">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="event" type="uml:NamedElement"/>
-</xsd:choice>
-<xsd:attribute name="firstTime" type="xsd:string"/>
-<xsd:attribute name="event" type="xsd:string"/>
-</xsd:extension>
+<xsd:extension base="uml:NamedElement"/>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="Duration" type="uml:Duration"/>
-<xsd:complexType name="TimeObservationAction">
+<xsd:element name="DeployedArtifact" type="uml:DeployedArtifact"/>
+<xsd:complexType name="DeploymentTarget">
 <xsd:complexContent>
-<xsd:extension base="uml:WriteStructuralFeatureAction">
+<xsd:extension base="uml:NamedElement">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="now" type="uml:TimeExpression"/>
+<xsd:element name="deployment" type="uml:Deployment"/>
 </xsd:choice>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="TimeObservationAction" type="uml:TimeObservationAction"/>
-<xsd:complexType name="DurationInterval">
+<xsd:element name="DeploymentTarget" type="uml:DeploymentTarget"/>
+<xsd:complexType name="Node">
 <xsd:complexContent>
-<xsd:extension base="uml:Interval"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="DurationInterval" type="uml:DurationInterval"/>
-<xsd:complexType name="Interval">
-<xsd:complexContent>
-<xsd:extension base="uml:ValueSpecification">
+<xsd:extension base="uml:Class">
 <xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="min" type="uml:ValueSpecification"/>
-<xsd:element name="max" type="uml:ValueSpecification"/>
-</xsd:choice>
-<xsd:attribute name="min" type="xsd:string"/>
-<xsd:attribute name="max" type="xsd:string"/>
-</xsd:extension>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="Interval" type="uml:Interval"/>
-<xsd:complexType name="TimeConstraint">
-<xsd:complexContent>
-<xsd:extension base="uml:IntervalConstraint"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="TimeConstraint" type="uml:TimeConstraint"/>
-<xsd:complexType name="IntervalConstraint">
-<xsd:complexContent>
-<xsd:extension base="uml:Constraint"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="IntervalConstraint" type="uml:IntervalConstraint"/>
-<xsd:complexType name="TimeInterval">
-<xsd:complexContent>
-<xsd:extension base="uml:Interval"/>
-</xsd:complexContent>
-</xsd:complexType>
-<xsd:element name="TimeInterval" type="uml:TimeInterval"/>
-<xsd:complexType name="DurationObservationAction">
-<xsd:complexContent>
-<xsd:extension base="uml:WriteStructuralFeatureAction">
-<xsd:choice minOccurs="0" maxOccurs="unbounded">
-<xsd:element name="duration" type="uml:Duration"/>
+<xsd:element name="deployment" type="uml:Deployment"/>
+<xsd:element name="nestedNode" type="uml:Node"/>
 </xsd:choice>
 </xsd:extension>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="DurationObservationAction" type="uml:DurationObservationAction"/>
-<xsd:complexType name="DurationConstraint">
+<xsd:element name="Node" type="uml:Node"/>
+<xsd:complexType name="Device">
 <xsd:complexContent>
-<xsd:extension base="uml:IntervalConstraint"/>
+<xsd:extension base="uml:Node"/>
 </xsd:complexContent>
 </xsd:complexType>
-<xsd:element name="DurationConstraint" type="uml:DurationConstraint"/>
+<xsd:element name="Device" type="uml:Device"/>
+<xsd:complexType name="ExecutionEnvironment">
+<xsd:complexContent>
+<xsd:extension base="uml:Node"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ExecutionEnvironment" type="uml:ExecutionEnvironment"/>
+<xsd:complexType name="CommunicationPath">
+<xsd:complexContent>
+<xsd:extension base="uml:Association"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="CommunicationPath" type="uml:CommunicationPath"/>
+<xsd:complexType name="DataStoreNode">
+<xsd:complexContent>
+<xsd:extension base="uml:CentralBufferNode"/>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="DataStoreNode" type="uml:DataStoreNode"/>
+<xsd:complexType name="InterruptibleActivityRegion">
+<xsd:complexContent>
+<xsd:extension base="uml:ActivityGroup">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="interruptingEdge" type="uml:ActivityEdge"/>
+<xsd:element name="containedNode" type="uml:ActivityNode"/>
+</xsd:choice>
+<xsd:attribute name="interruptingEdge" type="xsd:string"/>
+<xsd:attribute name="containedNode" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="InterruptibleActivityRegion" type="uml:InterruptibleActivityRegion"/>
+<xsd:complexType name="ParameterSet">
+<xsd:complexContent>
+<xsd:extension base="uml:NamedElement">
+<xsd:choice minOccurs="0" maxOccurs="unbounded">
+<xsd:element name="parameter" type="uml:Parameter"/>
+<xsd:element name="condition" type="uml:Constraint"/>
+</xsd:choice>
+<xsd:attribute name="parameter" type="xsd:string"/>
+</xsd:extension>
+</xsd:complexContent>
+</xsd:complexType>
+<xsd:element name="ParameterSet" type="uml:ParameterSet"/>
 <xsd:complexType name="DeploymentSpecification">
 <xsd:complexContent>
 <xsd:extension base="uml:Artifact">
diff --git a/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd2ecore b/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd2ecore
index 78badf6..32c7da4 100644
--- a/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd2ecore
+++ b/deprecated/plugins/org.eclipse.uml2/model/UML2XMI.xsd2ecore
@@ -37,36 +37,36 @@
       <nested inputs="UML2.ecore#//CallConcurrencyKind/guarded" outputs="UML2XMI.xsd#//CallConcurrencyKind;XSDSimpleTypeDefinition=5/XSDEnumerationFacet=1"/>
       <nested inputs="UML2.ecore#//CallConcurrencyKind/concurrent" outputs="UML2XMI.xsd#//CallConcurrencyKind;XSDSimpleTypeDefinition=5/XSDEnumerationFacet=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionOperator" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6">
-      <nested inputs="UML2.ecore#//InteractionOperator/seq" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/alt" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=1"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/opt" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=2"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/break" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=3"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/par" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=4"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/strict" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=5"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/loop" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=6"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/critical" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=7"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/neg" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=8"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/assert" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=9"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/ignore" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=10"/>
-      <nested inputs="UML2.ecore#//InteractionOperator/consider" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=11"/>
+    <nested inputs="UML2.ecore#//TransitionKind" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=6">
+      <nested inputs="UML2.ecore#//TransitionKind/internal" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=6/XSDEnumerationFacet"/>
+      <nested inputs="UML2.ecore#//TransitionKind/local" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=1"/>
+      <nested inputs="UML2.ecore#//TransitionKind/external" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=6/XSDEnumerationFacet=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//TransitionKind" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=7">
-      <nested inputs="UML2.ecore#//TransitionKind/internal" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet"/>
-      <nested inputs="UML2.ecore#//TransitionKind/local" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=1"/>
-      <nested inputs="UML2.ecore#//TransitionKind/external" outputs="UML2XMI.xsd#//TransitionKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=2"/>
+    <nested inputs="UML2.ecore#//PseudostateKind" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7">
+      <nested inputs="UML2.ecore#//PseudostateKind/initial" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/deepHistory" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=1"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/shallowHistory" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=2"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/join" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=3"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/fork" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=4"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/junction" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=5"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/choice" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=6"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/entryPoint" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=7"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/exitPoint" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=8"/>
+      <nested inputs="UML2.ecore#//PseudostateKind/terminate" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=7/XSDEnumerationFacet=9"/>
     </nested>
-    <nested inputs="UML2.ecore#//PseudostateKind" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8">
-      <nested inputs="UML2.ecore#//PseudostateKind/initial" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/deepHistory" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=1"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/shallowHistory" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=2"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/join" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=3"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/fork" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=4"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/junction" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=5"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/choice" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=6"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/entryPoint" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=7"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/exitPoint" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=8"/>
-      <nested inputs="UML2.ecore#//PseudostateKind/terminate" outputs="UML2XMI.xsd#//PseudostateKind;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=9"/>
+    <nested inputs="UML2.ecore#//InteractionOperator" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8">
+      <nested inputs="UML2.ecore#//InteractionOperator/seq" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/alt" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=1"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/opt" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=2"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/break" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=3"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/par" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=4"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/strict" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=5"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/loop" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=6"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/critical" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=7"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/neg" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=8"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/assert" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=9"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/ignore" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=10"/>
+      <nested inputs="UML2.ecore#//InteractionOperator/consider" outputs="UML2XMI.xsd#//InteractionOperator;XSDSimpleTypeDefinition=8/XSDEnumerationFacet=11"/>
     </nested>
     <nested inputs="UML2.ecore#//ExpansionKind" outputs="UML2XMI.xsd#//ExpansionKind;XSDSimpleTypeDefinition=9">
       <nested inputs="UML2.ecore#//ExpansionKind/parallel" outputs="UML2XMI.xsd#//ExpansionKind;XSDSimpleTypeDefinition=9/XSDEnumerationFacet"/>
@@ -100,193 +100,193 @@
       <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//MultiplicityElement;XSDComplexTypeDefinition=1/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
     <nested inputs="UML2.ecore#//MultiplicityElement" outputs="UML2XMI.xsd#//MultiplicityElement;XSDElementDeclaration=1"/>
-    <nested inputs="UML2.ecore#//DirectedRelationship" outputs="UML2XMI.xsd#//DirectedRelationship;XSDComplexTypeDefinition=2"/>
-    <nested inputs="UML2.ecore#//DirectedRelationship" outputs="UML2XMI.xsd#//DirectedRelationship;XSDElementDeclaration=2"/>
-    <nested inputs="UML2.ecore#//Relationship" outputs="UML2XMI.xsd#//Relationship;XSDComplexTypeDefinition=3"/>
-    <nested inputs="UML2.ecore#//Relationship" outputs="UML2XMI.xsd#//Relationship;XSDElementDeclaration=3"/>
-    <nested inputs="UML2.ecore#//Class" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4">
-      <nested inputs="UML2.ecore#//Class/isActive" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Class/ownedOperation" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Class/nestedClassifier" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//Class/ownedReception" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+    <nested inputs="UML2.ecore#//NamedElement" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2">
+      <nested inputs="UML2.ecore#//NamedElement/name" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//NamedElement/visibility" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//NamedElement/clientDependency" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//NamedElement/clientDependency" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//NamedElement/nameExpression" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=2/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//BehavioredClassifier/ownedBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//BehavioredClassifier/implementation" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-    <nested inputs="UML2.ecore#//BehavioredClassifier/ownedStateMachine" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-    <nested inputs="UML2.ecore#//Class" outputs="UML2XMI.xsd#//Class;XSDElementDeclaration=4"/>
-    <nested inputs="UML2.ecore#//Type" outputs="UML2XMI.xsd#//Type;XSDComplexTypeDefinition=5"/>
-    <nested inputs="UML2.ecore#//Type" outputs="UML2XMI.xsd#//Type;XSDElementDeclaration=5"/>
-    <nested inputs="UML2.ecore#//Property" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6">
-      <nested inputs="UML2.ecore#//Property/isDerived" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Property/isDerivedUnion" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Property/aggregation" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Property/redefinedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//Property/redefinedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Property/subsettedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=6"/>
-      <nested inputs="UML2.ecore#//Property/subsettedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Property/association" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=7"/>
-      <nested inputs="UML2.ecore#//Property/association" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//Property/defaultValue" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=6"/>
-      <nested inputs="UML2.ecore#//Property/qualifier" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+    <nested inputs="UML2.ecore#//NamedElement" outputs="UML2XMI.xsd#//NamedElement;XSDElementDeclaration=2"/>
+    <nested inputs="UML2.ecore#//Namespace" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=3">
+      <nested inputs="UML2.ecore#//Namespace/ownedRule" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Namespace/elementImport" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Namespace/packageImport" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=3/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=6/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-    <nested inputs="UML2.ecore#//Property" outputs="UML2XMI.xsd#//Property;XSDElementDeclaration=6"/>
-    <nested inputs="UML2.ecore#//Operation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7">
-      <nested inputs="UML2.ecore#//Operation/isQuery" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Operation/ownedParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Operation/precondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//Operation/postcondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=6"/>
-      <nested inputs="UML2.ecore#//Operation/redefinedOperation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//Operation/redefinedOperation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=7"/>
-      <nested inputs="UML2.ecore#//Operation/bodyCondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=8"/>
+    <nested inputs="UML2.ecore#//Namespace" outputs="UML2XMI.xsd#//Namespace;XSDElementDeclaration=3"/>
+    <nested inputs="UML2.ecore#//Comment" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=4">
+      <nested inputs="UML2.ecore#//Comment/body" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=4/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Comment/annotatedElement" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=4/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Comment/annotatedElement" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Comment/bodyExpression" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=4/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/isOrdered" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/isUnique" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse=2"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/upperValue" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDAttributeUse=3"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-    <nested inputs="UML2.ecore#//Operation" outputs="UML2XMI.xsd#//Operation;XSDElementDeclaration=7"/>
-    <nested inputs="UML2.ecore#//TypedElement" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=8">
-      <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=8/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=8/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Comment" outputs="UML2XMI.xsd#//Comment;XSDElementDeclaration=4"/>
+    <nested inputs="UML2.ecore#//DirectedRelationship" outputs="UML2XMI.xsd#//DirectedRelationship;XSDComplexTypeDefinition=5"/>
+    <nested inputs="UML2.ecore#//DirectedRelationship" outputs="UML2XMI.xsd#//DirectedRelationship;XSDElementDeclaration=5"/>
+    <nested inputs="UML2.ecore#//Relationship" outputs="UML2XMI.xsd#//Relationship;XSDComplexTypeDefinition=6"/>
+    <nested inputs="UML2.ecore#//Relationship" outputs="UML2XMI.xsd#//Relationship;XSDElementDeclaration=6"/>
+    <nested inputs="UML2.ecore#//OpaqueExpression" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=7">
+      <nested inputs="UML2.ecore#//OpaqueExpression/body" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=7/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//OpaqueExpression/language" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=7/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//OpaqueExpression/behavior" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=7/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//OpaqueExpression/behavior" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=7/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//TypedElement" outputs="UML2XMI.xsd#//TypedElement;XSDElementDeclaration=8"/>
-    <nested inputs="UML2.ecore#//Parameter" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9">
-      <nested inputs="UML2.ecore#//Parameter/direction" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Parameter/isException" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Parameter/isStream" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//Parameter/effect" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=6"/>
-      <nested inputs="UML2.ecore#//Parameter/defaultValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Parameter/parameterSet" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=7"/>
-      <nested inputs="UML2.ecore#//Parameter/parameterSet" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    <nested inputs="UML2.ecore#//OpaqueExpression" outputs="UML2XMI.xsd#//OpaqueExpression;XSDElementDeclaration=7"/>
+    <nested inputs="UML2.ecore#//ValueSpecification" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=8"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=8/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=8/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ValueSpecification" outputs="UML2XMI.xsd#//ValueSpecification;XSDElementDeclaration=8"/>
+    <nested inputs="UML2.ecore#//Expression" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=9">
+      <nested inputs="UML2.ecore#//Expression/symbol" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=9/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Expression/operand" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/isOrdered" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/isUnique" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDAttributeUse=2"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/upperValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=9/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-    <nested inputs="UML2.ecore#//Parameter" outputs="UML2XMI.xsd#//Parameter;XSDElementDeclaration=9"/>
-    <nested inputs="UML2.ecore#//NamedElement" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10">
-      <nested inputs="UML2.ecore#//NamedElement/name" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//NamedElement/visibility" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//NamedElement/clientDependency" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//NamedElement/clientDependency" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//NamedElement/nameExpression" outputs="UML2XMI.xsd#//NamedElement;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Expression" outputs="UML2XMI.xsd#//Expression;XSDElementDeclaration=9"/>
+    <nested inputs="UML2.ecore#//Class" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10">
+      <nested inputs="UML2.ecore#//Class/isActive" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Class/ownedOperation" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Class/nestedClassifier" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//Class/ownedReception" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=6"/>
     </nested>
-    <nested inputs="UML2.ecore#//NamedElement" outputs="UML2XMI.xsd#//NamedElement;XSDElementDeclaration=10"/>
-    <nested inputs="UML2.ecore#//Package" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11">
-      <nested inputs="UML2.ecore#//Package/ownedMember" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Package/packageMerge" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Package/appliedProfile" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Package/appliedProfile" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Package/packageExtension" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier/ownedBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier/implementation" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier/ownedStateMachine" outputs="UML2XMI.xsd#//Class;XSDComplexTypeDefinition=10/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//Class" outputs="UML2XMI.xsd#//Class;XSDElementDeclaration=10"/>
+    <nested inputs="UML2.ecore#//Type" outputs="UML2XMI.xsd#//Type;XSDComplexTypeDefinition=11"/>
+    <nested inputs="UML2.ecore#//Type" outputs="UML2XMI.xsd#//Type;XSDElementDeclaration=11"/>
+    <nested inputs="UML2.ecore#//Property" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12">
+      <nested inputs="UML2.ecore#//Property/isDerived" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Property/isDerivedUnion" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Property/aggregation" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Property/redefinedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//Property/redefinedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Property/subsettedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=6"/>
+      <nested inputs="UML2.ecore#//Property/subsettedProperty" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Property/association" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=7"/>
+      <nested inputs="UML2.ecore#//Property/association" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//Property/defaultValue" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+      <nested inputs="UML2.ecore#//Property/qualifier" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=7"/>
     </nested>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//Property;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//Property" outputs="UML2XMI.xsd#//Property;XSDElementDeclaration=12"/>
+    <nested inputs="UML2.ecore#//Operation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13">
+      <nested inputs="UML2.ecore#//Operation/isQuery" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Operation/ownedParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Operation/precondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//Operation/postcondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+      <nested inputs="UML2.ecore#//Operation/redefinedOperation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//Operation/redefinedOperation" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+      <nested inputs="UML2.ecore#//Operation/bodyCondition" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=8"/>
+    </nested>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/isOrdered" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/isUnique" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse=2"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/upperValue" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDAttributeUse=3"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Operation;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//Operation" outputs="UML2XMI.xsd#//Operation;XSDElementDeclaration=13"/>
+    <nested inputs="UML2.ecore#//TypedElement" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=14">
+      <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=14/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//TypedElement;XSDComplexTypeDefinition=14/XSDParticle/XSDModelGroup/XSDParticle"/>
+    </nested>
+    <nested inputs="UML2.ecore#//TypedElement" outputs="UML2XMI.xsd#//TypedElement;XSDElementDeclaration=14"/>
+    <nested inputs="UML2.ecore#//Parameter" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15">
+      <nested inputs="UML2.ecore#//Parameter/direction" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Parameter/isException" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Parameter/isStream" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//Parameter/effect" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=6"/>
+      <nested inputs="UML2.ecore#//Parameter/defaultValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Parameter/parameterSet" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=7"/>
+      <nested inputs="UML2.ecore#//Parameter/parameterSet" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    </nested>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/isOrdered" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/isUnique" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDAttributeUse=2"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/upperValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//Parameter;XSDComplexTypeDefinition=15/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//Parameter" outputs="UML2XMI.xsd#//Parameter;XSDElementDeclaration=15"/>
+    <nested inputs="UML2.ecore#//Package" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16">
+      <nested inputs="UML2.ecore#//Package/ownedMember" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Package/packageMerge" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Package/appliedProfile" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Package/appliedProfile" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Package/packageExtension" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    </nested>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle"/>
     <nested inputs="UML2.ecore#//PackageableElement/packageableElement_visibility"
-        outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=11/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//Package" outputs="UML2XMI.xsd#//Package;XSDElementDeclaration=11"/>
-    <nested inputs="UML2.ecore#//Enumeration" outputs="UML2XMI.xsd#//Enumeration;XSDComplexTypeDefinition=12">
-      <nested inputs="UML2.ecore#//Enumeration/ownedLiteral" outputs="UML2XMI.xsd#//Enumeration;XSDComplexTypeDefinition=12/XSDParticle/XSDModelGroup/XSDParticle"/>
+        outputs="UML2XMI.xsd#//Package;XSDComplexTypeDefinition=16/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//Package" outputs="UML2XMI.xsd#//Package;XSDElementDeclaration=16"/>
+    <nested inputs="UML2.ecore#//Enumeration" outputs="UML2XMI.xsd#//Enumeration;XSDComplexTypeDefinition=17">
+      <nested inputs="UML2.ecore#//Enumeration/ownedLiteral" outputs="UML2XMI.xsd#//Enumeration;XSDComplexTypeDefinition=17/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Enumeration" outputs="UML2XMI.xsd#//Enumeration;XSDElementDeclaration=12"/>
-    <nested inputs="UML2.ecore#//DataType" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=13">
-      <nested inputs="UML2.ecore#//DataType/ownedAttribute" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//DataType/ownedOperation" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=13/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Enumeration" outputs="UML2XMI.xsd#//Enumeration;XSDElementDeclaration=17"/>
+    <nested inputs="UML2.ecore#//DataType" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=18">
+      <nested inputs="UML2.ecore#//DataType/ownedAttribute" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=18/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//DataType/ownedOperation" outputs="UML2XMI.xsd#//DataType;XSDComplexTypeDefinition=18/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//DataType" outputs="UML2XMI.xsd#//DataType;XSDElementDeclaration=13"/>
-    <nested inputs="UML2.ecore#//EnumerationLiteral" outputs="UML2XMI.xsd#//EnumerationLiteral;XSDComplexTypeDefinition=14"/>
-    <nested inputs="UML2.ecore#//EnumerationLiteral" outputs="UML2XMI.xsd#//EnumerationLiteral;XSDElementDeclaration=14"/>
-    <nested inputs="UML2.ecore#//PrimitiveType" outputs="UML2XMI.xsd#//PrimitiveType;XSDComplexTypeDefinition=15"/>
-    <nested inputs="UML2.ecore#//PrimitiveType" outputs="UML2XMI.xsd#//PrimitiveType;XSDElementDeclaration=15"/>
-    <nested inputs="UML2.ecore#//Namespace" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=16">
-      <nested inputs="UML2.ecore#//Namespace/ownedRule" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Namespace/elementImport" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Namespace/packageImport" outputs="UML2XMI.xsd#//Namespace;XSDComplexTypeDefinition=16/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//DataType" outputs="UML2XMI.xsd#//DataType;XSDElementDeclaration=18"/>
+    <nested inputs="UML2.ecore#//EnumerationLiteral" outputs="UML2XMI.xsd#//EnumerationLiteral;XSDComplexTypeDefinition=19"/>
+    <nested inputs="UML2.ecore#//EnumerationLiteral" outputs="UML2XMI.xsd#//EnumerationLiteral;XSDElementDeclaration=19"/>
+    <nested inputs="UML2.ecore#//PrimitiveType" outputs="UML2XMI.xsd#//PrimitiveType;XSDComplexTypeDefinition=20"/>
+    <nested inputs="UML2.ecore#//PrimitiveType" outputs="UML2XMI.xsd#//PrimitiveType;XSDElementDeclaration=20"/>
+    <nested inputs="UML2.ecore#//Constraint" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=21">
+      <nested inputs="UML2.ecore#//Constraint/specification" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Constraint/constrainedElement" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=21/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Constraint/constrainedElement" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Namespace" outputs="UML2XMI.xsd#//Namespace;XSDElementDeclaration=16"/>
-    <nested inputs="UML2.ecore#//Comment" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=17">
-      <nested inputs="UML2.ecore#//Comment/body" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=17/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Comment/annotatedElement" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=17/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Comment/annotatedElement" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=17/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Comment/bodyExpression" outputs="UML2XMI.xsd#//Comment;XSDComplexTypeDefinition=17/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Constraint" outputs="UML2XMI.xsd#//Constraint;XSDElementDeclaration=21"/>
+    <nested inputs="UML2.ecore#//LiteralBoolean" outputs="UML2XMI.xsd#//LiteralBoolean;XSDComplexTypeDefinition=22">
+      <nested inputs="UML2.ecore#//LiteralBoolean/value" outputs="UML2XMI.xsd#//LiteralBoolean;XSDComplexTypeDefinition=22/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//Comment" outputs="UML2XMI.xsd#//Comment;XSDElementDeclaration=17"/>
-    <nested inputs="UML2.ecore#//OpaqueExpression" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=18">
-      <nested inputs="UML2.ecore#//OpaqueExpression/body" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=18/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//OpaqueExpression/language" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=18/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//OpaqueExpression/behavior" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=18/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//OpaqueExpression/behavior" outputs="UML2XMI.xsd#//OpaqueExpression;XSDComplexTypeDefinition=18/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//LiteralBoolean" outputs="UML2XMI.xsd#//LiteralBoolean;XSDElementDeclaration=22"/>
+    <nested inputs="UML2.ecore#//LiteralSpecification" outputs="UML2XMI.xsd#//LiteralSpecification;XSDComplexTypeDefinition=23"/>
+    <nested inputs="UML2.ecore#//LiteralSpecification" outputs="UML2XMI.xsd#//LiteralSpecification;XSDElementDeclaration=23"/>
+    <nested inputs="UML2.ecore#//LiteralString" outputs="UML2XMI.xsd#//LiteralString;XSDComplexTypeDefinition=24">
+      <nested inputs="UML2.ecore#//LiteralString/value" outputs="UML2XMI.xsd#//LiteralString;XSDComplexTypeDefinition=24/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//OpaqueExpression" outputs="UML2XMI.xsd#//OpaqueExpression;XSDElementDeclaration=18"/>
-    <nested inputs="UML2.ecore#//ValueSpecification" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=19"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=19/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ValueSpecification;XSDComplexTypeDefinition=19/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//ValueSpecification" outputs="UML2XMI.xsd#//ValueSpecification;XSDElementDeclaration=19"/>
-    <nested inputs="UML2.ecore#//Expression" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=20">
-      <nested inputs="UML2.ecore#//Expression/symbol" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=20/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Expression/operand" outputs="UML2XMI.xsd#//Expression;XSDComplexTypeDefinition=20/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//LiteralString" outputs="UML2XMI.xsd#//LiteralString;XSDElementDeclaration=24"/>
+    <nested inputs="UML2.ecore#//LiteralNull" outputs="UML2XMI.xsd#//LiteralNull;XSDComplexTypeDefinition=25"/>
+    <nested inputs="UML2.ecore#//LiteralNull" outputs="UML2XMI.xsd#//LiteralNull;XSDElementDeclaration=25"/>
+    <nested inputs="UML2.ecore#//LiteralInteger" outputs="UML2XMI.xsd#//LiteralInteger;XSDComplexTypeDefinition=26">
+      <nested inputs="UML2.ecore#//LiteralInteger/value" outputs="UML2XMI.xsd#//LiteralInteger;XSDComplexTypeDefinition=26/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//Expression" outputs="UML2XMI.xsd#//Expression;XSDElementDeclaration=20"/>
-    <nested inputs="UML2.ecore#//Classifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21">
-      <nested inputs="UML2.ecore#//Classifier/isAbstract" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Classifier/generalization" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Classifier/redefinedClassifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Classifier/redefinedClassifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Classifier/substitution" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Classifier/powertypeExtent" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//Classifier/powertypeExtent" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Classifier/ownedUseCase" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//Classifier/representation" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=6"/>
-      <nested inputs="UML2.ecore#//Classifier/representation" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=6"/>
-      <nested inputs="UML2.ecore#//Classifier/occurrence" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+    <nested inputs="UML2.ecore#//LiteralInteger" outputs="UML2XMI.xsd#//LiteralInteger;XSDElementDeclaration=26"/>
+    <nested inputs="UML2.ecore#//LiteralUnlimitedNatural" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDComplexTypeDefinition=27">
+      <nested inputs="UML2.ecore#//LiteralUnlimitedNatural/value" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDComplexTypeDefinition=27/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//LiteralUnlimitedNatural" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDElementDeclaration=27"/>
+    <nested inputs="UML2.ecore#//Classifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28">
+      <nested inputs="UML2.ecore#//Classifier/isAbstract" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Classifier/generalization" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Classifier/redefinedClassifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Classifier/redefinedClassifier" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Classifier/substitution" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Classifier/powertypeExtent" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//Classifier/powertypeExtent" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Classifier/ownedUseCase" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//Classifier/representation" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=6"/>
+      <nested inputs="UML2.ecore#//Classifier/representation" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+      <nested inputs="UML2.ecore#//Classifier/occurrence" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+    </nested>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDParticle/XSDModelGroup/XSDParticle"/>
     <nested inputs="UML2.ecore#//PackageableElement/packageableElement_visibility"
-        outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//RedefinableElement/isLeaf" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=21/XSDAttributeUse=2"/>
-    <nested inputs="UML2.ecore#//Classifier" outputs="UML2XMI.xsd#//Classifier;XSDElementDeclaration=21"/>
-    <nested inputs="UML2.ecore#//Feature" outputs="UML2XMI.xsd#//Feature;XSDComplexTypeDefinition=22">
-      <nested inputs="UML2.ecore#//Feature/isStatic" outputs="UML2XMI.xsd#//Feature;XSDComplexTypeDefinition=22/XSDAttributeUse"/>
+        outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//RedefinableElement/isLeaf" outputs="UML2XMI.xsd#//Classifier;XSDComplexTypeDefinition=28/XSDAttributeUse=2"/>
+    <nested inputs="UML2.ecore#//Classifier" outputs="UML2XMI.xsd#//Classifier;XSDElementDeclaration=28"/>
+    <nested inputs="UML2.ecore#//Feature" outputs="UML2XMI.xsd#//Feature;XSDComplexTypeDefinition=29">
+      <nested inputs="UML2.ecore#//Feature/isStatic" outputs="UML2XMI.xsd#//Feature;XSDComplexTypeDefinition=29/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//Feature" outputs="UML2XMI.xsd#//Feature;XSDElementDeclaration=22"/>
-    <nested inputs="UML2.ecore#//LiteralBoolean" outputs="UML2XMI.xsd#//LiteralBoolean;XSDComplexTypeDefinition=23">
-      <nested inputs="UML2.ecore#//LiteralBoolean/value" outputs="UML2XMI.xsd#//LiteralBoolean;XSDComplexTypeDefinition=23/XSDAttributeUse"/>
-    </nested>
-    <nested inputs="UML2.ecore#//LiteralBoolean" outputs="UML2XMI.xsd#//LiteralBoolean;XSDElementDeclaration=23"/>
-    <nested inputs="UML2.ecore#//LiteralSpecification" outputs="UML2XMI.xsd#//LiteralSpecification;XSDComplexTypeDefinition=24"/>
-    <nested inputs="UML2.ecore#//LiteralSpecification" outputs="UML2XMI.xsd#//LiteralSpecification;XSDElementDeclaration=24"/>
-    <nested inputs="UML2.ecore#//LiteralString" outputs="UML2XMI.xsd#//LiteralString;XSDComplexTypeDefinition=25">
-      <nested inputs="UML2.ecore#//LiteralString/value" outputs="UML2XMI.xsd#//LiteralString;XSDComplexTypeDefinition=25/XSDAttributeUse"/>
-    </nested>
-    <nested inputs="UML2.ecore#//LiteralString" outputs="UML2XMI.xsd#//LiteralString;XSDElementDeclaration=25"/>
-    <nested inputs="UML2.ecore#//LiteralNull" outputs="UML2XMI.xsd#//LiteralNull;XSDComplexTypeDefinition=26"/>
-    <nested inputs="UML2.ecore#//LiteralNull" outputs="UML2XMI.xsd#//LiteralNull;XSDElementDeclaration=26"/>
-    <nested inputs="UML2.ecore#//LiteralInteger" outputs="UML2XMI.xsd#//LiteralInteger;XSDComplexTypeDefinition=27">
-      <nested inputs="UML2.ecore#//LiteralInteger/value" outputs="UML2XMI.xsd#//LiteralInteger;XSDComplexTypeDefinition=27/XSDAttributeUse"/>
-    </nested>
-    <nested inputs="UML2.ecore#//LiteralInteger" outputs="UML2XMI.xsd#//LiteralInteger;XSDElementDeclaration=27"/>
-    <nested inputs="UML2.ecore#//LiteralUnlimitedNatural" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDComplexTypeDefinition=28">
-      <nested inputs="UML2.ecore#//LiteralUnlimitedNatural/value" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDComplexTypeDefinition=28/XSDAttributeUse"/>
-    </nested>
-    <nested inputs="UML2.ecore#//LiteralUnlimitedNatural" outputs="UML2XMI.xsd#//LiteralUnlimitedNatural;XSDElementDeclaration=28"/>
-    <nested inputs="UML2.ecore#//Constraint" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=29">
-      <nested inputs="UML2.ecore#//Constraint/specification" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=29/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Constraint/constrainedElement" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=29/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Constraint/constrainedElement" outputs="UML2XMI.xsd#//Constraint;XSDComplexTypeDefinition=29/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    </nested>
-    <nested inputs="UML2.ecore#//Constraint" outputs="UML2XMI.xsd#//Constraint;XSDElementDeclaration=29"/>
+    <nested inputs="UML2.ecore#//Feature" outputs="UML2XMI.xsd#//Feature;XSDElementDeclaration=29"/>
     <nested inputs="UML2.ecore#//BehavioralFeature" outputs="UML2XMI.xsd#//BehavioralFeature;XSDComplexTypeDefinition=30">
       <nested inputs="UML2.ecore#//BehavioralFeature/isAbstract" outputs="UML2XMI.xsd#//BehavioralFeature;XSDComplexTypeDefinition=30/XSDAttributeUse=2"/>
       <nested inputs="UML2.ecore#//BehavioralFeature/concurrency" outputs="UML2XMI.xsd#//BehavioralFeature;XSDComplexTypeDefinition=30/XSDAttributeUse=3"/>
@@ -310,37 +310,37 @@
     <nested inputs="UML2.ecore#//MultiplicityElement/upperValue" outputs="UML2XMI.xsd#//StructuralFeature;XSDComplexTypeDefinition=31/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     <nested inputs="UML2.ecore#//MultiplicityElement/lowerValue" outputs="UML2XMI.xsd#//StructuralFeature;XSDComplexTypeDefinition=31/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     <nested inputs="UML2.ecore#//StructuralFeature" outputs="UML2XMI.xsd#//StructuralFeature;XSDElementDeclaration=31"/>
-    <nested inputs="UML2.ecore#//InstanceSpecification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32">
-      <nested inputs="UML2.ecore#//InstanceSpecification/slot" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//InstanceSpecification/classifier" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InstanceSpecification/classifier" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//InstanceSpecification/specification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//Generalization" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32">
+      <nested inputs="UML2.ecore#//Generalization/isSubstitutable" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Generalization/general" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Generalization/general" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Generalization/generalizationSet" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Generalization/generalizationSet" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=32/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//InstanceSpecification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDElementDeclaration=32"/>
-    <nested inputs="UML2.ecore#//Slot" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=33">
-      <nested inputs="UML2.ecore#//Slot/value" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=33/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Slot/definingFeature" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=33/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Slot/definingFeature" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=33/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Generalization" outputs="UML2XMI.xsd#//Generalization;XSDElementDeclaration=32"/>
+    <nested inputs="UML2.ecore#//RedefinableElement" outputs="UML2XMI.xsd#//RedefinableElement;XSDComplexTypeDefinition=33">
+      <nested inputs="UML2.ecore#//RedefinableElement/isLeaf" outputs="UML2XMI.xsd#//RedefinableElement;XSDComplexTypeDefinition=33/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//Slot" outputs="UML2XMI.xsd#//Slot;XSDElementDeclaration=33"/>
-    <nested inputs="UML2.ecore#//InstanceValue" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=34">
-      <nested inputs="UML2.ecore#//InstanceValue/instance" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=34/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InstanceValue/instance" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=34/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//RedefinableElement" outputs="UML2XMI.xsd#//RedefinableElement;XSDElementDeclaration=33"/>
+    <nested inputs="UML2.ecore#//InstanceSpecification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34">
+      <nested inputs="UML2.ecore#//InstanceSpecification/slot" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//InstanceSpecification/classifier" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InstanceSpecification/classifier" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//InstanceSpecification/specification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//InstanceValue" outputs="UML2XMI.xsd#//InstanceValue;XSDElementDeclaration=34"/>
-    <nested inputs="UML2.ecore#//RedefinableElement" outputs="UML2XMI.xsd#//RedefinableElement;XSDComplexTypeDefinition=35">
-      <nested inputs="UML2.ecore#//RedefinableElement/isLeaf" outputs="UML2XMI.xsd#//RedefinableElement;XSDComplexTypeDefinition=35/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//InstanceSpecification;XSDComplexTypeDefinition=34/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InstanceSpecification" outputs="UML2XMI.xsd#//InstanceSpecification;XSDElementDeclaration=34"/>
+    <nested inputs="UML2.ecore#//Slot" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=35">
+      <nested inputs="UML2.ecore#//Slot/value" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=35/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Slot/definingFeature" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=35/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Slot/definingFeature" outputs="UML2XMI.xsd#//Slot;XSDComplexTypeDefinition=35/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//RedefinableElement" outputs="UML2XMI.xsd#//RedefinableElement;XSDElementDeclaration=35"/>
-    <nested inputs="UML2.ecore#//Generalization" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36">
-      <nested inputs="UML2.ecore#//Generalization/isSubstitutable" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Generalization/general" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Generalization/general" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Generalization/generalizationSet" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Generalization/generalizationSet" outputs="UML2XMI.xsd#//Generalization;XSDComplexTypeDefinition=36/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Slot" outputs="UML2XMI.xsd#//Slot;XSDElementDeclaration=35"/>
+    <nested inputs="UML2.ecore#//InstanceValue" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=36">
+      <nested inputs="UML2.ecore#//InstanceValue/instance" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=36/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InstanceValue/instance" outputs="UML2XMI.xsd#//InstanceValue;XSDComplexTypeDefinition=36/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Generalization" outputs="UML2XMI.xsd#//Generalization;XSDElementDeclaration=36"/>
+    <nested inputs="UML2.ecore#//InstanceValue" outputs="UML2XMI.xsd#//InstanceValue;XSDElementDeclaration=36"/>
     <nested inputs="UML2.ecore#//PackageableElement" outputs="UML2XMI.xsd#//PackageableElement;XSDComplexTypeDefinition=37">
       <nested inputs="UML2.ecore#//PackageableElement/packageableElement_visibility"
           outputs="UML2XMI.xsd#//PackageableElement;XSDComplexTypeDefinition=37/XSDAttributeUse=1"/>
@@ -391,270 +391,270 @@
     <nested inputs="UML2.ecore#//Extension" outputs="UML2XMI.xsd#//Extension;XSDElementDeclaration=45"/>
     <nested inputs="UML2.ecore#//ExtensionEnd" outputs="UML2XMI.xsd#//ExtensionEnd;XSDComplexTypeDefinition=46"/>
     <nested inputs="UML2.ecore#//ExtensionEnd" outputs="UML2XMI.xsd#//ExtensionEnd;XSDElementDeclaration=46"/>
-    <nested inputs="UML2.ecore#//Model" outputs="UML2XMI.xsd#//Model;XSDComplexTypeDefinition=47">
-      <nested inputs="UML2.ecore#//Model/viewpoint" outputs="UML2XMI.xsd#//Model;XSDComplexTypeDefinition=47/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//Permission" outputs="UML2XMI.xsd#//Permission;XSDComplexTypeDefinition=47"/>
+    <nested inputs="UML2.ecore#//Permission" outputs="UML2XMI.xsd#//Permission;XSDElementDeclaration=47"/>
+    <nested inputs="UML2.ecore#//Dependency" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=48">
+      <nested inputs="UML2.ecore#//Dependency/client" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=48/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Dependency/client" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=48/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Dependency/supplier" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=48/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Dependency/supplier" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=48/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Model" outputs="UML2XMI.xsd#//Model;XSDElementDeclaration=47"/>
-    <nested inputs="UML2.ecore#//Permission" outputs="UML2XMI.xsd#//Permission;XSDComplexTypeDefinition=48"/>
-    <nested inputs="UML2.ecore#//Permission" outputs="UML2XMI.xsd#//Permission;XSDElementDeclaration=48"/>
-    <nested inputs="UML2.ecore#//Dependency" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=49">
-      <nested inputs="UML2.ecore#//Dependency/client" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=49/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Dependency/client" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=49/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Dependency/supplier" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=49/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Dependency/supplier" outputs="UML2XMI.xsd#//Dependency;XSDComplexTypeDefinition=49/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Dependency" outputs="UML2XMI.xsd#//Dependency;XSDElementDeclaration=48"/>
+    <nested inputs="UML2.ecore#//Usage" outputs="UML2XMI.xsd#//Usage;XSDComplexTypeDefinition=49"/>
+    <nested inputs="UML2.ecore#//Usage" outputs="UML2XMI.xsd#//Usage;XSDElementDeclaration=49"/>
+    <nested inputs="UML2.ecore#//Abstraction" outputs="UML2XMI.xsd#//Abstraction;XSDComplexTypeDefinition=50">
+      <nested inputs="UML2.ecore#//Abstraction/mapping" outputs="UML2XMI.xsd#//Abstraction;XSDComplexTypeDefinition=50/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Dependency" outputs="UML2XMI.xsd#//Dependency;XSDElementDeclaration=49"/>
-    <nested inputs="UML2.ecore#//Usage" outputs="UML2XMI.xsd#//Usage;XSDComplexTypeDefinition=50"/>
-    <nested inputs="UML2.ecore#//Usage" outputs="UML2XMI.xsd#//Usage;XSDElementDeclaration=50"/>
-    <nested inputs="UML2.ecore#//Abstraction" outputs="UML2XMI.xsd#//Abstraction;XSDComplexTypeDefinition=51">
-      <nested inputs="UML2.ecore#//Abstraction/mapping" outputs="UML2XMI.xsd#//Abstraction;XSDComplexTypeDefinition=51/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Abstraction" outputs="UML2XMI.xsd#//Abstraction;XSDElementDeclaration=50"/>
+    <nested inputs="UML2.ecore#//Realization" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=51">
+      <nested inputs="UML2.ecore#//Realization/realizingClassifier" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=51/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Realization/realizingClassifier" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=51/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Abstraction" outputs="UML2XMI.xsd#//Abstraction;XSDElementDeclaration=51"/>
-    <nested inputs="UML2.ecore#//Realization" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=52">
-      <nested inputs="UML2.ecore#//Realization/realizingClassifier" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=52/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Realization/realizingClassifier" outputs="UML2XMI.xsd#//Realization;XSDComplexTypeDefinition=52/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Realization" outputs="UML2XMI.xsd#//Realization;XSDElementDeclaration=51"/>
+    <nested inputs="UML2.ecore#//Substitution" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=52">
+      <nested inputs="UML2.ecore#//Substitution/contract" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=52/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Substitution/contract" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=52/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Realization" outputs="UML2XMI.xsd#//Realization;XSDElementDeclaration=52"/>
-    <nested inputs="UML2.ecore#//Substitution" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=53">
-      <nested inputs="UML2.ecore#//Substitution/contract" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=53/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Substitution/contract" outputs="UML2XMI.xsd#//Substitution;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Substitution" outputs="UML2XMI.xsd#//Substitution;XSDElementDeclaration=52"/>
+    <nested inputs="UML2.ecore#//Behavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53">
+      <nested inputs="UML2.ecore#//Behavior/isReentrant" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Behavior/redefinedBehavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Behavior/redefinedBehavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Behavior/specification" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Behavior/specification" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Behavior/parameter" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Behavior/precondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Behavior/precondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Behavior/postcondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Behavior/postcondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=53/XSDParticle/XSDModelGroup/XSDParticle=4"/>
     </nested>
-    <nested inputs="UML2.ecore#//Substitution" outputs="UML2XMI.xsd#//Substitution;XSDElementDeclaration=53"/>
-    <nested inputs="UML2.ecore#//GeneralizationSet" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54">
-      <nested inputs="UML2.ecore#//GeneralizationSet/isCovering" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//GeneralizationSet/isDisjoint" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//GeneralizationSet/powertype" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//GeneralizationSet/powertype" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//GeneralizationSet/generalization" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//GeneralizationSet/generalization" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Behavior" outputs="UML2XMI.xsd#//Behavior;XSDElementDeclaration=53"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54">
+      <nested inputs="UML2.ecore#//BehavioredClassifier/ownedBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//BehavioredClassifier/implementation" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//BehavioredClassifier/ownedStateMachine" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=54/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//GeneralizationSet" outputs="UML2XMI.xsd#//GeneralizationSet;XSDElementDeclaration=54"/>
-    <nested inputs="UML2.ecore#//InformationItem" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=55">
-      <nested inputs="UML2.ecore#//InformationItem/represented" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=55/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InformationItem/represented" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=55/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//BehavioredClassifier" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDElementDeclaration=54"/>
+    <nested inputs="UML2.ecore#//Activity" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55">
+      <nested inputs="UML2.ecore#//Activity/body" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Activity/language" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Activity/isSingleExecution" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Activity/isReadOnly" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Activity/edge" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Activity/group" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Activity/node" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Activity/action" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Activity/action" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=55/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//InformationItem" outputs="UML2XMI.xsd#//InformationItem;XSDElementDeclaration=55"/>
-    <nested inputs="UML2.ecore#//InformationFlow" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=56">
-      <nested inputs="UML2.ecore#//InformationFlow/realization" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=56/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InformationFlow/realization" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=56/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InformationFlow/conveyed" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=56/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//InformationFlow/conveyed" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=56/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Activity" outputs="UML2XMI.xsd#//Activity;XSDElementDeclaration=55"/>
+    <nested inputs="UML2.ecore#//AssociationClass" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=56"/>
+    <nested inputs="UML2.ecore#//Association/isDerived" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=56/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//Association/ownedEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=56/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Association/memberEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=56/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//Association/memberEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=56/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//AssociationClass" outputs="UML2XMI.xsd#//AssociationClass;XSDElementDeclaration=56"/>
+    <nested inputs="UML2.ecore#//Model" outputs="UML2XMI.xsd#//Model;XSDComplexTypeDefinition=57">
+      <nested inputs="UML2.ecore#//Model/viewpoint" outputs="UML2XMI.xsd#//Model;XSDComplexTypeDefinition=57/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//InformationFlow" outputs="UML2XMI.xsd#//InformationFlow;XSDElementDeclaration=56"/>
-    <nested inputs="UML2.ecore#//AssociationClass" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=57"/>
-    <nested inputs="UML2.ecore#//Association/isDerived" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=57/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//Association/ownedEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=57/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//Association/memberEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=57/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//Association/memberEnd" outputs="UML2XMI.xsd#//AssociationClass;XSDComplexTypeDefinition=57/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//AssociationClass" outputs="UML2XMI.xsd#//AssociationClass;XSDElementDeclaration=57"/>
-    <nested inputs="UML2.ecore#//Behavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58">
-      <nested inputs="UML2.ecore#//Behavior/isReentrant" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Behavior/redefinedBehavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Behavior/redefinedBehavior" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Behavior/specification" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Behavior/specification" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Behavior/parameter" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Behavior/precondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Behavior/precondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Behavior/postcondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Behavior/postcondition" outputs="UML2XMI.xsd#//Behavior;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    <nested inputs="UML2.ecore#//Model" outputs="UML2XMI.xsd#//Model;XSDElementDeclaration=57"/>
+    <nested inputs="UML2.ecore#//InformationItem" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=58">
+      <nested inputs="UML2.ecore#//InformationItem/represented" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=58/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InformationItem/represented" outputs="UML2XMI.xsd#//InformationItem;XSDComplexTypeDefinition=58/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Behavior" outputs="UML2XMI.xsd#//Behavior;XSDElementDeclaration=58"/>
-    <nested inputs="UML2.ecore#//BehavioredClassifier" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59">
-      <nested inputs="UML2.ecore#//BehavioredClassifier/ownedBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//BehavioredClassifier/classifierBehavior" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//BehavioredClassifier/implementation" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//BehavioredClassifier/ownedStateMachine" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//InformationItem" outputs="UML2XMI.xsd#//InformationItem;XSDElementDeclaration=58"/>
+    <nested inputs="UML2.ecore#//InformationFlow" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=59">
+      <nested inputs="UML2.ecore#//InformationFlow/realization" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=59/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InformationFlow/realization" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InformationFlow/conveyed" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=59/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//InformationFlow/conveyed" outputs="UML2XMI.xsd#//InformationFlow;XSDComplexTypeDefinition=59/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//BehavioredClassifier" outputs="UML2XMI.xsd#//BehavioredClassifier;XSDElementDeclaration=59"/>
-    <nested inputs="UML2.ecore#//Activity" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60">
-      <nested inputs="UML2.ecore#//Activity/body" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Activity/language" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Activity/isSingleExecution" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Activity/isReadOnly" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Activity/edge" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Activity/group" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Activity/node" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Activity/action" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Activity/action" outputs="UML2XMI.xsd#//Activity;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//InformationFlow" outputs="UML2XMI.xsd#//InformationFlow;XSDElementDeclaration=59"/>
+    <nested inputs="UML2.ecore#//GeneralizationSet" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60">
+      <nested inputs="UML2.ecore#//GeneralizationSet/isCovering" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//GeneralizationSet/isDisjoint" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//GeneralizationSet/powertype" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//GeneralizationSet/powertype" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//GeneralizationSet/generalization" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//GeneralizationSet/generalization" outputs="UML2XMI.xsd#//GeneralizationSet;XSDComplexTypeDefinition=60/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Activity" outputs="UML2XMI.xsd#//Activity;XSDElementDeclaration=60"/>
-    <nested inputs="UML2.ecore#//Artifact" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61">
-      <nested inputs="UML2.ecore#//Artifact/fileName" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Artifact/nestedArtifact" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Artifact/manifestation" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Artifact/ownedOperation" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Artifact/ownedAttribute" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//GeneralizationSet" outputs="UML2XMI.xsd#//GeneralizationSet;XSDElementDeclaration=60"/>
+    <nested inputs="UML2.ecore#//ConnectorEnd" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=61">
+      <nested inputs="UML2.ecore#//ConnectorEnd/role" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=61/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ConnectorEnd/role" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ConnectorEnd/partWithPort" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=61/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ConnectorEnd/partWithPort" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=61/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Artifact" outputs="UML2XMI.xsd#//Artifact;XSDElementDeclaration=61"/>
-    <nested inputs="UML2.ecore#//Manifestation" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=62">
-      <nested inputs="UML2.ecore#//Manifestation/utilizedElement" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=62/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Manifestation/utilizedElement" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=62/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ConnectorEnd" outputs="UML2XMI.xsd#//ConnectorEnd;XSDElementDeclaration=61"/>
+    <nested inputs="UML2.ecore#//ConnectableElement" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=62">
+      <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=62/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=62/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Manifestation" outputs="UML2XMI.xsd#//Manifestation;XSDElementDeclaration=62"/>
-    <nested inputs="UML2.ecore#//Actor" outputs="UML2XMI.xsd#//Actor;XSDComplexTypeDefinition=63"/>
-    <nested inputs="UML2.ecore#//Actor" outputs="UML2XMI.xsd#//Actor;XSDElementDeclaration=63"/>
-    <nested inputs="UML2.ecore#//Extend" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64">
-      <nested inputs="UML2.ecore#//Extend/extendedCase" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Extend/extendedCase" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Extend/condition" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Extend/extensionLocation" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Extend/extensionLocation" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=64/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=62/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=62/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ConnectableElement" outputs="UML2XMI.xsd#//ConnectableElement;XSDElementDeclaration=62"/>
+    <nested inputs="UML2.ecore#//Connector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63">
+      <nested inputs="UML2.ecore#//Connector/kind" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Connector/type" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Connector/type" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Connector/redefinedConnector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Connector/redefinedConnector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Connector/end" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Connector/contract" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Connector/contract" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=63/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//Extend" outputs="UML2XMI.xsd#//Extend;XSDElementDeclaration=64"/>
-    <nested inputs="UML2.ecore#//UseCase" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65">
-      <nested inputs="UML2.ecore#//UseCase/include" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//UseCase/extend" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//UseCase/extensionPoint" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//UseCase/subject" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//UseCase/subject" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//Connector" outputs="UML2XMI.xsd#//Connector;XSDElementDeclaration=63"/>
+    <nested inputs="UML2.ecore#//StructuredClassifier" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=64">
+      <nested inputs="UML2.ecore#//StructuredClassifier/ownedAttribute" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=64/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//StructuredClassifier/ownedConnector" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=64/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//UseCase" outputs="UML2XMI.xsd#//UseCase;XSDElementDeclaration=65"/>
-    <nested inputs="UML2.ecore#//ExtensionPoint" outputs="UML2XMI.xsd#//ExtensionPoint;XSDComplexTypeDefinition=66"/>
-    <nested inputs="UML2.ecore#//ExtensionPoint" outputs="UML2XMI.xsd#//ExtensionPoint;XSDElementDeclaration=66"/>
-    <nested inputs="UML2.ecore#//Include" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=67">
-      <nested inputs="UML2.ecore#//Include/addition" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=67/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Include/addition" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=67/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//StructuredClassifier" outputs="UML2XMI.xsd#//StructuredClassifier;XSDElementDeclaration=64"/>
+    <nested inputs="UML2.ecore#//Interface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65">
+      <nested inputs="UML2.ecore#//Interface/ownedAttribute" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Interface/ownedOperation" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Interface/redefinedInterface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Interface/redefinedInterface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Interface/nestedClassifier" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Interface/ownedReception" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Interface/protocol" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=65/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//Include" outputs="UML2XMI.xsd#//Include;XSDElementDeclaration=67"/>
-    <nested inputs="UML2.ecore#//Interface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68">
-      <nested inputs="UML2.ecore#//Interface/ownedAttribute" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Interface/ownedOperation" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Interface/redefinedInterface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Interface/redefinedInterface" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Interface/nestedClassifier" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Interface/ownedReception" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Interface/protocol" outputs="UML2XMI.xsd#//Interface;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//Interface" outputs="UML2XMI.xsd#//Interface;XSDElementDeclaration=65"/>
+    <nested inputs="UML2.ecore#//Implementation" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=66">
+      <nested inputs="UML2.ecore#//Implementation/contract" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=66/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Implementation/contract" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=66/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Interface" outputs="UML2XMI.xsd#//Interface;XSDElementDeclaration=68"/>
-    <nested inputs="UML2.ecore#//Implementation" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=69">
-      <nested inputs="UML2.ecore#//Implementation/contract" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=69/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Implementation/contract" outputs="UML2XMI.xsd#//Implementation;XSDComplexTypeDefinition=69/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Implementation" outputs="UML2XMI.xsd#//Implementation;XSDElementDeclaration=66"/>
+    <nested inputs="UML2.ecore#//Actor" outputs="UML2XMI.xsd#//Actor;XSDComplexTypeDefinition=67"/>
+    <nested inputs="UML2.ecore#//Actor" outputs="UML2XMI.xsd#//Actor;XSDElementDeclaration=67"/>
+    <nested inputs="UML2.ecore#//Extend" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68">
+      <nested inputs="UML2.ecore#//Extend/extendedCase" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Extend/extendedCase" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Extend/condition" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Extend/extensionLocation" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Extend/extensionLocation" outputs="UML2XMI.xsd#//Extend;XSDComplexTypeDefinition=68/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//Implementation" outputs="UML2XMI.xsd#//Implementation;XSDElementDeclaration=69"/>
-    <nested inputs="UML2.ecore#//ActivityEdge" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70">
-      <nested inputs="UML2.ecore#//ActivityEdge/source" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/source" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/target" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/target" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/guard" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/redefinedElement" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/redefinedElement" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/inPartition" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/inPartition" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/weight" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/interrupts" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//ActivityEdge/interrupts" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=70/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+    <nested inputs="UML2.ecore#//Extend" outputs="UML2XMI.xsd#//Extend;XSDElementDeclaration=68"/>
+    <nested inputs="UML2.ecore#//UseCase" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69">
+      <nested inputs="UML2.ecore#//UseCase/include" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//UseCase/extend" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//UseCase/extensionPoint" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//UseCase/subject" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//UseCase/subject" outputs="UML2XMI.xsd#//UseCase;XSDComplexTypeDefinition=69/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//ActivityEdge" outputs="UML2XMI.xsd#//ActivityEdge;XSDElementDeclaration=70"/>
-    <nested inputs="UML2.ecore#//ActivityGroup" outputs="UML2XMI.xsd#//ActivityGroup;XSDComplexTypeDefinition=71"/>
-    <nested inputs="UML2.ecore#//ActivityGroup" outputs="UML2XMI.xsd#//ActivityGroup;XSDElementDeclaration=71"/>
-    <nested inputs="UML2.ecore#//ActivityNode" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72">
-      <nested inputs="UML2.ecore#//ActivityNode/outgoing" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ActivityNode/outgoing" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ActivityNode/incoming" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ActivityNode/incoming" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ActivityNode/redefinedElement" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ActivityNode/redefinedElement" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//ActivityNode/inPartition" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//ActivityNode/inPartition" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//ActivityNode/inInterruptibleRegion" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//ActivityNode/inInterruptibleRegion" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    <nested inputs="UML2.ecore#//UseCase" outputs="UML2XMI.xsd#//UseCase;XSDElementDeclaration=69"/>
+    <nested inputs="UML2.ecore#//ExtensionPoint" outputs="UML2XMI.xsd#//ExtensionPoint;XSDComplexTypeDefinition=70"/>
+    <nested inputs="UML2.ecore#//ExtensionPoint" outputs="UML2XMI.xsd#//ExtensionPoint;XSDElementDeclaration=70"/>
+    <nested inputs="UML2.ecore#//Include" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=71">
+      <nested inputs="UML2.ecore#//Include/addition" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=71/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Include/addition" outputs="UML2XMI.xsd#//Include;XSDComplexTypeDefinition=71/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ActivityNode" outputs="UML2XMI.xsd#//ActivityNode;XSDElementDeclaration=72"/>
-    <nested inputs="UML2.ecore#//Action" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=73">
-      <nested inputs="UML2.ecore#//Action/effect" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=73/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Action/localPrecondition" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=73/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Action/localPostcondition" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=73/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Include" outputs="UML2XMI.xsd#//Include;XSDElementDeclaration=71"/>
+    <nested inputs="UML2.ecore#//Artifact" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72">
+      <nested inputs="UML2.ecore#//Artifact/fileName" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Artifact/nestedArtifact" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Artifact/manifestation" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Artifact/ownedOperation" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Artifact/ownedAttribute" outputs="UML2XMI.xsd#//Artifact;XSDComplexTypeDefinition=72/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//Action" outputs="UML2XMI.xsd#//Action;XSDElementDeclaration=73"/>
-    <nested inputs="UML2.ecore#//ObjectNode" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74">
-      <nested inputs="UML2.ecore#//ObjectNode/ordering" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ObjectNode/upperBound" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ObjectNode/inState" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ObjectNode/inState" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//ObjectNode/selection" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//ObjectNode/selection" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//Artifact" outputs="UML2XMI.xsd#//Artifact;XSDElementDeclaration=72"/>
+    <nested inputs="UML2.ecore#//Manifestation" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=73">
+      <nested inputs="UML2.ecore#//Manifestation/utilizedElement" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=73/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Manifestation/utilizedElement" outputs="UML2XMI.xsd#//Manifestation;XSDComplexTypeDefinition=73/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//ObjectNode" outputs="UML2XMI.xsd#//ObjectNode;XSDElementDeclaration=74"/>
-    <nested inputs="UML2.ecore#//ControlNode" outputs="UML2XMI.xsd#//ControlNode;XSDComplexTypeDefinition=75"/>
-    <nested inputs="UML2.ecore#//ControlNode" outputs="UML2XMI.xsd#//ControlNode;XSDElementDeclaration=75"/>
-    <nested inputs="UML2.ecore#//ControlFlow" outputs="UML2XMI.xsd#//ControlFlow;XSDComplexTypeDefinition=76"/>
-    <nested inputs="UML2.ecore#//ControlFlow" outputs="UML2XMI.xsd#//ControlFlow;XSDElementDeclaration=76"/>
-    <nested inputs="UML2.ecore#//ObjectFlow" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77">
-      <nested inputs="UML2.ecore#//ObjectFlow/isMulticast" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ObjectFlow/isMultireceive" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ObjectFlow/transformation" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ObjectFlow/transformation" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ObjectFlow/selection" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//ObjectFlow/selection" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=77/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Manifestation" outputs="UML2XMI.xsd#//Manifestation;XSDElementDeclaration=73"/>
+    <nested inputs="UML2.ecore#//ActivityEdge" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74">
+      <nested inputs="UML2.ecore#//ActivityEdge/source" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/source" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/target" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/target" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/guard" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/redefinedElement" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/redefinedElement" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/inPartition" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/inPartition" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/weight" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/interrupts" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//ActivityEdge/interrupts" outputs="UML2XMI.xsd#//ActivityEdge;XSDComplexTypeDefinition=74/XSDParticle/XSDModelGroup/XSDParticle=6"/>
     </nested>
-    <nested inputs="UML2.ecore#//ObjectFlow" outputs="UML2XMI.xsd#//ObjectFlow;XSDElementDeclaration=77"/>
-    <nested inputs="UML2.ecore#//InitialNode" outputs="UML2XMI.xsd#//InitialNode;XSDComplexTypeDefinition=78"/>
-    <nested inputs="UML2.ecore#//InitialNode" outputs="UML2XMI.xsd#//InitialNode;XSDElementDeclaration=78"/>
-    <nested inputs="UML2.ecore#//FinalNode" outputs="UML2XMI.xsd#//FinalNode;XSDComplexTypeDefinition=79"/>
-    <nested inputs="UML2.ecore#//FinalNode" outputs="UML2XMI.xsd#//FinalNode;XSDElementDeclaration=79"/>
-    <nested inputs="UML2.ecore#//ActivityFinalNode" outputs="UML2XMI.xsd#//ActivityFinalNode;XSDComplexTypeDefinition=80"/>
-    <nested inputs="UML2.ecore#//ActivityFinalNode" outputs="UML2XMI.xsd#//ActivityFinalNode;XSDElementDeclaration=80"/>
-    <nested inputs="UML2.ecore#//DecisionNode" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=81">
-      <nested inputs="UML2.ecore#//DecisionNode/decisionInput" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=81/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//DecisionNode/decisionInput" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=81/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ActivityEdge" outputs="UML2XMI.xsd#//ActivityEdge;XSDElementDeclaration=74"/>
+    <nested inputs="UML2.ecore#//ActivityGroup" outputs="UML2XMI.xsd#//ActivityGroup;XSDComplexTypeDefinition=75"/>
+    <nested inputs="UML2.ecore#//ActivityGroup" outputs="UML2XMI.xsd#//ActivityGroup;XSDElementDeclaration=75"/>
+    <nested inputs="UML2.ecore#//ActivityNode" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76">
+      <nested inputs="UML2.ecore#//ActivityNode/outgoing" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ActivityNode/outgoing" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ActivityNode/incoming" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ActivityNode/incoming" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ActivityNode/redefinedElement" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ActivityNode/redefinedElement" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//ActivityNode/inPartition" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//ActivityNode/inPartition" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//ActivityNode/inInterruptibleRegion" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//ActivityNode/inInterruptibleRegion" outputs="UML2XMI.xsd#//ActivityNode;XSDComplexTypeDefinition=76/XSDParticle/XSDModelGroup/XSDParticle=4"/>
     </nested>
-    <nested inputs="UML2.ecore#//DecisionNode" outputs="UML2XMI.xsd#//DecisionNode;XSDElementDeclaration=81"/>
-    <nested inputs="UML2.ecore#//MergeNode" outputs="UML2XMI.xsd#//MergeNode;XSDComplexTypeDefinition=82"/>
-    <nested inputs="UML2.ecore#//MergeNode" outputs="UML2XMI.xsd#//MergeNode;XSDElementDeclaration=82"/>
-    <nested inputs="UML2.ecore#//ExecutableNode" outputs="UML2XMI.xsd#//ExecutableNode;XSDComplexTypeDefinition=83">
-      <nested inputs="UML2.ecore#//ExecutableNode/handler" outputs="UML2XMI.xsd#//ExecutableNode;XSDComplexTypeDefinition=83/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ActivityNode" outputs="UML2XMI.xsd#//ActivityNode;XSDElementDeclaration=76"/>
+    <nested inputs="UML2.ecore#//Action" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=77">
+      <nested inputs="UML2.ecore#//Action/effect" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=77/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Action/localPrecondition" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=77/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Action/localPostcondition" outputs="UML2XMI.xsd#//Action;XSDComplexTypeDefinition=77/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ExecutableNode" outputs="UML2XMI.xsd#//ExecutableNode;XSDElementDeclaration=83"/>
-    <nested inputs="UML2.ecore#//OutputPin" outputs="UML2XMI.xsd#//OutputPin;XSDComplexTypeDefinition=84"/>
-    <nested inputs="UML2.ecore#//OutputPin" outputs="UML2XMI.xsd#//OutputPin;XSDElementDeclaration=84"/>
-    <nested inputs="UML2.ecore#//InputPin" outputs="UML2XMI.xsd#//InputPin;XSDComplexTypeDefinition=85"/>
-    <nested inputs="UML2.ecore#//InputPin" outputs="UML2XMI.xsd#//InputPin;XSDElementDeclaration=85"/>
-    <nested inputs="UML2.ecore#//Pin" outputs="UML2XMI.xsd#//Pin;XSDComplexTypeDefinition=86"/>
-    <nested inputs="UML2.ecore#//Pin" outputs="UML2XMI.xsd#//Pin;XSDElementDeclaration=86"/>
-    <nested inputs="UML2.ecore#//ActivityParameterNode" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=87">
-      <nested inputs="UML2.ecore#//ActivityParameterNode/parameter" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=87/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ActivityParameterNode/parameter" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=87/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Action" outputs="UML2XMI.xsd#//Action;XSDElementDeclaration=77"/>
+    <nested inputs="UML2.ecore#//ObjectNode" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78">
+      <nested inputs="UML2.ecore#//ObjectNode/ordering" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ObjectNode/upperBound" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ObjectNode/inState" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ObjectNode/inState" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//ObjectNode/selection" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//ObjectNode/selection" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//ActivityParameterNode" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDElementDeclaration=87"/>
-    <nested inputs="UML2.ecore#//ValuePin" outputs="UML2XMI.xsd#//ValuePin;XSDComplexTypeDefinition=88">
-      <nested inputs="UML2.ecore#//ValuePin/value" outputs="UML2XMI.xsd#//ValuePin;XSDComplexTypeDefinition=88/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//ObjectNode;XSDComplexTypeDefinition=78/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ObjectNode" outputs="UML2XMI.xsd#//ObjectNode;XSDElementDeclaration=78"/>
+    <nested inputs="UML2.ecore#//ControlNode" outputs="UML2XMI.xsd#//ControlNode;XSDComplexTypeDefinition=79"/>
+    <nested inputs="UML2.ecore#//ControlNode" outputs="UML2XMI.xsd#//ControlNode;XSDElementDeclaration=79"/>
+    <nested inputs="UML2.ecore#//ControlFlow" outputs="UML2XMI.xsd#//ControlFlow;XSDComplexTypeDefinition=80"/>
+    <nested inputs="UML2.ecore#//ControlFlow" outputs="UML2XMI.xsd#//ControlFlow;XSDElementDeclaration=80"/>
+    <nested inputs="UML2.ecore#//ObjectFlow" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81">
+      <nested inputs="UML2.ecore#//ObjectFlow/isMulticast" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ObjectFlow/isMultireceive" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ObjectFlow/transformation" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ObjectFlow/transformation" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ObjectFlow/selection" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//ObjectFlow/selection" outputs="UML2XMI.xsd#//ObjectFlow;XSDComplexTypeDefinition=81/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ValuePin" outputs="UML2XMI.xsd#//ValuePin;XSDElementDeclaration=88"/>
-    <nested inputs="UML2.ecore#//ConnectorEnd" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=89">
-      <nested inputs="UML2.ecore#//ConnectorEnd/role" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=89/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ConnectorEnd/role" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=89/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ConnectorEnd/partWithPort" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=89/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ConnectorEnd/partWithPort" outputs="UML2XMI.xsd#//ConnectorEnd;XSDComplexTypeDefinition=89/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ObjectFlow" outputs="UML2XMI.xsd#//ObjectFlow;XSDElementDeclaration=81"/>
+    <nested inputs="UML2.ecore#//InitialNode" outputs="UML2XMI.xsd#//InitialNode;XSDComplexTypeDefinition=82"/>
+    <nested inputs="UML2.ecore#//InitialNode" outputs="UML2XMI.xsd#//InitialNode;XSDElementDeclaration=82"/>
+    <nested inputs="UML2.ecore#//FinalNode" outputs="UML2XMI.xsd#//FinalNode;XSDComplexTypeDefinition=83"/>
+    <nested inputs="UML2.ecore#//FinalNode" outputs="UML2XMI.xsd#//FinalNode;XSDElementDeclaration=83"/>
+    <nested inputs="UML2.ecore#//ActivityFinalNode" outputs="UML2XMI.xsd#//ActivityFinalNode;XSDComplexTypeDefinition=84"/>
+    <nested inputs="UML2.ecore#//ActivityFinalNode" outputs="UML2XMI.xsd#//ActivityFinalNode;XSDElementDeclaration=84"/>
+    <nested inputs="UML2.ecore#//DecisionNode" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=85">
+      <nested inputs="UML2.ecore#//DecisionNode/decisionInput" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=85/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//DecisionNode/decisionInput" outputs="UML2XMI.xsd#//DecisionNode;XSDComplexTypeDefinition=85/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ConnectorEnd" outputs="UML2XMI.xsd#//ConnectorEnd;XSDElementDeclaration=89"/>
-    <nested inputs="UML2.ecore#//ConnectableElement" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=90">
-      <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=90/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ConnectableElement/end" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=90/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//DecisionNode" outputs="UML2XMI.xsd#//DecisionNode;XSDElementDeclaration=85"/>
+    <nested inputs="UML2.ecore#//MergeNode" outputs="UML2XMI.xsd#//MergeNode;XSDComplexTypeDefinition=86"/>
+    <nested inputs="UML2.ecore#//MergeNode" outputs="UML2XMI.xsd#//MergeNode;XSDElementDeclaration=86"/>
+    <nested inputs="UML2.ecore#//ExecutableNode" outputs="UML2XMI.xsd#//ExecutableNode;XSDComplexTypeDefinition=87">
+      <nested inputs="UML2.ecore#//ExecutableNode/handler" outputs="UML2XMI.xsd#//ExecutableNode;XSDComplexTypeDefinition=87/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=90/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//ParameterableElement/templateParameter" outputs="UML2XMI.xsd#//ConnectableElement;XSDComplexTypeDefinition=90/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//ConnectableElement" outputs="UML2XMI.xsd#//ConnectableElement;XSDElementDeclaration=90"/>
-    <nested inputs="UML2.ecore#//Connector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91">
-      <nested inputs="UML2.ecore#//Connector/kind" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Connector/type" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Connector/type" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Connector/redefinedConnector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Connector/redefinedConnector" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Connector/end" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Connector/contract" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Connector/contract" outputs="UML2XMI.xsd#//Connector;XSDComplexTypeDefinition=91/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//ExecutableNode" outputs="UML2XMI.xsd#//ExecutableNode;XSDElementDeclaration=87"/>
+    <nested inputs="UML2.ecore#//OutputPin" outputs="UML2XMI.xsd#//OutputPin;XSDComplexTypeDefinition=88"/>
+    <nested inputs="UML2.ecore#//OutputPin" outputs="UML2XMI.xsd#//OutputPin;XSDElementDeclaration=88"/>
+    <nested inputs="UML2.ecore#//InputPin" outputs="UML2XMI.xsd#//InputPin;XSDComplexTypeDefinition=89"/>
+    <nested inputs="UML2.ecore#//InputPin" outputs="UML2XMI.xsd#//InputPin;XSDElementDeclaration=89"/>
+    <nested inputs="UML2.ecore#//Pin" outputs="UML2XMI.xsd#//Pin;XSDComplexTypeDefinition=90"/>
+    <nested inputs="UML2.ecore#//Pin" outputs="UML2XMI.xsd#//Pin;XSDElementDeclaration=90"/>
+    <nested inputs="UML2.ecore#//ActivityParameterNode" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=91">
+      <nested inputs="UML2.ecore#//ActivityParameterNode/parameter" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=91/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ActivityParameterNode/parameter" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDComplexTypeDefinition=91/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Connector" outputs="UML2XMI.xsd#//Connector;XSDElementDeclaration=91"/>
-    <nested inputs="UML2.ecore#//StructuredClassifier" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=92">
-      <nested inputs="UML2.ecore#//StructuredClassifier/ownedAttribute" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=92/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//StructuredClassifier/ownedConnector" outputs="UML2XMI.xsd#//StructuredClassifier;XSDComplexTypeDefinition=92/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ActivityParameterNode" outputs="UML2XMI.xsd#//ActivityParameterNode;XSDElementDeclaration=91"/>
+    <nested inputs="UML2.ecore#//ValuePin" outputs="UML2XMI.xsd#//ValuePin;XSDComplexTypeDefinition=92">
+      <nested inputs="UML2.ecore#//ValuePin/value" outputs="UML2XMI.xsd#//ValuePin;XSDComplexTypeDefinition=92/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//StructuredClassifier" outputs="UML2XMI.xsd#//StructuredClassifier;XSDElementDeclaration=92"/>
+    <nested inputs="UML2.ecore#//ValuePin" outputs="UML2XMI.xsd#//ValuePin;XSDElementDeclaration=92"/>
     <nested inputs="UML2.ecore#//CollaborationOccurrence" outputs="UML2XMI.xsd#//CollaborationOccurrence;XSDComplexTypeDefinition=93">
       <nested inputs="UML2.ecore#//CollaborationOccurrence/type" outputs="UML2XMI.xsd#//CollaborationOccurrence;XSDComplexTypeDefinition=93/XSDAttributeUse"/>
       <nested inputs="UML2.ecore#//CollaborationOccurrence/type" outputs="UML2XMI.xsd#//CollaborationOccurrence;XSDComplexTypeDefinition=93/XSDParticle/XSDModelGroup/XSDParticle"/>
@@ -668,192 +668,192 @@
     <nested inputs="UML2.ecore#//StructuredClassifier/ownedAttribute" outputs="UML2XMI.xsd#//Collaboration;XSDComplexTypeDefinition=94/XSDParticle/XSDModelGroup/XSDParticle"/>
     <nested inputs="UML2.ecore#//StructuredClassifier/ownedConnector" outputs="UML2XMI.xsd#//Collaboration;XSDComplexTypeDefinition=94/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     <nested inputs="UML2.ecore#//Collaboration" outputs="UML2XMI.xsd#//Collaboration;XSDElementDeclaration=94"/>
-    <nested inputs="UML2.ecore#//Variable" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=95"/>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=95/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//Variable" outputs="UML2XMI.xsd#//Variable;XSDElementDeclaration=95"/>
-    <nested inputs="UML2.ecore#//StructuredActivityNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96">
-      <nested inputs="UML2.ecore#//StructuredActivityNode/mustIsolate" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//StructuredActivityNode/variable" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//StructuredActivityNode/containedNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//StructuredActivityNode/containedEdge" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//Interaction" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95">
+      <nested inputs="UML2.ecore#//Interaction/lifeline" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Interaction/message" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Interaction/fragment" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Interaction/formalGate" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//Namespace/ownedRule" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//Namespace/elementImport" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//Namespace/packageImport" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-    <nested inputs="UML2.ecore#//StructuredActivityNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDElementDeclaration=96"/>
-    <nested inputs="UML2.ecore#//ConditionalNode" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=97">
-      <nested inputs="UML2.ecore#//ConditionalNode/isDeterminate" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=97/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ConditionalNode/isAssured" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=97/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ConditionalNode/clause" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ConditionalNode/result" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=95/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Interaction" outputs="UML2XMI.xsd#//Interaction;XSDElementDeclaration=95"/>
+    <nested inputs="UML2.ecore#//InteractionFragment" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=96">
+      <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=96/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=96/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ConditionalNode" outputs="UML2XMI.xsd#//ConditionalNode;XSDElementDeclaration=97"/>
-    <nested inputs="UML2.ecore#//Clause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98">
-      <nested inputs="UML2.ecore#//Clause/test" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Clause/test" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Clause/body" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Clause/body" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Clause/predecessorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Clause/predecessorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Clause/successorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Clause/successorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Clause/decider" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Clause/decider" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Clause/bodyOutput" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//Clause/bodyOutput" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//InteractionFragment" outputs="UML2XMI.xsd#//InteractionFragment;XSDElementDeclaration=96"/>
+    <nested inputs="UML2.ecore#//Lifeline" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97">
+      <nested inputs="UML2.ecore#//Lifeline/coveredBy" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Lifeline/coveredBy" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Lifeline/represents" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Lifeline/represents" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Lifeline/selector" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Lifeline/decomposedAs" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Lifeline/decomposedAs" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=97/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//Clause" outputs="UML2XMI.xsd#//Clause;XSDElementDeclaration=98"/>
-    <nested inputs="UML2.ecore#//LoopNode" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99">
-      <nested inputs="UML2.ecore#//LoopNode/isTestedFirst" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//LoopNode/bodyPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//LoopNode/bodyPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//LoopNode/setupPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//LoopNode/setupPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//LoopNode/decider" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//LoopNode/decider" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//LoopNode/test" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//LoopNode/test" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//LoopNode/result" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//LoopNode/loopVariable" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//LoopNode/bodyOutput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//LoopNode/bodyOutput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=6"/>
-      <nested inputs="UML2.ecore#//LoopNode/loopVariableInput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+    <nested inputs="UML2.ecore#//Lifeline" outputs="UML2XMI.xsd#//Lifeline;XSDElementDeclaration=97"/>
+    <nested inputs="UML2.ecore#//Message" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98">
+      <nested inputs="UML2.ecore#//Message/messageSort" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Message/receiveEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Message/receiveEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Message/sendEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Message/sendEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Message/connector" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Message/connector" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Message/signature" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Message/signature" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Message/argument" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=98/XSDParticle/XSDModelGroup/XSDParticle=4"/>
     </nested>
-    <nested inputs="UML2.ecore#//LoopNode" outputs="UML2XMI.xsd#//LoopNode;XSDElementDeclaration=99"/>
-    <nested inputs="UML2.ecore#//Port" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100">
-      <nested inputs="UML2.ecore#//Port/isBehavior" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Port/isService" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Port/redefinedPort" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Port/redefinedPort" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Port/protocol" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Port/protocol" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=100/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Message" outputs="UML2XMI.xsd#//Message;XSDElementDeclaration=98"/>
+    <nested inputs="UML2.ecore#//GeneralOrdering" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=99">
+      <nested inputs="UML2.ecore#//GeneralOrdering/before" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=99/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//GeneralOrdering/before" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//GeneralOrdering/after" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=99/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//GeneralOrdering/after" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=99/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Port" outputs="UML2XMI.xsd#//Port;XSDElementDeclaration=100"/>
-    <nested inputs="UML2.ecore#//EncapsulatedClassifier" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDComplexTypeDefinition=101">
-      <nested inputs="UML2.ecore#//EncapsulatedClassifier/ownedPort" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//GeneralOrdering" outputs="UML2XMI.xsd#//GeneralOrdering;XSDElementDeclaration=99"/>
+    <nested inputs="UML2.ecore#//MessageEnd" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=100">
+      <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=100/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=100/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=100/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=100/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//EncapsulatedClassifier" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDElementDeclaration=101"/>
-    <nested inputs="UML2.ecore#//Interaction" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102">
-      <nested inputs="UML2.ecore#//Interaction/lifeline" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Interaction/message" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Interaction/fragment" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Interaction/formalGate" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//MessageEnd" outputs="UML2XMI.xsd#//MessageEnd;XSDElementDeclaration=100"/>
+    <nested inputs="UML2.ecore#//EventOccurrence" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101">
+      <nested inputs="UML2.ecore#//EventOccurrence/startExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/startExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/finishExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/finishExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/toAfter" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/toAfter" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/toBefore" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//EventOccurrence/toBefore" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//Interaction;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//Interaction" outputs="UML2XMI.xsd#//Interaction;XSDElementDeclaration=102"/>
-    <nested inputs="UML2.ecore#//InteractionFragment" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=103">
-      <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=103/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=103/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//InteractionFragment;XSDComplexTypeDefinition=103/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=101/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//EventOccurrence" outputs="UML2XMI.xsd#//EventOccurrence;XSDElementDeclaration=101"/>
+    <nested inputs="UML2.ecore#//ExecutionOccurrence" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102">
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/start" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/start" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/finish" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/finish" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/behavior" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ExecutionOccurrence/behavior" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=102/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionFragment" outputs="UML2XMI.xsd#//InteractionFragment;XSDElementDeclaration=103"/>
-    <nested inputs="UML2.ecore#//Lifeline" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104">
-      <nested inputs="UML2.ecore#//Lifeline/coveredBy" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Lifeline/coveredBy" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Lifeline/represents" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Lifeline/represents" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Lifeline/selector" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Lifeline/decomposedAs" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Lifeline/decomposedAs" outputs="UML2XMI.xsd#//Lifeline;XSDComplexTypeDefinition=104/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//ExecutionOccurrence" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDElementDeclaration=102"/>
+    <nested inputs="UML2.ecore#//StateInvariant" outputs="UML2XMI.xsd#//StateInvariant;XSDComplexTypeDefinition=103">
+      <nested inputs="UML2.ecore#//StateInvariant/invariant" outputs="UML2XMI.xsd#//StateInvariant;XSDComplexTypeDefinition=103/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Lifeline" outputs="UML2XMI.xsd#//Lifeline;XSDElementDeclaration=104"/>
-    <nested inputs="UML2.ecore#//Message" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105">
-      <nested inputs="UML2.ecore#//Message/messageSort" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Message/receiveEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Message/receiveEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Message/sendEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Message/sendEvent" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Message/connector" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Message/connector" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Message/signature" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Message/signature" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Message/argument" outputs="UML2XMI.xsd#//Message;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+    <nested inputs="UML2.ecore#//StateInvariant" outputs="UML2XMI.xsd#//StateInvariant;XSDElementDeclaration=103"/>
+    <nested inputs="UML2.ecore#//Stop" outputs="UML2XMI.xsd#//Stop;XSDComplexTypeDefinition=104"/>
+    <nested inputs="UML2.ecore#//Stop" outputs="UML2XMI.xsd#//Stop;XSDElementDeclaration=104"/>
+    <nested inputs="UML2.ecore#//Port" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105">
+      <nested inputs="UML2.ecore#//Port/isBehavior" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Port/isService" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Port/redefinedPort" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Port/redefinedPort" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Port/protocol" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Port/protocol" outputs="UML2XMI.xsd#//Port;XSDComplexTypeDefinition=105/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Message" outputs="UML2XMI.xsd#//Message;XSDElementDeclaration=105"/>
-    <nested inputs="UML2.ecore#//GeneralOrdering" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=106">
-      <nested inputs="UML2.ecore#//GeneralOrdering/before" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=106/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//GeneralOrdering/before" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=106/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//GeneralOrdering/after" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=106/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//GeneralOrdering/after" outputs="UML2XMI.xsd#//GeneralOrdering;XSDComplexTypeDefinition=106/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Port" outputs="UML2XMI.xsd#//Port;XSDElementDeclaration=105"/>
+    <nested inputs="UML2.ecore#//EncapsulatedClassifier" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDComplexTypeDefinition=106">
+      <nested inputs="UML2.ecore#//EncapsulatedClassifier/ownedPort" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDComplexTypeDefinition=106/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//GeneralOrdering" outputs="UML2XMI.xsd#//GeneralOrdering;XSDElementDeclaration=106"/>
-    <nested inputs="UML2.ecore#//MessageEnd" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=107">
-      <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=107/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=107/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=107/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//MessageEnd;XSDComplexTypeDefinition=107/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//EncapsulatedClassifier" outputs="UML2XMI.xsd#//EncapsulatedClassifier;XSDElementDeclaration=106"/>
+    <nested inputs="UML2.ecore#//CallTrigger" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=107">
+      <nested inputs="UML2.ecore#//CallTrigger/operation" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=107/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CallTrigger/operation" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=107/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//MessageEnd" outputs="UML2XMI.xsd#//MessageEnd;XSDElementDeclaration=107"/>
-    <nested inputs="UML2.ecore#//EventOccurrence" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108">
-      <nested inputs="UML2.ecore#//EventOccurrence/startExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/startExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/finishExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/finishExec" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/toAfter" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/toAfter" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/toBefore" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse=5"/>
-      <nested inputs="UML2.ecore#//EventOccurrence/toBefore" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//CallTrigger" outputs="UML2XMI.xsd#//CallTrigger;XSDElementDeclaration=107"/>
+    <nested inputs="UML2.ecore#//MessageTrigger" outputs="UML2XMI.xsd#//MessageTrigger;XSDComplexTypeDefinition=108"/>
+    <nested inputs="UML2.ecore#//MessageTrigger" outputs="UML2XMI.xsd#//MessageTrigger;XSDElementDeclaration=108"/>
+    <nested inputs="UML2.ecore#//ChangeTrigger" outputs="UML2XMI.xsd#//ChangeTrigger;XSDComplexTypeDefinition=109">
+      <nested inputs="UML2.ecore#//ChangeTrigger/changeExpression" outputs="UML2XMI.xsd#//ChangeTrigger;XSDComplexTypeDefinition=109/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//MessageEnd/receiveMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//MessageEnd/sendMessage" outputs="UML2XMI.xsd#//EventOccurrence;XSDComplexTypeDefinition=108/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//EventOccurrence" outputs="UML2XMI.xsd#//EventOccurrence;XSDElementDeclaration=108"/>
-    <nested inputs="UML2.ecore#//ExecutionOccurrence" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109">
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/start" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/start" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/finish" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/finish" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/behavior" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ExecutionOccurrence/behavior" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDComplexTypeDefinition=109/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//ChangeTrigger" outputs="UML2XMI.xsd#//ChangeTrigger;XSDElementDeclaration=109"/>
+    <nested inputs="UML2.ecore#//Trigger" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=110">
+      <nested inputs="UML2.ecore#//Trigger/port" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=110/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Trigger/port" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=110/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ExecutionOccurrence" outputs="UML2XMI.xsd#//ExecutionOccurrence;XSDElementDeclaration=109"/>
-    <nested inputs="UML2.ecore#//StateInvariant" outputs="UML2XMI.xsd#//StateInvariant;XSDComplexTypeDefinition=110">
-      <nested inputs="UML2.ecore#//StateInvariant/invariant" outputs="UML2XMI.xsd#//StateInvariant;XSDComplexTypeDefinition=110/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Trigger" outputs="UML2XMI.xsd#//Trigger;XSDElementDeclaration=110"/>
+    <nested inputs="UML2.ecore#//Reception" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=111">
+      <nested inputs="UML2.ecore#//Reception/signal" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=111/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Reception/signal" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=111/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//StateInvariant" outputs="UML2XMI.xsd#//StateInvariant;XSDElementDeclaration=110"/>
-    <nested inputs="UML2.ecore#//Stop" outputs="UML2XMI.xsd#//Stop;XSDComplexTypeDefinition=111"/>
-    <nested inputs="UML2.ecore#//Stop" outputs="UML2XMI.xsd#//Stop;XSDElementDeclaration=111"/>
-    <nested inputs="UML2.ecore#//CallTrigger" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=112">
-      <nested inputs="UML2.ecore#//CallTrigger/operation" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=112/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CallTrigger/operation" outputs="UML2XMI.xsd#//CallTrigger;XSDComplexTypeDefinition=112/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Reception" outputs="UML2XMI.xsd#//Reception;XSDElementDeclaration=111"/>
+    <nested inputs="UML2.ecore#//Signal" outputs="UML2XMI.xsd#//Signal;XSDComplexTypeDefinition=112">
+      <nested inputs="UML2.ecore#//Signal/ownedAttribute" outputs="UML2XMI.xsd#//Signal;XSDComplexTypeDefinition=112/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//CallTrigger" outputs="UML2XMI.xsd#//CallTrigger;XSDElementDeclaration=112"/>
-    <nested inputs="UML2.ecore#//MessageTrigger" outputs="UML2XMI.xsd#//MessageTrigger;XSDComplexTypeDefinition=113"/>
-    <nested inputs="UML2.ecore#//MessageTrigger" outputs="UML2XMI.xsd#//MessageTrigger;XSDElementDeclaration=113"/>
-    <nested inputs="UML2.ecore#//ChangeTrigger" outputs="UML2XMI.xsd#//ChangeTrigger;XSDComplexTypeDefinition=114">
-      <nested inputs="UML2.ecore#//ChangeTrigger/changeExpression" outputs="UML2XMI.xsd#//ChangeTrigger;XSDComplexTypeDefinition=114/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Signal" outputs="UML2XMI.xsd#//Signal;XSDElementDeclaration=112"/>
+    <nested inputs="UML2.ecore#//SignalTrigger" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=113">
+      <nested inputs="UML2.ecore#//SignalTrigger/signal" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=113/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//SignalTrigger/signal" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=113/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ChangeTrigger" outputs="UML2XMI.xsd#//ChangeTrigger;XSDElementDeclaration=114"/>
-    <nested inputs="UML2.ecore#//Trigger" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=115">
-      <nested inputs="UML2.ecore#//Trigger/port" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=115/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Trigger/port" outputs="UML2XMI.xsd#//Trigger;XSDComplexTypeDefinition=115/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//SignalTrigger" outputs="UML2XMI.xsd#//SignalTrigger;XSDElementDeclaration=113"/>
+    <nested inputs="UML2.ecore#//TimeTrigger" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=114">
+      <nested inputs="UML2.ecore#//TimeTrigger/isRelative" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=114/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//TimeTrigger/when" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=114/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Trigger" outputs="UML2XMI.xsd#//Trigger;XSDElementDeclaration=115"/>
-    <nested inputs="UML2.ecore#//Reception" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=116">
-      <nested inputs="UML2.ecore#//Reception/signal" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=116/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Reception/signal" outputs="UML2XMI.xsd#//Reception;XSDComplexTypeDefinition=116/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//TimeTrigger" outputs="UML2XMI.xsd#//TimeTrigger;XSDElementDeclaration=114"/>
+    <nested inputs="UML2.ecore#//AnyTrigger" outputs="UML2XMI.xsd#//AnyTrigger;XSDComplexTypeDefinition=115"/>
+    <nested inputs="UML2.ecore#//AnyTrigger" outputs="UML2XMI.xsd#//AnyTrigger;XSDElementDeclaration=115"/>
+    <nested inputs="UML2.ecore#//Variable" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=116"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=116/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//TypedElement/type" outputs="UML2XMI.xsd#//Variable;XSDComplexTypeDefinition=116/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Variable" outputs="UML2XMI.xsd#//Variable;XSDElementDeclaration=116"/>
+    <nested inputs="UML2.ecore#//StructuredActivityNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117">
+      <nested inputs="UML2.ecore#//StructuredActivityNode/mustIsolate" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//StructuredActivityNode/variable" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//StructuredActivityNode/containedNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//StructuredActivityNode/containedEdge" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//Reception" outputs="UML2XMI.xsd#//Reception;XSDElementDeclaration=116"/>
-    <nested inputs="UML2.ecore#//Signal" outputs="UML2XMI.xsd#//Signal;XSDComplexTypeDefinition=117">
-      <nested inputs="UML2.ecore#//Signal/ownedAttribute" outputs="UML2XMI.xsd#//Signal;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Namespace/ownedRule" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Namespace/elementImport" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Namespace/packageImport" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDComplexTypeDefinition=117/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//StructuredActivityNode" outputs="UML2XMI.xsd#//StructuredActivityNode;XSDElementDeclaration=117"/>
+    <nested inputs="UML2.ecore#//ConditionalNode" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=118">
+      <nested inputs="UML2.ecore#//ConditionalNode/isDeterminate" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=118/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ConditionalNode/isAssured" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=118/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ConditionalNode/clause" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=118/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ConditionalNode/result" outputs="UML2XMI.xsd#//ConditionalNode;XSDComplexTypeDefinition=118/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Signal" outputs="UML2XMI.xsd#//Signal;XSDElementDeclaration=117"/>
-    <nested inputs="UML2.ecore#//SignalTrigger" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=118">
-      <nested inputs="UML2.ecore#//SignalTrigger/signal" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=118/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//SignalTrigger/signal" outputs="UML2XMI.xsd#//SignalTrigger;XSDComplexTypeDefinition=118/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ConditionalNode" outputs="UML2XMI.xsd#//ConditionalNode;XSDElementDeclaration=118"/>
+    <nested inputs="UML2.ecore#//Clause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119">
+      <nested inputs="UML2.ecore#//Clause/test" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Clause/test" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Clause/body" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Clause/body" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Clause/predecessorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Clause/predecessorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Clause/successorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Clause/successorClause" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Clause/decider" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Clause/decider" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Clause/bodyOutput" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//Clause/bodyOutput" outputs="UML2XMI.xsd#//Clause;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//SignalTrigger" outputs="UML2XMI.xsd#//SignalTrigger;XSDElementDeclaration=118"/>
-    <nested inputs="UML2.ecore#//TimeTrigger" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=119">
-      <nested inputs="UML2.ecore#//TimeTrigger/isRelative" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=119/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//TimeTrigger/when" outputs="UML2XMI.xsd#//TimeTrigger;XSDComplexTypeDefinition=119/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Clause" outputs="UML2XMI.xsd#//Clause;XSDElementDeclaration=119"/>
+    <nested inputs="UML2.ecore#//LoopNode" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120">
+      <nested inputs="UML2.ecore#//LoopNode/isTestedFirst" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//LoopNode/bodyPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//LoopNode/bodyPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//LoopNode/setupPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//LoopNode/setupPart" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//LoopNode/decider" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//LoopNode/decider" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//LoopNode/test" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//LoopNode/test" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//LoopNode/result" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//LoopNode/loopVariable" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//LoopNode/bodyOutput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDAttributeUse=5"/>
+      <nested inputs="UML2.ecore#//LoopNode/bodyOutput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+      <nested inputs="UML2.ecore#//LoopNode/loopVariableInput" outputs="UML2XMI.xsd#//LoopNode;XSDComplexTypeDefinition=120/XSDParticle/XSDModelGroup/XSDParticle=7"/>
     </nested>
-    <nested inputs="UML2.ecore#//TimeTrigger" outputs="UML2XMI.xsd#//TimeTrigger;XSDElementDeclaration=119"/>
-    <nested inputs="UML2.ecore#//AnyTrigger" outputs="UML2XMI.xsd#//AnyTrigger;XSDComplexTypeDefinition=120"/>
-    <nested inputs="UML2.ecore#//AnyTrigger" outputs="UML2XMI.xsd#//AnyTrigger;XSDElementDeclaration=120"/>
+    <nested inputs="UML2.ecore#//LoopNode" outputs="UML2XMI.xsd#//LoopNode;XSDElementDeclaration=120"/>
     <nested inputs="UML2.ecore#//TemplateSignature" outputs="UML2XMI.xsd#//TemplateSignature;XSDComplexTypeDefinition=121">
       <nested inputs="UML2.ecore#//TemplateSignature/parameter" outputs="UML2XMI.xsd#//TemplateSignature;XSDComplexTypeDefinition=121/XSDAttributeUse"/>
       <nested inputs="UML2.ecore#//TemplateSignature/parameter" outputs="UML2XMI.xsd#//TemplateSignature;XSDComplexTypeDefinition=121/XSDParticle/XSDModelGroup/XSDParticle"/>
@@ -923,362 +923,361 @@
     <nested inputs="UML2.ecore#//TemplateableClassifier" outputs="UML2XMI.xsd#//TemplateableClassifier;XSDElementDeclaration=132"/>
     <nested inputs="UML2.ecore#//ConnectableElementTemplateParameter" outputs="UML2XMI.xsd#//ConnectableElementTemplateParameter;XSDComplexTypeDefinition=133"/>
     <nested inputs="UML2.ecore#//ConnectableElementTemplateParameter" outputs="UML2XMI.xsd#//ConnectableElementTemplateParameter;XSDElementDeclaration=133"/>
-    <nested inputs="UML2.ecore#//InteractionOccurrence" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=134">
-      <nested inputs="UML2.ecore#//InteractionOccurrence/refersTo" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=134/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InteractionOccurrence/refersTo" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InteractionOccurrence/actualGate" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//InteractionOccurrence/argument" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//StateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=134">
+      <nested inputs="UML2.ecore#//StateMachine/region" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//StateMachine/connectionPoint" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//StateMachine/extendedStateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=134/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//StateMachine/extendedStateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=134/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionOccurrence" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDElementDeclaration=134"/>
-    <nested inputs="UML2.ecore#//Gate" outputs="UML2XMI.xsd#//Gate;XSDComplexTypeDefinition=135"/>
-    <nested inputs="UML2.ecore#//Gate" outputs="UML2XMI.xsd#//Gate;XSDElementDeclaration=135"/>
-    <nested inputs="UML2.ecore#//PartDecomposition" outputs="UML2XMI.xsd#//PartDecomposition;XSDComplexTypeDefinition=136"/>
-    <nested inputs="UML2.ecore#//PartDecomposition" outputs="UML2XMI.xsd#//PartDecomposition;XSDElementDeclaration=136"/>
-    <nested inputs="UML2.ecore#//InteractionOperand" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137">
-      <nested inputs="UML2.ecore#//InteractionOperand/guard" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//InteractionOperand/fragment" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//StateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDElementDeclaration=134"/>
+    <nested inputs="UML2.ecore#//Region" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=135">
+      <nested inputs="UML2.ecore#//Region/subvertex" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=135/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Region/transition" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=135/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Region/extendedRegion" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=135/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Region/extendedRegion" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=135/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//InteractionOperand" outputs="UML2XMI.xsd#//InteractionOperand;XSDElementDeclaration=137"/>
-    <nested inputs="UML2.ecore#//InteractionConstraint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=138">
-      <nested inputs="UML2.ecore#//InteractionConstraint/minint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=138/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InteractionConstraint/maxint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=138/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Region" outputs="UML2XMI.xsd#//Region;XSDElementDeclaration=135"/>
+    <nested inputs="UML2.ecore#//Pseudostate" outputs="UML2XMI.xsd#//Pseudostate;XSDComplexTypeDefinition=136">
+      <nested inputs="UML2.ecore#//Pseudostate/kind" outputs="UML2XMI.xsd#//Pseudostate;XSDComplexTypeDefinition=136/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//InteractionConstraint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDElementDeclaration=138"/>
-    <nested inputs="UML2.ecore#//CombinedFragment" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=139">
-      <nested inputs="UML2.ecore#//CombinedFragment/interactionOperator" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=139/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CombinedFragment/operand" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=139/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//CombinedFragment/cfragmentGate" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=139/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Pseudostate" outputs="UML2XMI.xsd#//Pseudostate;XSDElementDeclaration=136"/>
+    <nested inputs="UML2.ecore#//State" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137">
+      <nested inputs="UML2.ecore#//State/submachine" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//State/submachine" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//State/connection" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//State/redefinedState" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//State/redefinedState" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//State/deferrableTrigger" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//State/deferrableTrigger" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+      <nested inputs="UML2.ecore#//State/region" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=6"/>
+      <nested inputs="UML2.ecore#//State/entry" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=7"/>
+      <nested inputs="UML2.ecore#//State/exit" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=8"/>
+      <nested inputs="UML2.ecore#//State/doActivity" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=9"/>
+      <nested inputs="UML2.ecore#//State/stateInvariant" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=10"/>
     </nested>
-    <nested inputs="UML2.ecore#//CombinedFragment" outputs="UML2XMI.xsd#//CombinedFragment;XSDElementDeclaration=139"/>
-    <nested inputs="UML2.ecore#//Continuation" outputs="UML2XMI.xsd#//Continuation;XSDComplexTypeDefinition=140">
-      <nested inputs="UML2.ecore#//Continuation/setting" outputs="UML2XMI.xsd#//Continuation;XSDComplexTypeDefinition=140/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=137/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//State" outputs="UML2XMI.xsd#//State;XSDElementDeclaration=137"/>
+    <nested inputs="UML2.ecore#//Vertex" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=138">
+      <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=138/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=138/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=138/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=138/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Continuation" outputs="UML2XMI.xsd#//Continuation;XSDElementDeclaration=140"/>
-    <nested inputs="UML2.ecore#//StateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=141">
-      <nested inputs="UML2.ecore#//StateMachine/region" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=141/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//StateMachine/connectionPoint" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=141/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//StateMachine/extendedStateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=141/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//StateMachine/extendedStateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDComplexTypeDefinition=141/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//Vertex" outputs="UML2XMI.xsd#//Vertex;XSDElementDeclaration=138"/>
+    <nested inputs="UML2.ecore#//ConnectionPointReference" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=139">
+      <nested inputs="UML2.ecore#//ConnectionPointReference/entry" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=139/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ConnectionPointReference/entry" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=139/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ConnectionPointReference/exit" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=139/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ConnectionPointReference/exit" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=139/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//StateMachine" outputs="UML2XMI.xsd#//StateMachine;XSDElementDeclaration=141"/>
-    <nested inputs="UML2.ecore#//Region" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=142">
-      <nested inputs="UML2.ecore#//Region/subvertex" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=142/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Region/transition" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=142/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Region/extendedRegion" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=142/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Region/extendedRegion" outputs="UML2XMI.xsd#//Region;XSDComplexTypeDefinition=142/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//ConnectionPointReference" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDElementDeclaration=139"/>
+    <nested inputs="UML2.ecore#//Transition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140">
+      <nested inputs="UML2.ecore#//Transition/kind" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Transition/source" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Transition/source" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Transition/target" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//Transition/target" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//Transition/redefinedTransition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//Transition/redefinedTransition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//Transition/trigger" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//Transition/trigger" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+      <nested inputs="UML2.ecore#//Transition/guard" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle=4"/>
+      <nested inputs="UML2.ecore#//Transition/effect" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=140/XSDParticle/XSDModelGroup/XSDParticle=5"/>
     </nested>
-    <nested inputs="UML2.ecore#//Region" outputs="UML2XMI.xsd#//Region;XSDElementDeclaration=142"/>
-    <nested inputs="UML2.ecore#//Pseudostate" outputs="UML2XMI.xsd#//Pseudostate;XSDComplexTypeDefinition=143">
-      <nested inputs="UML2.ecore#//Pseudostate/kind" outputs="UML2XMI.xsd#//Pseudostate;XSDComplexTypeDefinition=143/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//Transition" outputs="UML2XMI.xsd#//Transition;XSDElementDeclaration=140"/>
+    <nested inputs="UML2.ecore#//FinalState" outputs="UML2XMI.xsd#//FinalState;XSDComplexTypeDefinition=141"/>
+    <nested inputs="UML2.ecore#//FinalState" outputs="UML2XMI.xsd#//FinalState;XSDElementDeclaration=141"/>
+    <nested inputs="UML2.ecore#//ForkNode" outputs="UML2XMI.xsd#//ForkNode;XSDComplexTypeDefinition=142"/>
+    <nested inputs="UML2.ecore#//ForkNode" outputs="UML2XMI.xsd#//ForkNode;XSDElementDeclaration=142"/>
+    <nested inputs="UML2.ecore#//JoinNode" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=143">
+      <nested inputs="UML2.ecore#//JoinNode/isCombineDuplicate" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=143/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//JoinNode/joinSpec" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=143/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Pseudostate" outputs="UML2XMI.xsd#//Pseudostate;XSDElementDeclaration=143"/>
-    <nested inputs="UML2.ecore#//State" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144">
-      <nested inputs="UML2.ecore#//State/submachine" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//State/submachine" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//State/connection" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//State/redefinedState" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//State/redefinedState" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//State/deferrableTrigger" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//State/deferrableTrigger" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=5"/>
-      <nested inputs="UML2.ecore#//State/region" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=6"/>
-      <nested inputs="UML2.ecore#//State/entry" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=7"/>
-      <nested inputs="UML2.ecore#//State/exit" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=8"/>
-      <nested inputs="UML2.ecore#//State/doActivity" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=9"/>
-      <nested inputs="UML2.ecore#//State/stateInvariant" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=10"/>
+    <nested inputs="UML2.ecore#//JoinNode" outputs="UML2XMI.xsd#//JoinNode;XSDElementDeclaration=143"/>
+    <nested inputs="UML2.ecore#//FlowFinalNode" outputs="UML2XMI.xsd#//FlowFinalNode;XSDComplexTypeDefinition=144"/>
+    <nested inputs="UML2.ecore#//FlowFinalNode" outputs="UML2XMI.xsd#//FlowFinalNode;XSDElementDeclaration=144"/>
+    <nested inputs="UML2.ecore#//CentralBufferNode" outputs="UML2XMI.xsd#//CentralBufferNode;XSDComplexTypeDefinition=145"/>
+    <nested inputs="UML2.ecore#//CentralBufferNode" outputs="UML2XMI.xsd#//CentralBufferNode;XSDElementDeclaration=145"/>
+    <nested inputs="UML2.ecore#//ActivityPartition" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146">
+      <nested inputs="UML2.ecore#//ActivityPartition/isDimension" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/isExternal" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/containedEdge" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/containedEdge" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/containedNode" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDAttributeUse=3"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/containedNode" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/subgroup" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/represents" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDAttributeUse=4"/>
+      <nested inputs="UML2.ecore#//ActivityPartition/represents" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDAttributeUse"/>
-    <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDAttributeUse=1"/>
-    <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//State;XSDComplexTypeDefinition=144/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-    <nested inputs="UML2.ecore#//State" outputs="UML2XMI.xsd#//State;XSDElementDeclaration=144"/>
-    <nested inputs="UML2.ecore#//Vertex" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=145">
-      <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=145/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Vertex/outgoing" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=145/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=145/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Vertex/incoming" outputs="UML2XMI.xsd#//Vertex;XSDComplexTypeDefinition=145/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ActivityPartition" outputs="UML2XMI.xsd#//ActivityPartition;XSDElementDeclaration=146"/>
+    <nested inputs="UML2.ecore#//CreateObjectAction" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=147">
+      <nested inputs="UML2.ecore#//CreateObjectAction/classifier" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=147/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CreateObjectAction/classifier" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//CreateObjectAction/result" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Vertex" outputs="UML2XMI.xsd#//Vertex;XSDElementDeclaration=145"/>
-    <nested inputs="UML2.ecore#//ConnectionPointReference" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=146">
-      <nested inputs="UML2.ecore#//ConnectionPointReference/entry" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=146/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ConnectionPointReference/entry" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ConnectionPointReference/exit" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=146/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ConnectionPointReference/exit" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDComplexTypeDefinition=146/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//CreateObjectAction" outputs="UML2XMI.xsd#//CreateObjectAction;XSDElementDeclaration=147"/>
+    <nested inputs="UML2.ecore#//DestroyObjectAction" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDComplexTypeDefinition=148">
+      <nested inputs="UML2.ecore#//DestroyObjectAction/target" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDComplexTypeDefinition=148/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ConnectionPointReference" outputs="UML2XMI.xsd#//ConnectionPointReference;XSDElementDeclaration=146"/>
-    <nested inputs="UML2.ecore#//Transition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147">
-      <nested inputs="UML2.ecore#//Transition/kind" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Transition/source" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Transition/source" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Transition/target" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//Transition/target" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//Transition/redefinedTransition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//Transition/redefinedTransition" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//Transition/trigger" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//Transition/trigger" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=3"/>
-      <nested inputs="UML2.ecore#//Transition/guard" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=4"/>
-      <nested inputs="UML2.ecore#//Transition/effect" outputs="UML2XMI.xsd#//Transition;XSDComplexTypeDefinition=147/XSDParticle/XSDModelGroup/XSDParticle=5"/>
+    <nested inputs="UML2.ecore#//DestroyObjectAction" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDElementDeclaration=148"/>
+    <nested inputs="UML2.ecore#//TestIdentityAction" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=149">
+      <nested inputs="UML2.ecore#//TestIdentityAction/first" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=149/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//TestIdentityAction/second" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=149/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//TestIdentityAction/result" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=149/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//Transition" outputs="UML2XMI.xsd#//Transition;XSDElementDeclaration=147"/>
-    <nested inputs="UML2.ecore#//FinalState" outputs="UML2XMI.xsd#//FinalState;XSDComplexTypeDefinition=148"/>
-    <nested inputs="UML2.ecore#//FinalState" outputs="UML2XMI.xsd#//FinalState;XSDElementDeclaration=148"/>
-    <nested inputs="UML2.ecore#//ForkNode" outputs="UML2XMI.xsd#//ForkNode;XSDComplexTypeDefinition=149"/>
-    <nested inputs="UML2.ecore#//ForkNode" outputs="UML2XMI.xsd#//ForkNode;XSDElementDeclaration=149"/>
-    <nested inputs="UML2.ecore#//JoinNode" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=150">
-      <nested inputs="UML2.ecore#//JoinNode/isCombineDuplicate" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=150/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//JoinNode/joinSpec" outputs="UML2XMI.xsd#//JoinNode;XSDComplexTypeDefinition=150/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//TestIdentityAction" outputs="UML2XMI.xsd#//TestIdentityAction;XSDElementDeclaration=149"/>
+    <nested inputs="UML2.ecore#//ReadSelfAction" outputs="UML2XMI.xsd#//ReadSelfAction;XSDComplexTypeDefinition=150">
+      <nested inputs="UML2.ecore#//ReadSelfAction/result" outputs="UML2XMI.xsd#//ReadSelfAction;XSDComplexTypeDefinition=150/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//JoinNode" outputs="UML2XMI.xsd#//JoinNode;XSDElementDeclaration=150"/>
-    <nested inputs="UML2.ecore#//FlowFinalNode" outputs="UML2XMI.xsd#//FlowFinalNode;XSDComplexTypeDefinition=151"/>
-    <nested inputs="UML2.ecore#//FlowFinalNode" outputs="UML2XMI.xsd#//FlowFinalNode;XSDElementDeclaration=151"/>
-    <nested inputs="UML2.ecore#//CentralBufferNode" outputs="UML2XMI.xsd#//CentralBufferNode;XSDComplexTypeDefinition=152"/>
-    <nested inputs="UML2.ecore#//CentralBufferNode" outputs="UML2XMI.xsd#//CentralBufferNode;XSDElementDeclaration=152"/>
-    <nested inputs="UML2.ecore#//ActivityPartition" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153">
-      <nested inputs="UML2.ecore#//ActivityPartition/isDimension" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/isExternal" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/containedEdge" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/containedEdge" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/containedNode" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDAttributeUse=3"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/containedNode" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/subgroup" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDParticle/XSDModelGroup/XSDParticle=2"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/represents" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDAttributeUse=4"/>
-      <nested inputs="UML2.ecore#//ActivityPartition/represents" outputs="UML2XMI.xsd#//ActivityPartition;XSDComplexTypeDefinition=153/XSDParticle/XSDModelGroup/XSDParticle=3"/>
+    <nested inputs="UML2.ecore#//ReadSelfAction" outputs="UML2XMI.xsd#//ReadSelfAction;XSDElementDeclaration=150"/>
+    <nested inputs="UML2.ecore#//StructuralFeatureAction" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=151">
+      <nested inputs="UML2.ecore#//StructuralFeatureAction/structuralFeature" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=151/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//StructuralFeatureAction/structuralFeature" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=151/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//StructuralFeatureAction/object" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=151/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ActivityPartition" outputs="UML2XMI.xsd#//ActivityPartition;XSDElementDeclaration=153"/>
-    <nested inputs="UML2.ecore#//ExpansionNode" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=154">
-      <nested inputs="UML2.ecore#//ExpansionNode/regionAsOutput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=154/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ExpansionNode/regionAsOutput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=154/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ExpansionNode/regionAsInput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=154/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ExpansionNode/regionAsInput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=154/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//StructuralFeatureAction" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDElementDeclaration=151"/>
+    <nested inputs="UML2.ecore#//ReadStructuralFeatureAction" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDComplexTypeDefinition=152">
+      <nested inputs="UML2.ecore#//ReadStructuralFeatureAction/result" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDComplexTypeDefinition=152/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ExpansionNode" outputs="UML2XMI.xsd#//ExpansionNode;XSDElementDeclaration=154"/>
-    <nested inputs="UML2.ecore#//ExpansionRegion" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155">
-      <nested inputs="UML2.ecore#//ExpansionRegion/mode" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ExpansionRegion/outputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ExpansionRegion/outputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ExpansionRegion/inputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ExpansionRegion/inputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=155/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ReadStructuralFeatureAction" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDElementDeclaration=152"/>
+    <nested inputs="UML2.ecore#//WriteStructuralFeatureAction" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDComplexTypeDefinition=153">
+      <nested inputs="UML2.ecore#//WriteStructuralFeatureAction/value" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDComplexTypeDefinition=153/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ExpansionRegion" outputs="UML2XMI.xsd#//ExpansionRegion;XSDElementDeclaration=155"/>
-    <nested inputs="UML2.ecore#//ExceptionHandler" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156">
-      <nested inputs="UML2.ecore#//ExceptionHandler/handlerBody" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ExceptionHandler/handlerBody" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionInput" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionInput" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionType" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDAttributeUse=2"/>
-      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionType" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=156/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//WriteStructuralFeatureAction" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDElementDeclaration=153"/>
+    <nested inputs="UML2.ecore#//ClearStructuralFeatureAction" outputs="UML2XMI.xsd#//ClearStructuralFeatureAction;XSDComplexTypeDefinition=154"/>
+    <nested inputs="UML2.ecore#//ClearStructuralFeatureAction" outputs="UML2XMI.xsd#//ClearStructuralFeatureAction;XSDElementDeclaration=154"/>
+    <nested inputs="UML2.ecore#//RemoveStructuralFeatureValueAction" outputs="UML2XMI.xsd#//RemoveStructuralFeatureValueAction;XSDComplexTypeDefinition=155"/>
+    <nested inputs="UML2.ecore#//RemoveStructuralFeatureValueAction" outputs="UML2XMI.xsd#//RemoveStructuralFeatureValueAction;XSDElementDeclaration=155"/>
+    <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=156">
+      <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction/isReplaceAll" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=156/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction/insertAt" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=156/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ExceptionHandler" outputs="UML2XMI.xsd#//ExceptionHandler;XSDElementDeclaration=156"/>
-    <nested inputs="UML2.ecore#//CreateObjectAction" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=157">
-      <nested inputs="UML2.ecore#//CreateObjectAction/classifier" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=157/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CreateObjectAction/classifier" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=157/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//CreateObjectAction/result" outputs="UML2XMI.xsd#//CreateObjectAction;XSDComplexTypeDefinition=157/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDElementDeclaration=156"/>
+    <nested inputs="UML2.ecore#//LinkAction" outputs="UML2XMI.xsd#//LinkAction;XSDComplexTypeDefinition=157">
+      <nested inputs="UML2.ecore#//LinkAction/endData" outputs="UML2XMI.xsd#//LinkAction;XSDComplexTypeDefinition=157/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//CreateObjectAction" outputs="UML2XMI.xsd#//CreateObjectAction;XSDElementDeclaration=157"/>
-    <nested inputs="UML2.ecore#//DestroyObjectAction" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDComplexTypeDefinition=158">
-      <nested inputs="UML2.ecore#//DestroyObjectAction/target" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDComplexTypeDefinition=158/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//LinkAction" outputs="UML2XMI.xsd#//LinkAction;XSDElementDeclaration=157"/>
+    <nested inputs="UML2.ecore#//LinkEndData" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158">
+      <nested inputs="UML2.ecore#//LinkEndData/value" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//LinkEndData/value" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//LinkEndData/end" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//LinkEndData/end" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//LinkEndData/qualifier" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=158/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//DestroyObjectAction" outputs="UML2XMI.xsd#//DestroyObjectAction;XSDElementDeclaration=158"/>
-    <nested inputs="UML2.ecore#//TestIdentityAction" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=159">
-      <nested inputs="UML2.ecore#//TestIdentityAction/first" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=159/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//TestIdentityAction/second" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=159/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//TestIdentityAction/result" outputs="UML2XMI.xsd#//TestIdentityAction;XSDComplexTypeDefinition=159/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//LinkEndData" outputs="UML2XMI.xsd#//LinkEndData;XSDElementDeclaration=158"/>
+    <nested inputs="UML2.ecore#//ReadLinkAction" outputs="UML2XMI.xsd#//ReadLinkAction;XSDComplexTypeDefinition=159">
+      <nested inputs="UML2.ecore#//ReadLinkAction/result" outputs="UML2XMI.xsd#//ReadLinkAction;XSDComplexTypeDefinition=159/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//TestIdentityAction" outputs="UML2XMI.xsd#//TestIdentityAction;XSDElementDeclaration=159"/>
-    <nested inputs="UML2.ecore#//ReadSelfAction" outputs="UML2XMI.xsd#//ReadSelfAction;XSDComplexTypeDefinition=160">
-      <nested inputs="UML2.ecore#//ReadSelfAction/result" outputs="UML2XMI.xsd#//ReadSelfAction;XSDComplexTypeDefinition=160/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ReadLinkAction" outputs="UML2XMI.xsd#//ReadLinkAction;XSDElementDeclaration=159"/>
+    <nested inputs="UML2.ecore#//LinkEndCreationData" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=160">
+      <nested inputs="UML2.ecore#//LinkEndCreationData/isReplaceAll" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=160/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//LinkEndCreationData/insertAt" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=160/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//LinkEndCreationData/insertAt" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=160/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ReadSelfAction" outputs="UML2XMI.xsd#//ReadSelfAction;XSDElementDeclaration=160"/>
-    <nested inputs="UML2.ecore#//StructuralFeatureAction" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=161">
-      <nested inputs="UML2.ecore#//StructuralFeatureAction/structuralFeature" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=161/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//StructuralFeatureAction/structuralFeature" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=161/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//StructuralFeatureAction/object" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDComplexTypeDefinition=161/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//LinkEndCreationData" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDElementDeclaration=160"/>
+    <nested inputs="UML2.ecore#//CreateLinkAction" outputs="UML2XMI.xsd#//CreateLinkAction;XSDComplexTypeDefinition=161"/>
+    <nested inputs="UML2.ecore#//CreateLinkAction" outputs="UML2XMI.xsd#//CreateLinkAction;XSDElementDeclaration=161"/>
+    <nested inputs="UML2.ecore#//WriteLinkAction" outputs="UML2XMI.xsd#//WriteLinkAction;XSDComplexTypeDefinition=162"/>
+    <nested inputs="UML2.ecore#//WriteLinkAction" outputs="UML2XMI.xsd#//WriteLinkAction;XSDElementDeclaration=162"/>
+    <nested inputs="UML2.ecore#//DestroyLinkAction" outputs="UML2XMI.xsd#//DestroyLinkAction;XSDComplexTypeDefinition=163"/>
+    <nested inputs="UML2.ecore#//DestroyLinkAction" outputs="UML2XMI.xsd#//DestroyLinkAction;XSDElementDeclaration=163"/>
+    <nested inputs="UML2.ecore#//ClearAssociationAction" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=164">
+      <nested inputs="UML2.ecore#//ClearAssociationAction/object" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=164/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ClearAssociationAction/association" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=164/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ClearAssociationAction/association" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=164/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//StructuralFeatureAction" outputs="UML2XMI.xsd#//StructuralFeatureAction;XSDElementDeclaration=161"/>
-    <nested inputs="UML2.ecore#//ReadStructuralFeatureAction" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDComplexTypeDefinition=162">
-      <nested inputs="UML2.ecore#//ReadStructuralFeatureAction/result" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDComplexTypeDefinition=162/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ClearAssociationAction" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDElementDeclaration=164"/>
+    <nested inputs="UML2.ecore#//VariableAction" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=165">
+      <nested inputs="UML2.ecore#//VariableAction/variable" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=165/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//VariableAction/variable" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=165/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ReadStructuralFeatureAction" outputs="UML2XMI.xsd#//ReadStructuralFeatureAction;XSDElementDeclaration=162"/>
-    <nested inputs="UML2.ecore#//WriteStructuralFeatureAction" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDComplexTypeDefinition=163">
-      <nested inputs="UML2.ecore#//WriteStructuralFeatureAction/value" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDComplexTypeDefinition=163/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//VariableAction" outputs="UML2XMI.xsd#//VariableAction;XSDElementDeclaration=165"/>
+    <nested inputs="UML2.ecore#//ReadVariableAction" outputs="UML2XMI.xsd#//ReadVariableAction;XSDComplexTypeDefinition=166">
+      <nested inputs="UML2.ecore#//ReadVariableAction/result" outputs="UML2XMI.xsd#//ReadVariableAction;XSDComplexTypeDefinition=166/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//WriteStructuralFeatureAction" outputs="UML2XMI.xsd#//WriteStructuralFeatureAction;XSDElementDeclaration=163"/>
-    <nested inputs="UML2.ecore#//ClearStructuralFeatureAction" outputs="UML2XMI.xsd#//ClearStructuralFeatureAction;XSDComplexTypeDefinition=164"/>
-    <nested inputs="UML2.ecore#//ClearStructuralFeatureAction" outputs="UML2XMI.xsd#//ClearStructuralFeatureAction;XSDElementDeclaration=164"/>
-    <nested inputs="UML2.ecore#//RemoveStructuralFeatureValueAction" outputs="UML2XMI.xsd#//RemoveStructuralFeatureValueAction;XSDComplexTypeDefinition=165"/>
-    <nested inputs="UML2.ecore#//RemoveStructuralFeatureValueAction" outputs="UML2XMI.xsd#//RemoveStructuralFeatureValueAction;XSDElementDeclaration=165"/>
-    <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=166">
-      <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction/isReplaceAll" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=166/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction/insertAt" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDComplexTypeDefinition=166/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ReadVariableAction" outputs="UML2XMI.xsd#//ReadVariableAction;XSDElementDeclaration=166"/>
+    <nested inputs="UML2.ecore#//WriteVariableAction" outputs="UML2XMI.xsd#//WriteVariableAction;XSDComplexTypeDefinition=167">
+      <nested inputs="UML2.ecore#//WriteVariableAction/value" outputs="UML2XMI.xsd#//WriteVariableAction;XSDComplexTypeDefinition=167/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//AddStructuralFeatureValueAction" outputs="UML2XMI.xsd#//AddStructuralFeatureValueAction;XSDElementDeclaration=166"/>
-    <nested inputs="UML2.ecore#//LinkAction" outputs="UML2XMI.xsd#//LinkAction;XSDComplexTypeDefinition=167">
-      <nested inputs="UML2.ecore#//LinkAction/endData" outputs="UML2XMI.xsd#//LinkAction;XSDComplexTypeDefinition=167/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//WriteVariableAction" outputs="UML2XMI.xsd#//WriteVariableAction;XSDElementDeclaration=167"/>
+    <nested inputs="UML2.ecore#//ClearVariableAction" outputs="UML2XMI.xsd#//ClearVariableAction;XSDComplexTypeDefinition=168"/>
+    <nested inputs="UML2.ecore#//ClearVariableAction" outputs="UML2XMI.xsd#//ClearVariableAction;XSDElementDeclaration=168"/>
+    <nested inputs="UML2.ecore#//AddVariableValueAction" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=169">
+      <nested inputs="UML2.ecore#//AddVariableValueAction/isReplaceAll" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=169/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//AddVariableValueAction/insertAt" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=169/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//LinkAction" outputs="UML2XMI.xsd#//LinkAction;XSDElementDeclaration=167"/>
-    <nested inputs="UML2.ecore#//LinkEndData" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168">
-      <nested inputs="UML2.ecore#//LinkEndData/value" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//LinkEndData/value" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//LinkEndData/end" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//LinkEndData/end" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//LinkEndData/qualifier" outputs="UML2XMI.xsd#//LinkEndData;XSDComplexTypeDefinition=168/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//AddVariableValueAction" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDElementDeclaration=169"/>
+    <nested inputs="UML2.ecore#//RemoveVariableValueAction" outputs="UML2XMI.xsd#//RemoveVariableValueAction;XSDComplexTypeDefinition=170"/>
+    <nested inputs="UML2.ecore#//RemoveVariableValueAction" outputs="UML2XMI.xsd#//RemoveVariableValueAction;XSDElementDeclaration=170"/>
+    <nested inputs="UML2.ecore#//ApplyFunctionAction" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=171">
+      <nested inputs="UML2.ecore#//ApplyFunctionAction/function" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=171/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ApplyFunctionAction/function" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=171/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ApplyFunctionAction/argument" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=171/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ApplyFunctionAction/result" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=171/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//LinkEndData" outputs="UML2XMI.xsd#//LinkEndData;XSDElementDeclaration=168"/>
-    <nested inputs="UML2.ecore#//ReadLinkAction" outputs="UML2XMI.xsd#//ReadLinkAction;XSDComplexTypeDefinition=169">
-      <nested inputs="UML2.ecore#//ReadLinkAction/result" outputs="UML2XMI.xsd#//ReadLinkAction;XSDComplexTypeDefinition=169/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ApplyFunctionAction" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDElementDeclaration=171"/>
+    <nested inputs="UML2.ecore#//PrimitiveFunction" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=172">
+      <nested inputs="UML2.ecore#//PrimitiveFunction/body" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=172/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//PrimitiveFunction/language" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=172/XSDAttributeUse=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ReadLinkAction" outputs="UML2XMI.xsd#//ReadLinkAction;XSDElementDeclaration=169"/>
-    <nested inputs="UML2.ecore#//LinkEndCreationData" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=170">
-      <nested inputs="UML2.ecore#//LinkEndCreationData/isReplaceAll" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=170/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//LinkEndCreationData/insertAt" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=170/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//LinkEndCreationData/insertAt" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDComplexTypeDefinition=170/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//PrimitiveFunction" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDElementDeclaration=172"/>
+    <nested inputs="UML2.ecore#//CallAction" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=173">
+      <nested inputs="UML2.ecore#//CallAction/isSynchronous" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=173/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CallAction/result" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=173/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//LinkEndCreationData" outputs="UML2XMI.xsd#//LinkEndCreationData;XSDElementDeclaration=170"/>
-    <nested inputs="UML2.ecore#//CreateLinkAction" outputs="UML2XMI.xsd#//CreateLinkAction;XSDComplexTypeDefinition=171"/>
-    <nested inputs="UML2.ecore#//CreateLinkAction" outputs="UML2XMI.xsd#//CreateLinkAction;XSDElementDeclaration=171"/>
-    <nested inputs="UML2.ecore#//WriteLinkAction" outputs="UML2XMI.xsd#//WriteLinkAction;XSDComplexTypeDefinition=172"/>
-    <nested inputs="UML2.ecore#//WriteLinkAction" outputs="UML2XMI.xsd#//WriteLinkAction;XSDElementDeclaration=172"/>
-    <nested inputs="UML2.ecore#//DestroyLinkAction" outputs="UML2XMI.xsd#//DestroyLinkAction;XSDComplexTypeDefinition=173"/>
-    <nested inputs="UML2.ecore#//DestroyLinkAction" outputs="UML2XMI.xsd#//DestroyLinkAction;XSDElementDeclaration=173"/>
-    <nested inputs="UML2.ecore#//ClearAssociationAction" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=174">
-      <nested inputs="UML2.ecore#//ClearAssociationAction/object" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=174/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ClearAssociationAction/association" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=174/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ClearAssociationAction/association" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDComplexTypeDefinition=174/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//CallAction" outputs="UML2XMI.xsd#//CallAction;XSDElementDeclaration=173"/>
+    <nested inputs="UML2.ecore#//InvocationAction" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=174">
+      <nested inputs="UML2.ecore#//InvocationAction/argument" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=174/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InvocationAction/onPort" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=174/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InvocationAction/onPort" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=174/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//ClearAssociationAction" outputs="UML2XMI.xsd#//ClearAssociationAction;XSDElementDeclaration=174"/>
-    <nested inputs="UML2.ecore#//VariableAction" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=175">
-      <nested inputs="UML2.ecore#//VariableAction/variable" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=175/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//VariableAction/variable" outputs="UML2XMI.xsd#//VariableAction;XSDComplexTypeDefinition=175/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InvocationAction" outputs="UML2XMI.xsd#//InvocationAction;XSDElementDeclaration=174"/>
+    <nested inputs="UML2.ecore#//SendSignalAction" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=175">
+      <nested inputs="UML2.ecore#//SendSignalAction/target" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=175/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//SendSignalAction/signal" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=175/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//SendSignalAction/signal" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=175/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//VariableAction" outputs="UML2XMI.xsd#//VariableAction;XSDElementDeclaration=175"/>
-    <nested inputs="UML2.ecore#//ReadVariableAction" outputs="UML2XMI.xsd#//ReadVariableAction;XSDComplexTypeDefinition=176">
-      <nested inputs="UML2.ecore#//ReadVariableAction/result" outputs="UML2XMI.xsd#//ReadVariableAction;XSDComplexTypeDefinition=176/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//SendSignalAction" outputs="UML2XMI.xsd#//SendSignalAction;XSDElementDeclaration=175"/>
+    <nested inputs="UML2.ecore#//BroadcastSignalAction" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=176">
+      <nested inputs="UML2.ecore#//BroadcastSignalAction/signal" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=176/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//BroadcastSignalAction/signal" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=176/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ReadVariableAction" outputs="UML2XMI.xsd#//ReadVariableAction;XSDElementDeclaration=176"/>
-    <nested inputs="UML2.ecore#//WriteVariableAction" outputs="UML2XMI.xsd#//WriteVariableAction;XSDComplexTypeDefinition=177">
-      <nested inputs="UML2.ecore#//WriteVariableAction/value" outputs="UML2XMI.xsd#//WriteVariableAction;XSDComplexTypeDefinition=177/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//BroadcastSignalAction" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDElementDeclaration=176"/>
+    <nested inputs="UML2.ecore#//SendObjectAction" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=177">
+      <nested inputs="UML2.ecore#//SendObjectAction/target" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=177/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//SendObjectAction/request" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=177/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//WriteVariableAction" outputs="UML2XMI.xsd#//WriteVariableAction;XSDElementDeclaration=177"/>
-    <nested inputs="UML2.ecore#//ClearVariableAction" outputs="UML2XMI.xsd#//ClearVariableAction;XSDComplexTypeDefinition=178"/>
-    <nested inputs="UML2.ecore#//ClearVariableAction" outputs="UML2XMI.xsd#//ClearVariableAction;XSDElementDeclaration=178"/>
-    <nested inputs="UML2.ecore#//AddVariableValueAction" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=179">
-      <nested inputs="UML2.ecore#//AddVariableValueAction/isReplaceAll" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=179/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//AddVariableValueAction/insertAt" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDComplexTypeDefinition=179/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//SendObjectAction" outputs="UML2XMI.xsd#//SendObjectAction;XSDElementDeclaration=177"/>
+    <nested inputs="UML2.ecore#//CallOperationAction" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=178">
+      <nested inputs="UML2.ecore#//CallOperationAction/operation" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=178/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CallOperationAction/operation" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=178/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//CallOperationAction/target" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=178/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//AddVariableValueAction" outputs="UML2XMI.xsd#//AddVariableValueAction;XSDElementDeclaration=179"/>
-    <nested inputs="UML2.ecore#//RemoveVariableValueAction" outputs="UML2XMI.xsd#//RemoveVariableValueAction;XSDComplexTypeDefinition=180"/>
-    <nested inputs="UML2.ecore#//RemoveVariableValueAction" outputs="UML2XMI.xsd#//RemoveVariableValueAction;XSDElementDeclaration=180"/>
-    <nested inputs="UML2.ecore#//ApplyFunctionAction" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=181">
-      <nested inputs="UML2.ecore#//ApplyFunctionAction/function" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=181/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ApplyFunctionAction/function" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=181/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ApplyFunctionAction/argument" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=181/XSDParticle/XSDModelGroup/XSDParticle=1"/>
-      <nested inputs="UML2.ecore#//ApplyFunctionAction/result" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDComplexTypeDefinition=181/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+    <nested inputs="UML2.ecore#//CallOperationAction" outputs="UML2XMI.xsd#//CallOperationAction;XSDElementDeclaration=178"/>
+    <nested inputs="UML2.ecore#//CallBehaviorAction" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=179">
+      <nested inputs="UML2.ecore#//CallBehaviorAction/behavior" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=179/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CallBehaviorAction/behavior" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=179/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ApplyFunctionAction" outputs="UML2XMI.xsd#//ApplyFunctionAction;XSDElementDeclaration=181"/>
-    <nested inputs="UML2.ecore#//PrimitiveFunction" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=182">
-      <nested inputs="UML2.ecore#//PrimitiveFunction/body" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=182/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//PrimitiveFunction/language" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDComplexTypeDefinition=182/XSDAttributeUse=1"/>
+    <nested inputs="UML2.ecore#//CallBehaviorAction" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDElementDeclaration=179"/>
+    <nested inputs="UML2.ecore#//InteractionOccurrence" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=180">
+      <nested inputs="UML2.ecore#//InteractionOccurrence/refersTo" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=180/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InteractionOccurrence/refersTo" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=180/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InteractionOccurrence/actualGate" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=180/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//InteractionOccurrence/argument" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDComplexTypeDefinition=180/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//PrimitiveFunction" outputs="UML2XMI.xsd#//PrimitiveFunction;XSDElementDeclaration=182"/>
-    <nested inputs="UML2.ecore#//CallAction" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=183">
-      <nested inputs="UML2.ecore#//CallAction/isSynchronous" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=183/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CallAction/result" outputs="UML2XMI.xsd#//CallAction;XSDComplexTypeDefinition=183/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InteractionOccurrence" outputs="UML2XMI.xsd#//InteractionOccurrence;XSDElementDeclaration=180"/>
+    <nested inputs="UML2.ecore#//Gate" outputs="UML2XMI.xsd#//Gate;XSDComplexTypeDefinition=181"/>
+    <nested inputs="UML2.ecore#//Gate" outputs="UML2XMI.xsd#//Gate;XSDElementDeclaration=181"/>
+    <nested inputs="UML2.ecore#//PartDecomposition" outputs="UML2XMI.xsd#//PartDecomposition;XSDComplexTypeDefinition=182"/>
+    <nested inputs="UML2.ecore#//PartDecomposition" outputs="UML2XMI.xsd#//PartDecomposition;XSDElementDeclaration=182"/>
+    <nested inputs="UML2.ecore#//InteractionOperand" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183">
+      <nested inputs="UML2.ecore#//InteractionOperand/guard" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183/XSDParticle/XSDModelGroup/XSDParticle=2"/>
+      <nested inputs="UML2.ecore#//InteractionOperand/fragment" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183/XSDParticle/XSDModelGroup/XSDParticle=3"/>
     </nested>
-    <nested inputs="UML2.ecore#//CallAction" outputs="UML2XMI.xsd#//CallAction;XSDElementDeclaration=183"/>
-    <nested inputs="UML2.ecore#//InvocationAction" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=184">
-      <nested inputs="UML2.ecore#//InvocationAction/argument" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=184/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InvocationAction/onPort" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=184/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InvocationAction/onPort" outputs="UML2XMI.xsd#//InvocationAction;XSDComplexTypeDefinition=184/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183/XSDAttributeUse"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/covered" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InteractionFragment/generalOrdering" outputs="UML2XMI.xsd#//InteractionOperand;XSDComplexTypeDefinition=183/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//InteractionOperand" outputs="UML2XMI.xsd#//InteractionOperand;XSDElementDeclaration=183"/>
+    <nested inputs="UML2.ecore#//InteractionConstraint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=184">
+      <nested inputs="UML2.ecore#//InteractionConstraint/minint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=184/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InteractionConstraint/maxint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDComplexTypeDefinition=184/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//InvocationAction" outputs="UML2XMI.xsd#//InvocationAction;XSDElementDeclaration=184"/>
-    <nested inputs="UML2.ecore#//SendSignalAction" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=185">
-      <nested inputs="UML2.ecore#//SendSignalAction/target" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=185/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//SendSignalAction/signal" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=185/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//SendSignalAction/signal" outputs="UML2XMI.xsd#//SendSignalAction;XSDComplexTypeDefinition=185/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//InteractionConstraint" outputs="UML2XMI.xsd#//InteractionConstraint;XSDElementDeclaration=184"/>
+    <nested inputs="UML2.ecore#//CombinedFragment" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=185">
+      <nested inputs="UML2.ecore#//CombinedFragment/interactionOperator" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=185/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//CombinedFragment/operand" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=185/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//CombinedFragment/cfragmentGate" outputs="UML2XMI.xsd#//CombinedFragment;XSDComplexTypeDefinition=185/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//SendSignalAction" outputs="UML2XMI.xsd#//SendSignalAction;XSDElementDeclaration=185"/>
-    <nested inputs="UML2.ecore#//BroadcastSignalAction" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=186">
-      <nested inputs="UML2.ecore#//BroadcastSignalAction/signal" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=186/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//BroadcastSignalAction/signal" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDComplexTypeDefinition=186/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//CombinedFragment" outputs="UML2XMI.xsd#//CombinedFragment;XSDElementDeclaration=185"/>
+    <nested inputs="UML2.ecore#//Continuation" outputs="UML2XMI.xsd#//Continuation;XSDComplexTypeDefinition=186">
+      <nested inputs="UML2.ecore#//Continuation/setting" outputs="UML2XMI.xsd#//Continuation;XSDComplexTypeDefinition=186/XSDAttributeUse"/>
     </nested>
-    <nested inputs="UML2.ecore#//BroadcastSignalAction" outputs="UML2XMI.xsd#//BroadcastSignalAction;XSDElementDeclaration=186"/>
-    <nested inputs="UML2.ecore#//SendObjectAction" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=187">
-      <nested inputs="UML2.ecore#//SendObjectAction/target" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=187/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//SendObjectAction/request" outputs="UML2XMI.xsd#//SendObjectAction;XSDComplexTypeDefinition=187/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Continuation" outputs="UML2XMI.xsd#//Continuation;XSDElementDeclaration=186"/>
+    <nested inputs="UML2.ecore#//ExpansionNode" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=187">
+      <nested inputs="UML2.ecore#//ExpansionNode/regionAsOutput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=187/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ExpansionNode/regionAsOutput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=187/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ExpansionNode/regionAsInput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=187/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ExpansionNode/regionAsInput" outputs="UML2XMI.xsd#//ExpansionNode;XSDComplexTypeDefinition=187/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//SendObjectAction" outputs="UML2XMI.xsd#//SendObjectAction;XSDElementDeclaration=187"/>
-    <nested inputs="UML2.ecore#//CallOperationAction" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=188">
-      <nested inputs="UML2.ecore#//CallOperationAction/operation" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=188/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CallOperationAction/operation" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=188/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//CallOperationAction/target" outputs="UML2XMI.xsd#//CallOperationAction;XSDComplexTypeDefinition=188/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ExpansionNode" outputs="UML2XMI.xsd#//ExpansionNode;XSDElementDeclaration=187"/>
+    <nested inputs="UML2.ecore#//ExpansionRegion" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188">
+      <nested inputs="UML2.ecore#//ExpansionRegion/mode" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ExpansionRegion/outputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ExpansionRegion/outputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ExpansionRegion/inputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ExpansionRegion/inputElement" outputs="UML2XMI.xsd#//ExpansionRegion;XSDComplexTypeDefinition=188/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//CallOperationAction" outputs="UML2XMI.xsd#//CallOperationAction;XSDElementDeclaration=188"/>
-    <nested inputs="UML2.ecore#//CallBehaviorAction" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=189">
-      <nested inputs="UML2.ecore#//CallBehaviorAction/behavior" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=189/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//CallBehaviorAction/behavior" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDComplexTypeDefinition=189/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ExpansionRegion" outputs="UML2XMI.xsd#//ExpansionRegion;XSDElementDeclaration=188"/>
+    <nested inputs="UML2.ecore#//ExceptionHandler" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189">
+      <nested inputs="UML2.ecore#//ExceptionHandler/handlerBody" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ExceptionHandler/handlerBody" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionInput" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionInput" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionType" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDAttributeUse=2"/>
+      <nested inputs="UML2.ecore#//ExceptionHandler/exceptionType" outputs="UML2XMI.xsd#//ExceptionHandler;XSDComplexTypeDefinition=189/XSDParticle/XSDModelGroup/XSDParticle=2"/>
     </nested>
-    <nested inputs="UML2.ecore#//CallBehaviorAction" outputs="UML2XMI.xsd#//CallBehaviorAction;XSDElementDeclaration=189"/>
-    <nested inputs="UML2.ecore#//Component" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=190">
-      <nested inputs="UML2.ecore#//Component/isIndirectlyInstantiated" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=190/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Component/realization" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=190/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Component/ownedMember" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=190/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ExceptionHandler" outputs="UML2XMI.xsd#//ExceptionHandler;XSDElementDeclaration=189"/>
+    <nested inputs="UML2.ecore#//ProtocolConformance" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=190">
+      <nested inputs="UML2.ecore#//ProtocolConformance/generalMachine" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=190/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ProtocolConformance/generalMachine" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=190/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Component" outputs="UML2XMI.xsd#//Component;XSDElementDeclaration=190"/>
-    <nested inputs="UML2.ecore#//Deployment" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=191">
-      <nested inputs="UML2.ecore#//Deployment/deployedArtifact" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=191/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Deployment/deployedArtifact" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=191/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Deployment/configuration" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=191/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ProtocolConformance" outputs="UML2XMI.xsd#//ProtocolConformance;XSDElementDeclaration=190"/>
+    <nested inputs="UML2.ecore#//ProtocolStateMachine" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDComplexTypeDefinition=191">
+      <nested inputs="UML2.ecore#//ProtocolStateMachine/conformance" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDComplexTypeDefinition=191/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Deployment" outputs="UML2XMI.xsd#//Deployment;XSDElementDeclaration=191"/>
-    <nested inputs="UML2.ecore#//DeployedArtifact" outputs="UML2XMI.xsd#//DeployedArtifact;XSDComplexTypeDefinition=192"/>
-    <nested inputs="UML2.ecore#//DeployedArtifact" outputs="UML2XMI.xsd#//DeployedArtifact;XSDElementDeclaration=192"/>
-    <nested inputs="UML2.ecore#//DeploymentTarget" outputs="UML2XMI.xsd#//DeploymentTarget;XSDComplexTypeDefinition=193">
-      <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//DeploymentTarget;XSDComplexTypeDefinition=193/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//ProtocolStateMachine" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDElementDeclaration=191"/>
+    <nested inputs="UML2.ecore#//ProtocolTransition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=192">
+      <nested inputs="UML2.ecore#//ProtocolTransition/postCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=192/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ProtocolTransition/preCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=192/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ProtocolTransition/preCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=192/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//DeploymentTarget" outputs="UML2XMI.xsd#//DeploymentTarget;XSDElementDeclaration=193"/>
-    <nested inputs="UML2.ecore#//Node" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=194">
-      <nested inputs="UML2.ecore#//Node/nestedNode" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=194/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//ProtocolTransition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDElementDeclaration=192"/>
+    <nested inputs="UML2.ecore#//Component" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=193">
+      <nested inputs="UML2.ecore#//Component/isIndirectlyInstantiated" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=193/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Component/realization" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=193/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Component/ownedMember" outputs="UML2XMI.xsd#//Component;XSDComplexTypeDefinition=193/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=194/XSDParticle/XSDModelGroup/XSDParticle"/>
-    <nested inputs="UML2.ecore#//Node" outputs="UML2XMI.xsd#//Node;XSDElementDeclaration=194"/>
-    <nested inputs="UML2.ecore#//Device" outputs="UML2XMI.xsd#//Device;XSDComplexTypeDefinition=195"/>
-    <nested inputs="UML2.ecore#//Device" outputs="UML2XMI.xsd#//Device;XSDElementDeclaration=195"/>
-    <nested inputs="UML2.ecore#//ExecutionEnvironment" outputs="UML2XMI.xsd#//ExecutionEnvironment;XSDComplexTypeDefinition=196"/>
-    <nested inputs="UML2.ecore#//ExecutionEnvironment" outputs="UML2XMI.xsd#//ExecutionEnvironment;XSDElementDeclaration=196"/>
-    <nested inputs="UML2.ecore#//CommunicationPath" outputs="UML2XMI.xsd#//CommunicationPath;XSDComplexTypeDefinition=197"/>
-    <nested inputs="UML2.ecore#//CommunicationPath" outputs="UML2XMI.xsd#//CommunicationPath;XSDElementDeclaration=197"/>
-    <nested inputs="UML2.ecore#//ProtocolConformance" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=198">
-      <nested inputs="UML2.ecore#//ProtocolConformance/generalMachine" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=198/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ProtocolConformance/generalMachine" outputs="UML2XMI.xsd#//ProtocolConformance;XSDComplexTypeDefinition=198/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Component" outputs="UML2XMI.xsd#//Component;XSDElementDeclaration=193"/>
+    <nested inputs="UML2.ecore#//TimeExpression" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=194">
+      <nested inputs="UML2.ecore#//TimeExpression/firstTime" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=194/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//TimeExpression/event" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=194/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//TimeExpression/event" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=194/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ProtocolConformance" outputs="UML2XMI.xsd#//ProtocolConformance;XSDElementDeclaration=198"/>
-    <nested inputs="UML2.ecore#//ProtocolStateMachine" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDComplexTypeDefinition=199">
-      <nested inputs="UML2.ecore#//ProtocolStateMachine/conformance" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDComplexTypeDefinition=199/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//TimeExpression" outputs="UML2XMI.xsd#//TimeExpression;XSDElementDeclaration=194"/>
+    <nested inputs="UML2.ecore#//Duration" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=195">
+      <nested inputs="UML2.ecore#//Duration/firstTime" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=195/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Duration/event" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=195/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Duration/event" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=195/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ProtocolStateMachine" outputs="UML2XMI.xsd#//ProtocolStateMachine;XSDElementDeclaration=199"/>
-    <nested inputs="UML2.ecore#//ProtocolTransition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=200">
-      <nested inputs="UML2.ecore#//ProtocolTransition/postCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=200/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ProtocolTransition/preCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=200/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ProtocolTransition/preCondition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDComplexTypeDefinition=200/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Duration" outputs="UML2XMI.xsd#//Duration;XSDElementDeclaration=195"/>
+    <nested inputs="UML2.ecore#//TimeObservationAction" outputs="UML2XMI.xsd#//TimeObservationAction;XSDComplexTypeDefinition=196">
+      <nested inputs="UML2.ecore#//TimeObservationAction/now" outputs="UML2XMI.xsd#//TimeObservationAction;XSDComplexTypeDefinition=196/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ProtocolTransition" outputs="UML2XMI.xsd#//ProtocolTransition;XSDElementDeclaration=200"/>
-    <nested inputs="UML2.ecore#//DataStoreNode" outputs="UML2XMI.xsd#//DataStoreNode;XSDComplexTypeDefinition=201"/>
-    <nested inputs="UML2.ecore#//DataStoreNode" outputs="UML2XMI.xsd#//DataStoreNode;XSDElementDeclaration=201"/>
-    <nested inputs="UML2.ecore#//InterruptibleActivityRegion" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=202">
-      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/interruptingEdge" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=202/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/interruptingEdge" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=202/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/containedNode" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=202/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/containedNode" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=202/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//TimeObservationAction" outputs="UML2XMI.xsd#//TimeObservationAction;XSDElementDeclaration=196"/>
+    <nested inputs="UML2.ecore#//DurationInterval" outputs="UML2XMI.xsd#//DurationInterval;XSDComplexTypeDefinition=197"/>
+    <nested inputs="UML2.ecore#//DurationInterval" outputs="UML2XMI.xsd#//DurationInterval;XSDElementDeclaration=197"/>
+    <nested inputs="UML2.ecore#//Interval" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=198">
+      <nested inputs="UML2.ecore#//Interval/min" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=198/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Interval/min" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=198/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Interval/max" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=198/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//Interval/max" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=198/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//InterruptibleActivityRegion" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDElementDeclaration=202"/>
-    <nested inputs="UML2.ecore#//ParameterSet" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=203">
-      <nested inputs="UML2.ecore#//ParameterSet/parameter" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=203/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//ParameterSet/parameter" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=203/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//ParameterSet/condition" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=203/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//Interval" outputs="UML2XMI.xsd#//Interval;XSDElementDeclaration=198"/>
+    <nested inputs="UML2.ecore#//TimeConstraint" outputs="UML2XMI.xsd#//TimeConstraint;XSDComplexTypeDefinition=199"/>
+    <nested inputs="UML2.ecore#//TimeConstraint" outputs="UML2XMI.xsd#//TimeConstraint;XSDElementDeclaration=199"/>
+    <nested inputs="UML2.ecore#//IntervalConstraint" outputs="UML2XMI.xsd#//IntervalConstraint;XSDComplexTypeDefinition=200"/>
+    <nested inputs="UML2.ecore#//IntervalConstraint" outputs="UML2XMI.xsd#//IntervalConstraint;XSDElementDeclaration=200"/>
+    <nested inputs="UML2.ecore#//TimeInterval" outputs="UML2XMI.xsd#//TimeInterval;XSDComplexTypeDefinition=201"/>
+    <nested inputs="UML2.ecore#//TimeInterval" outputs="UML2XMI.xsd#//TimeInterval;XSDElementDeclaration=201"/>
+    <nested inputs="UML2.ecore#//DurationObservationAction" outputs="UML2XMI.xsd#//DurationObservationAction;XSDComplexTypeDefinition=202">
+      <nested inputs="UML2.ecore#//DurationObservationAction/duration" outputs="UML2XMI.xsd#//DurationObservationAction;XSDComplexTypeDefinition=202/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//ParameterSet" outputs="UML2XMI.xsd#//ParameterSet;XSDElementDeclaration=203"/>
+    <nested inputs="UML2.ecore#//DurationObservationAction" outputs="UML2XMI.xsd#//DurationObservationAction;XSDElementDeclaration=202"/>
+    <nested inputs="UML2.ecore#//DurationConstraint" outputs="UML2XMI.xsd#//DurationConstraint;XSDComplexTypeDefinition=203"/>
+    <nested inputs="UML2.ecore#//DurationConstraint" outputs="UML2XMI.xsd#//DurationConstraint;XSDElementDeclaration=203"/>
     <nested inputs="UML2.ecore#//ReadExtentAction" outputs="UML2XMI.xsd#//ReadExtentAction;XSDComplexTypeDefinition=204">
       <nested inputs="UML2.ecore#//ReadExtentAction/result" outputs="UML2XMI.xsd#//ReadExtentAction;XSDComplexTypeDefinition=204/XSDParticle/XSDModelGroup/XSDParticle"/>
       <nested inputs="UML2.ecore#//ReadExtentAction/classifier" outputs="UML2XMI.xsd#//ReadExtentAction;XSDComplexTypeDefinition=204/XSDAttributeUse"/>
@@ -1357,43 +1356,44 @@
       <nested inputs="UML2.ecore#//RaiseExceptionAction/exception" outputs="UML2XMI.xsd#//RaiseExceptionAction;XSDComplexTypeDefinition=215/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
     <nested inputs="UML2.ecore#//RaiseExceptionAction" outputs="UML2XMI.xsd#//RaiseExceptionAction;XSDElementDeclaration=215"/>
-    <nested inputs="UML2.ecore#//TimeExpression" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=216">
-      <nested inputs="UML2.ecore#//TimeExpression/firstTime" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=216/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//TimeExpression/event" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=216/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//TimeExpression/event" outputs="UML2XMI.xsd#//TimeExpression;XSDComplexTypeDefinition=216/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Deployment" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=216">
+      <nested inputs="UML2.ecore#//Deployment/deployedArtifact" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=216/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//Deployment/deployedArtifact" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=216/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//Deployment/configuration" outputs="UML2XMI.xsd#//Deployment;XSDComplexTypeDefinition=216/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//TimeExpression" outputs="UML2XMI.xsd#//TimeExpression;XSDElementDeclaration=216"/>
-    <nested inputs="UML2.ecore#//Duration" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=217">
-      <nested inputs="UML2.ecore#//Duration/firstTime" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=217/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Duration/event" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=217/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Duration/event" outputs="UML2XMI.xsd#//Duration;XSDComplexTypeDefinition=217/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Deployment" outputs="UML2XMI.xsd#//Deployment;XSDElementDeclaration=216"/>
+    <nested inputs="UML2.ecore#//DeployedArtifact" outputs="UML2XMI.xsd#//DeployedArtifact;XSDComplexTypeDefinition=217"/>
+    <nested inputs="UML2.ecore#//DeployedArtifact" outputs="UML2XMI.xsd#//DeployedArtifact;XSDElementDeclaration=217"/>
+    <nested inputs="UML2.ecore#//DeploymentTarget" outputs="UML2XMI.xsd#//DeploymentTarget;XSDComplexTypeDefinition=218">
+      <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//DeploymentTarget;XSDComplexTypeDefinition=218/XSDParticle/XSDModelGroup/XSDParticle"/>
     </nested>
-    <nested inputs="UML2.ecore#//Duration" outputs="UML2XMI.xsd#//Duration;XSDElementDeclaration=217"/>
-    <nested inputs="UML2.ecore#//TimeObservationAction" outputs="UML2XMI.xsd#//TimeObservationAction;XSDComplexTypeDefinition=218">
-      <nested inputs="UML2.ecore#//TimeObservationAction/now" outputs="UML2XMI.xsd#//TimeObservationAction;XSDComplexTypeDefinition=218/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//DeploymentTarget" outputs="UML2XMI.xsd#//DeploymentTarget;XSDElementDeclaration=218"/>
+    <nested inputs="UML2.ecore#//Node" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=219">
+      <nested inputs="UML2.ecore#//Node/nestedNode" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=219/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//TimeObservationAction" outputs="UML2XMI.xsd#//TimeObservationAction;XSDElementDeclaration=218"/>
-    <nested inputs="UML2.ecore#//DurationInterval" outputs="UML2XMI.xsd#//DurationInterval;XSDComplexTypeDefinition=219"/>
-    <nested inputs="UML2.ecore#//DurationInterval" outputs="UML2XMI.xsd#//DurationInterval;XSDElementDeclaration=219"/>
-    <nested inputs="UML2.ecore#//Interval" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=220">
-      <nested inputs="UML2.ecore#//Interval/min" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=220/XSDAttributeUse"/>
-      <nested inputs="UML2.ecore#//Interval/min" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=220/XSDParticle/XSDModelGroup/XSDParticle"/>
-      <nested inputs="UML2.ecore#//Interval/max" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=220/XSDAttributeUse=1"/>
-      <nested inputs="UML2.ecore#//Interval/max" outputs="UML2XMI.xsd#//Interval;XSDComplexTypeDefinition=220/XSDParticle/XSDModelGroup/XSDParticle=1"/>
+    <nested inputs="UML2.ecore#//DeploymentTarget/deployment" outputs="UML2XMI.xsd#//Node;XSDComplexTypeDefinition=219/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//Node" outputs="UML2XMI.xsd#//Node;XSDElementDeclaration=219"/>
+    <nested inputs="UML2.ecore#//Device" outputs="UML2XMI.xsd#//Device;XSDComplexTypeDefinition=220"/>
+    <nested inputs="UML2.ecore#//Device" outputs="UML2XMI.xsd#//Device;XSDElementDeclaration=220"/>
+    <nested inputs="UML2.ecore#//ExecutionEnvironment" outputs="UML2XMI.xsd#//ExecutionEnvironment;XSDComplexTypeDefinition=221"/>
+    <nested inputs="UML2.ecore#//ExecutionEnvironment" outputs="UML2XMI.xsd#//ExecutionEnvironment;XSDElementDeclaration=221"/>
+    <nested inputs="UML2.ecore#//CommunicationPath" outputs="UML2XMI.xsd#//CommunicationPath;XSDComplexTypeDefinition=222"/>
+    <nested inputs="UML2.ecore#//CommunicationPath" outputs="UML2XMI.xsd#//CommunicationPath;XSDElementDeclaration=222"/>
+    <nested inputs="UML2.ecore#//DataStoreNode" outputs="UML2XMI.xsd#//DataStoreNode;XSDComplexTypeDefinition=223"/>
+    <nested inputs="UML2.ecore#//DataStoreNode" outputs="UML2XMI.xsd#//DataStoreNode;XSDElementDeclaration=223"/>
+    <nested inputs="UML2.ecore#//InterruptibleActivityRegion" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=224">
+      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/interruptingEdge" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=224/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/interruptingEdge" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=224/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/containedNode" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=224/XSDAttributeUse=1"/>
+      <nested inputs="UML2.ecore#//InterruptibleActivityRegion/containedNode" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDComplexTypeDefinition=224/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//Interval" outputs="UML2XMI.xsd#//Interval;XSDElementDeclaration=220"/>
-    <nested inputs="UML2.ecore#//TimeConstraint" outputs="UML2XMI.xsd#//TimeConstraint;XSDComplexTypeDefinition=221"/>
-    <nested inputs="UML2.ecore#//TimeConstraint" outputs="UML2XMI.xsd#//TimeConstraint;XSDElementDeclaration=221"/>
-    <nested inputs="UML2.ecore#//IntervalConstraint" outputs="UML2XMI.xsd#//IntervalConstraint;XSDComplexTypeDefinition=222"/>
-    <nested inputs="UML2.ecore#//IntervalConstraint" outputs="UML2XMI.xsd#//IntervalConstraint;XSDElementDeclaration=222"/>
-    <nested inputs="UML2.ecore#//TimeInterval" outputs="UML2XMI.xsd#//TimeInterval;XSDComplexTypeDefinition=223"/>
-    <nested inputs="UML2.ecore#//TimeInterval" outputs="UML2XMI.xsd#//TimeInterval;XSDElementDeclaration=223"/>
-    <nested inputs="UML2.ecore#//DurationObservationAction" outputs="UML2XMI.xsd#//DurationObservationAction;XSDComplexTypeDefinition=224">
-      <nested inputs="UML2.ecore#//DurationObservationAction/duration" outputs="UML2XMI.xsd#//DurationObservationAction;XSDComplexTypeDefinition=224/XSDParticle/XSDModelGroup/XSDParticle"/>
+    <nested inputs="UML2.ecore#//InterruptibleActivityRegion" outputs="UML2XMI.xsd#//InterruptibleActivityRegion;XSDElementDeclaration=224"/>
+    <nested inputs="UML2.ecore#//ParameterSet" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=225">
+      <nested inputs="UML2.ecore#//ParameterSet/parameter" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=225/XSDAttributeUse"/>
+      <nested inputs="UML2.ecore#//ParameterSet/parameter" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=225/XSDParticle/XSDModelGroup/XSDParticle"/>
+      <nested inputs="UML2.ecore#//ParameterSet/condition" outputs="UML2XMI.xsd#//ParameterSet;XSDComplexTypeDefinition=225/XSDParticle/XSDModelGroup/XSDParticle=1"/>
     </nested>
-    <nested inputs="UML2.ecore#//DurationObservationAction" outputs="UML2XMI.xsd#//DurationObservationAction;XSDElementDeclaration=224"/>
-    <nested inputs="UML2.ecore#//DurationConstraint" outputs="UML2XMI.xsd#//DurationConstraint;XSDComplexTypeDefinition=225"/>
-    <nested inputs="UML2.ecore#//DurationConstraint" outputs="UML2XMI.xsd#//DurationConstraint;XSDElementDeclaration=225"/>
+    <nested inputs="UML2.ecore#//ParameterSet" outputs="UML2XMI.xsd#//ParameterSet;XSDElementDeclaration=225"/>
     <nested inputs="UML2.ecore#//DeploymentSpecification" outputs="UML2XMI.xsd#//DeploymentSpecification;XSDComplexTypeDefinition=226">
       <nested inputs="UML2.ecore#//DeploymentSpecification/deploymentLocation" outputs="UML2XMI.xsd#//DeploymentSpecification;XSDComplexTypeDefinition=226/XSDAttributeUse"/>
       <nested inputs="UML2.ecore#//DeploymentSpecification/executionLocation" outputs="UML2XMI.xsd#//DeploymentSpecification;XSDComplexTypeDefinition=226/XSDAttributeUse=1"/>
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Classifier.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Classifier.java
index 4e6d0ec..58db4c5 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Classifier.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/Classifier.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: Classifier.java,v 1.4 2004/04/27 16:38:55 khussey Exp $
+ * $Id: Classifier.java,v 1.5 2004/04/30 17:21:46 khussey Exp $
  */
 package org.eclipse.uml2;
 
@@ -35,8 +35,8 @@
  *   <li>{@link org.eclipse.uml2.Classifier#getGeneralizations <em>Generalization</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getAttributes <em>Attribute</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getRedefinedClassifiers <em>Redefined Classifier</em>}</li>
- *   <li>{@link org.eclipse.uml2.Classifier#getPowertypeExtents <em>Powertype Extent</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getSubstitutions <em>Substitution</em>}</li>
+ *   <li>{@link org.eclipse.uml2.Classifier#getPowertypeExtents <em>Powertype Extent</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getOwnedUseCases <em>Owned Use Case</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getRepresentation <em>Representation</em>}</li>
  *   <li>{@link org.eclipse.uml2.Classifier#getOccurrences <em>Occurrence</em>}</li>
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/TemplateParameterSubstitution.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/TemplateParameterSubstitution.java
index 53b6476..ac123c0 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/TemplateParameterSubstitution.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/TemplateParameterSubstitution.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterSubstitution.java,v 1.2 2004/04/10 04:09:49 khussey Exp $
+ * $Id: TemplateParameterSubstitution.java,v 1.3 2004/04/30 17:21:46 khussey Exp $
  */
 package org.eclipse.uml2;
 
@@ -27,7 +27,7 @@
  *   <li>{@link org.eclipse.uml2.TemplateParameterSubstitution#getFormal <em>Formal</em>}</li>
  *   <li>{@link org.eclipse.uml2.TemplateParameterSubstitution#getTemplateBinding <em>Template Binding</em>}</li>
  *   <li>{@link org.eclipse.uml2.TemplateParameterSubstitution#getActuals <em>Actual</em>}</li>
- *   <li>{@link org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActual <em>Owned Actual</em>}</li>
+ *   <li>{@link org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActuals <em>Owned Actual</em>}</li>
  * </ul>
  * </p>
  *
@@ -114,42 +114,32 @@
 	EList getActuals();
 
 	/**
-	 * Returns the value of the '<em><b>Owned Actual</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Owned Actual</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.uml2.ParameterableElement}.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Owned Actual</em>' containment reference isn't clear,
+	 * If the meaning of the '<em>Owned Actual</em>' containment reference list isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Owned Actual</em>' containment reference.
-	 * @see #setOwnedActual(ParameterableElement)
+	 * @return the value of the '<em>Owned Actual</em>' containment reference list.
 	 * @see org.eclipse.uml2.UML2Package#getTemplateParameterSubstitution_OwnedActual()
-	 * @model containment="true" volatile="true"
+	 * @model type="org.eclipse.uml2.ParameterableElement" containment="true" volatile="true"
 	 * @generated
 	 */
-	ParameterableElement getOwnedActual();
-
-	/**
-	 * Sets the value of the '{@link org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActual <em>Owned Actual</em>}' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Owned Actual</em>' containment reference.
-	 * @see #getOwnedActual()
-	 * @generated
-	 */
-	void setOwnedActual(ParameterableElement value);
+	EList getOwnedActuals();
 
     /**
-     * Creates a {@link org.eclipse.uml2.ParameterableElement} and sets the '<em><b>Owned Actual</b></em>' containment reference.
+     * Creates a {@link org.eclipse.uml2.ParameterableElement} and appends it to the '<em><b>Owned Actual</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @param eClass The Ecore class of the {@link org.eclipse.uml2.ParameterableElement} to create.
 	 * @return The new {@link org.eclipse.uml2.ParameterableElement}.
-	 * @see #getOwnedActual()
+	 * @see #getOwnedActuals()
 	 * @generated
      */
     ParameterableElement createOwnedActual(EClass eClass);
-     
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2DiagnosticConstants.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2DiagnosticConstants.java
index b4e710f..002993a 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2DiagnosticConstants.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2DiagnosticConstants.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2DiagnosticConstants.java,v 1.2 2004/04/27 16:38:55 khussey Exp $
+ * $Id: UML2DiagnosticConstants.java,v 1.3 2004/04/30 17:21:46 khussey Exp $
  */
 package org.eclipse.uml2;
 
@@ -119,7 +119,7 @@
 	 * @see org.eclipse.uml2.Property#validateOppositeIsOtherEnd(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__OPPOSITE_IS_OTHER_END = 8;
+	public static final int PROPERTY__OPPOSITE_IS_OTHER_END = 13;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -128,7 +128,7 @@
 	 * @see org.eclipse.uml2.Property#validateMultiplicityOfComposite(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__MULTIPLICITY_OF_COMPOSITE = 9;
+	public static final int PROPERTY__MULTIPLICITY_OF_COMPOSITE = 14;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -137,7 +137,7 @@
 	 * @see org.eclipse.uml2.Property#validateSubsettingContext(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__SUBSETTING_CONTEXT = 10;
+	public static final int PROPERTY__SUBSETTING_CONTEXT = 15;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -146,7 +146,7 @@
 	 * @see org.eclipse.uml2.Property#validateNavigablePropertyRedefinition(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__NAVIGABLE_PROPERTY_REDEFINITION = 11;
+	public static final int PROPERTY__NAVIGABLE_PROPERTY_REDEFINITION = 16;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -155,7 +155,7 @@
 	 * @see org.eclipse.uml2.Property#validateSubsettingRules(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__SUBSETTING_RULES = 12;
+	public static final int PROPERTY__SUBSETTING_RULES = 17;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -164,7 +164,7 @@
 	 * @see org.eclipse.uml2.Property#validateNavigableReadonly(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__NAVIGABLE_READONLY = 13;
+	public static final int PROPERTY__NAVIGABLE_READONLY = 18;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -173,7 +173,7 @@
 	 * @see org.eclipse.uml2.Property#validateDerivedUnionIsDerived(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PROPERTY__DERIVED_UNION_IS_DERIVED = 14;
+	public static final int PROPERTY__DERIVED_UNION_IS_DERIVED = 19;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -182,7 +182,7 @@
 	 * @see org.eclipse.uml2.Operation#validateTypeOfResult(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int OPERATION__TYPE_OF_RESULT = 15;
+	public static final int OPERATION__TYPE_OF_RESULT = 20;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -191,7 +191,7 @@
 	 * @see org.eclipse.uml2.Operation#validateOnlyBodyForQuery(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int OPERATION__ONLY_BODY_FOR_QUERY = 16;
+	public static final int OPERATION__ONLY_BODY_FOR_QUERY = 21;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -200,7 +200,7 @@
 	 * @see org.eclipse.uml2.NamedElement#validateNoName(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int NAMED_ELEMENT__NO_NAME = 17;
+	public static final int NAMED_ELEMENT__NO_NAME = 8;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -209,7 +209,7 @@
 	 * @see org.eclipse.uml2.NamedElement#validateQualifiedName(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int NAMED_ELEMENT__QUALIFIED_NAME = 18;
+	public static final int NAMED_ELEMENT__QUALIFIED_NAME = 9;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -218,7 +218,7 @@
 	 * @see org.eclipse.uml2.NamedElement#validateVisibilityNeedsOwnership(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int NAMED_ELEMENT__VISIBILITY_NEEDS_OWNERSHIP = 19;
+	public static final int NAMED_ELEMENT__VISIBILITY_NEEDS_OWNERSHIP = 10;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -227,7 +227,7 @@
 	 * @see org.eclipse.uml2.Package#validateElementsPublicOrPrivate(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int PACKAGE__ELEMENTS_PUBLIC_OR_PRIVATE = 20;
+	public static final int PACKAGE__ELEMENTS_PUBLIC_OR_PRIVATE = 22;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -236,7 +236,7 @@
 	 * @see org.eclipse.uml2.Namespace#validateMembersAreDistinguishable(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int NAMESPACE__MEMBERS_ARE_DISTINGUISHABLE = 21;
+	public static final int NAMESPACE__MEMBERS_ARE_DISTINGUISHABLE = 11;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -245,7 +245,7 @@
 	 * @see org.eclipse.uml2.Namespace#validateImportedMemberDerived(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int NAMESPACE__IMPORTED_MEMBER_DERIVED = 22;
+	public static final int NAMESPACE__IMPORTED_MEMBER_DERIVED = 12;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -299,7 +299,7 @@
 	 * @see org.eclipse.uml2.InstanceSpecification#validateSlotsAreDefined(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int INSTANCE_SPECIFICATION__SLOTS_ARE_DEFINED = 28;
+	public static final int INSTANCE_SPECIFICATION__SLOTS_ARE_DEFINED = 30;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -308,7 +308,7 @@
 	 * @see org.eclipse.uml2.InstanceSpecification#validateNoDuplicateSlots(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int INSTANCE_SPECIFICATION__NO_DUPLICATE_SLOTS = 29;
+	public static final int INSTANCE_SPECIFICATION__NO_DUPLICATE_SLOTS = 31;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -317,7 +317,7 @@
 	 * @see org.eclipse.uml2.RedefinableElement#validateRedefinitionContextValid(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT_VALID = 30;
+	public static final int REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT_VALID = 28;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -326,7 +326,7 @@
 	 * @see org.eclipse.uml2.RedefinableElement#validateRedefinitionConsistent(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map)
 	 * @generated
 	 */
-	public static final int REDEFINABLE_ELEMENT__REDEFINITION_CONSISTENT = 31;
+	public static final int REDEFINABLE_ELEMENT__REDEFINITION_CONSISTENT = 29;
 
 	/**
 	 * <!-- begin-user-doc -->
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2Package.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2Package.java
index fe2118c..d177dbb 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2Package.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/UML2Package.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2Package.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: UML2Package.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2;
 
@@ -246,7 +246,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateableElement()
 	 * @generated
 	 */
-	int TEMPLATEABLE_ELEMENT = 97;
+	int TEMPLATEABLE_ELEMENT = 123;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.NamedElementImpl <em>Named Element</em>}' class.
@@ -256,7 +256,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getNamedElement()
 	 * @generated
 	 */
-	int NAMED_ELEMENT = 12;
+	int NAMED_ELEMENT = 2;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.NamespaceImpl <em>Namespace</em>}' class.
@@ -266,7 +266,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getNamespace()
 	 * @generated
 	 */
-	int NAMESPACE = 18;
+	int NAMESPACE = 3;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClassifierImpl <em>Classifier</em>}' class.
@@ -286,7 +286,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStructuredClassifier()
 	 * @generated
 	 */
-	int STRUCTURED_CLASSIFIER = 92;
+	int STRUCTURED_CLASSIFIER = 64;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.EncapsulatedClassifierImpl <em>Encapsulated Classifier</em>}' class.
@@ -296,7 +296,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getEncapsulatedClassifier()
 	 * @generated
 	 */
-	int ENCAPSULATED_CLASSIFIER = 124;
+	int ENCAPSULATED_CLASSIFIER = 106;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClassImpl <em>Class</em>}' class.
@@ -306,7 +306,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClass_()
 	 * @generated
 	 */
-	int CLASS = 6;
+	int CLASS = 10;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PackageableElementImpl <em>Packageable Element</em>}' class.
@@ -326,7 +326,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getType()
 	 * @generated
 	 */
-	int TYPE = 7;
+	int TYPE = 11;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RedefinableElementImpl <em>Redefinable Element</em>}' class.
@@ -336,7 +336,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRedefinableElement()
 	 * @generated
 	 */
-	int REDEFINABLE_ELEMENT = 36;
+	int REDEFINABLE_ELEMENT = 33;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.FeatureImpl <em>Feature</em>}' class.
@@ -366,7 +366,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getProperty()
 	 * @generated
 	 */
-	int PROPERTY = 8;
+	int PROPERTY = 12;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.BehavioralFeatureImpl <em>Behavioral Feature</em>}' class.
@@ -386,7 +386,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getOperation()
 	 * @generated
 	 */
-	int OPERATION = 9;
+	int OPERATION = 13;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TypedElementImpl <em>Typed Element</em>}' class.
@@ -396,7 +396,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTypedElement()
 	 * @generated
 	 */
-	int TYPED_ELEMENT = 10;
+	int TYPED_ELEMENT = 14;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConnectableElementImpl <em>Connectable Element</em>}' class.
@@ -406,7 +406,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnectableElement()
 	 * @generated
 	 */
-	int CONNECTABLE_ELEMENT = 90;
+	int CONNECTABLE_ELEMENT = 62;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ParameterImpl <em>Parameter</em>}' class.
@@ -416,7 +416,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getParameter()
 	 * @generated
 	 */
-	int PARAMETER = 11;
+	int PARAMETER = 15;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PackageImpl <em>Package</em>}' class.
@@ -426,7 +426,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPackage()
 	 * @generated
 	 */
-	int PACKAGE = 13;
+	int PACKAGE = 16;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DataTypeImpl <em>Data Type</em>}' class.
@@ -436,7 +436,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDataType()
 	 * @generated
 	 */
-	int DATA_TYPE = 15;
+	int DATA_TYPE = 18;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.EnumerationImpl <em>Enumeration</em>}' class.
@@ -446,7 +446,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getEnumeration()
 	 * @generated
 	 */
-	int ENUMERATION = 14;
+	int ENUMERATION = 17;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InstanceSpecificationImpl <em>Instance Specification</em>}' class.
@@ -456,7 +456,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInstanceSpecification()
 	 * @generated
 	 */
-	int INSTANCE_SPECIFICATION = 33;
+	int INSTANCE_SPECIFICATION = 34;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.EnumerationLiteralImpl <em>Enumeration Literal</em>}' class.
@@ -466,7 +466,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getEnumerationLiteral()
 	 * @generated
 	 */
-	int ENUMERATION_LITERAL = 16;
+	int ENUMERATION_LITERAL = 19;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PrimitiveTypeImpl <em>Primitive Type</em>}' class.
@@ -476,7 +476,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPrimitiveType()
 	 * @generated
 	 */
-	int PRIMITIVE_TYPE = 17;
+	int PRIMITIVE_TYPE = 20;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ValueSpecificationImpl <em>Value Specification</em>}' class.
@@ -486,7 +486,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getValueSpecification()
 	 * @generated
 	 */
-	int VALUE_SPECIFICATION = 3;
+	int VALUE_SPECIFICATION = 8;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.OpaqueExpressionImpl <em>Opaque Expression</em>}' class.
@@ -496,7 +496,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getOpaqueExpression()
 	 * @generated
 	 */
-	int OPAQUE_EXPRESSION = 2;
+	int OPAQUE_EXPRESSION = 7;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExpressionImpl <em>Expression</em>}' class.
@@ -506,7 +506,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExpression()
 	 * @generated
 	 */
-	int EXPRESSION = 4;
+	int EXPRESSION = 9;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CommentImpl <em>Comment</em>}' class.
@@ -516,7 +516,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getComment()
 	 * @generated
 	 */
-	int COMMENT = 5;
+	int COMMENT = 4;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RelationshipImpl <em>Relationship</em>}' class.
@@ -526,7 +526,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRelationship()
 	 * @generated
 	 */
-	int RELATIONSHIP = 20;
+	int RELATIONSHIP = 6;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DirectedRelationshipImpl <em>Directed Relationship</em>}' class.
@@ -536,7 +536,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDirectedRelationship()
 	 * @generated
 	 */
-	int DIRECTED_RELATIONSHIP = 19;
+	int DIRECTED_RELATIONSHIP = 5;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -716,6 +716,375 @@
 	 * @generated
 	 * @ordered
 	 */
+	int NAMESPACE__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__OWNER = NAMED_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__MEMBER = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__OWNED_RULE = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__IMPORTED_MEMBER = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__ELEMENT_IMPORT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE__PACKAGE_IMPORT = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Namespace</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMESPACE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__EANNOTATIONS = TEMPLATEABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__OWNED_ELEMENT = TEMPLATEABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__OWNER = TEMPLATEABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__OWNED_COMMENT = TEMPLATEABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__TEMPLATE_BINDING = TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__OWNED_TEMPLATE_SIGNATURE = TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__BODY = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Annotated Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__ANNOTATED_ELEMENT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Body Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT__BODY_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the the '<em>Comment</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMENT_FEATURE_COUNT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP__RELATED_ELEMENT = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Relationship</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATIONSHIP_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__EANNOTATIONS = RELATIONSHIP__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__OWNED_ELEMENT = RELATIONSHIP__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__OWNER = RELATIONSHIP__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__OWNED_COMMENT = RELATIONSHIP__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__RELATED_ELEMENT = RELATIONSHIP__RELATED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__SOURCE = RELATIONSHIP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP__TARGET = RELATIONSHIP_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Directed Relationship</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DIRECTED_RELATIONSHIP_FEATURE_COUNT = RELATIONSHIP_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
 	int TYPED_ELEMENT__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
 
 	/**
@@ -1328,249 +1697,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int COMMENT__EANNOTATIONS = TEMPLATEABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__OWNED_ELEMENT = TEMPLATEABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__OWNER = TEMPLATEABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__OWNED_COMMENT = TEMPLATEABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__TEMPLATE_BINDING = TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__OWNED_TEMPLATE_SIGNATURE = TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Body</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__BODY = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Annotated Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__ANNOTATED_ELEMENT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Body Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT__BODY_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The number of structural features of the the '<em>Comment</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMENT_FEATURE_COUNT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__OWNER = NAMED_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__NAME = NAMED_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__MEMBER = NAMED_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__OWNED_RULE = NAMED_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__IMPORTED_MEMBER = NAMED_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__ELEMENT_IMPORT = NAMED_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE__PACKAGE_IMPORT = NAMED_ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Namespace</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NAMESPACE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int CLASSIFIER__EANNOTATIONS = NAMESPACE__EANNOTATIONS;
 
 	/**
@@ -1826,22 +1952,22 @@
 	int CLASSIFIER__REDEFINED_CLASSIFIER = NAMESPACE_FEATURE_COUNT + 12;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER__POWERTYPE_EXTENT = NAMESPACE_FEATURE_COUNT + 13;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CLASSIFIER__SUBSTITUTION = NAMESPACE_FEATURE_COUNT + 14;
+	int CLASSIFIER__SUBSTITUTION = NAMESPACE_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER__POWERTYPE_EXTENT = NAMESPACE_FEATURE_COUNT + 14;
 
 	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
@@ -2141,15 +2267,6 @@
 	int STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2159,6 +2276,15 @@
 	int STRUCTURED_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2492,15 +2618,6 @@
 	int ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER = STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT = STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2510,6 +2627,15 @@
 	int ENCAPSULATED_CLASSIFIER__SUBSTITUTION = STRUCTURED_CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT = STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2852,15 +2978,6 @@
 	int CLASS__REDEFINED_CLASSIFIER = ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASS__POWERTYPE_EXTENT = ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2870,6 +2987,15 @@
 	int CLASS__SUBSTITUTION = ENCAPSULATED_CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASS__POWERTYPE_EXTENT = ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -5768,15 +5894,6 @@
 	int DATA_TYPE__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_TYPE__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -5786,6 +5903,15 @@
 	int DATA_TYPE__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_TYPE__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6101,15 +6227,6 @@
 	int ENUMERATION__REDEFINED_CLASSIFIER = DATA_TYPE__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ENUMERATION__POWERTYPE_EXTENT = DATA_TYPE__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6119,6 +6236,15 @@
 	int ENUMERATION__SUBSTITUTION = DATA_TYPE__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENUMERATION__POWERTYPE_EXTENT = DATA_TYPE__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6812,15 +6938,6 @@
 	int PRIMITIVE_TYPE__REDEFINED_CLASSIFIER = DATA_TYPE__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PRIMITIVE_TYPE__POWERTYPE_EXTENT = DATA_TYPE__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6830,6 +6947,15 @@
 	int PRIMITIVE_TYPE__SUBSTITUTION = DATA_TYPE__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRIMITIVE_TYPE__POWERTYPE_EXTENT = DATA_TYPE__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -6884,132 +7010,6 @@
 	int PRIMITIVE_TYPE_FEATURE_COUNT = DATA_TYPE_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP__RELATED_ELEMENT = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Relationship</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int RELATIONSHIP_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__EANNOTATIONS = RELATIONSHIP__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__OWNED_ELEMENT = RELATIONSHIP__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__OWNER = RELATIONSHIP__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__OWNED_COMMENT = RELATIONSHIP__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__RELATED_ELEMENT = RELATIONSHIP__RELATED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__SOURCE = RELATIONSHIP_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP__TARGET = RELATIONSHIP_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Directed Relationship</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DIRECTED_RELATIONSHIP_FEATURE_COUNT = RELATIONSHIP_FEATURE_COUNT + 2;
-
-	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LiteralSpecificationImpl <em>Literal Specification</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -8104,7 +8104,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSlot()
 	 * @generated
 	 */
-	int SLOT = 34;
+	int SLOT = 35;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InstanceValueImpl <em>Instance Value</em>}' class.
@@ -8114,7 +8114,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInstanceValue()
 	 * @generated
 	 */
-	int INSTANCE_VALUE = 35;
+	int INSTANCE_VALUE = 36;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.GeneralizationImpl <em>Generalization</em>}' class.
@@ -8949,15 +8949,6 @@
 	int ASSOCIATION__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -8967,6 +8958,15 @@
 	int ASSOCIATION__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9419,15 +9419,6 @@
 	int STEREOTYPE__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STEREOTYPE__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -9437,6 +9428,15 @@
 	int STEREOTYPE__SUBSTITUTION = CLASS__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STEREOTYPE__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -10277,15 +10277,6 @@
 	int EXTENSION__REDEFINED_CLASSIFIER = ASSOCIATION__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION__POWERTYPE_EXTENT = ASSOCIATION__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -10295,6 +10286,15 @@
 	int EXTENSION__SUBSTITUTION = ASSOCIATION__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION__POWERTYPE_EXTENT = ASSOCIATION__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -10807,7 +10807,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInformationItem()
 	 * @generated
 	 */
-	int INFORMATION_ITEM = 49;
+	int INFORMATION_ITEM = 58;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InformationFlowImpl <em>Information Flow</em>}' class.
@@ -10817,7 +10817,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInformationFlow()
 	 * @generated
 	 */
-	int INFORMATION_FLOW = 50;
+	int INFORMATION_FLOW = 59;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.GeneralizationSetImpl <em>Generalization Set</em>}' class.
@@ -10827,7 +10827,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getGeneralizationSet()
 	 * @generated
 	 */
-	int GENERALIZATION_SET = 48;
+	int GENERALIZATION_SET = 60;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AssociationClassImpl <em>Association Class</em>}' class.
@@ -10837,7 +10837,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAssociationClass()
 	 * @generated
 	 */
-	int ASSOCIATION_CLASS = 47;
+	int ASSOCIATION_CLASS = 56;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ModelImpl <em>Model</em>}' class.
@@ -10847,7 +10847,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getModel()
 	 * @generated
 	 */
-	int MODEL = 51;
+	int MODEL = 57;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.BehaviorImpl <em>Behavior</em>}' class.
@@ -10857,7 +10857,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getBehavior()
 	 * @generated
 	 */
-	int BEHAVIOR = 58;
+	int BEHAVIOR = 53;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.BehavioredClassifierImpl <em>Behaviored Classifier</em>}' class.
@@ -10867,7 +10867,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getBehavioredClassifier()
 	 * @generated
 	 */
-	int BEHAVIORED_CLASSIFIER = 59;
+	int BEHAVIORED_CLASSIFIER = 54;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityImpl <em>Activity</em>}' class.
@@ -10877,7 +10877,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivity()
 	 * @generated
 	 */
-	int ACTIVITY = 60;
+	int ACTIVITY = 55;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DependencyImpl <em>Dependency</em>}' class.
@@ -10887,7 +10887,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDependency()
 	 * @generated
 	 */
-	int DEPENDENCY = 53;
+	int DEPENDENCY = 48;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PermissionImpl <em>Permission</em>}' class.
@@ -10897,7 +10897,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPermission()
 	 * @generated
 	 */
-	int PERMISSION = 52;
+	int PERMISSION = 47;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.UsageImpl <em>Usage</em>}' class.
@@ -10907,7 +10907,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getUsage()
 	 * @generated
 	 */
-	int USAGE = 54;
+	int USAGE = 49;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AbstractionImpl <em>Abstraction</em>}' class.
@@ -10917,7 +10917,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAbstraction()
 	 * @generated
 	 */
-	int ABSTRACTION = 55;
+	int ABSTRACTION = 50;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RealizationImpl <em>Realization</em>}' class.
@@ -10927,7 +10927,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRealization()
 	 * @generated
 	 */
-	int REALIZATION = 56;
+	int REALIZATION = 51;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.SubstitutionImpl <em>Substitution</em>}' class.
@@ -10937,1339 +10937,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSubstitution()
 	 * @generated
 	 */
-	int SUBSTITUTION = 57;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__EANNOTATIONS = CLASS__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_ELEMENT = CLASS__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNER = CLASS__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_COMMENT = CLASS__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__TEMPLATE_BINDING = CLASS__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_TEMPLATE_SIGNATURE = CLASS__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__NAME = CLASS__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__QUALIFIED_NAME = CLASS__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__VISIBILITY = CLASS__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__CLIENT_DEPENDENCY = CLASS__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__NAME_EXPRESSION = CLASS__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__MEMBER = CLASS__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_RULE = CLASS__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IMPORTED_MEMBER = CLASS__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__ELEMENT_IMPORT = CLASS__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__PACKAGE_IMPORT = CLASS__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__TEMPLATE_PARAMETER = CLASS__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNING_PARAMETER = CLASS__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__PACKAGEABLE_ELEMENT_VISIBILITY = CLASS__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__PACKAGE = CLASS__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__REDEFINITION_CONTEXT = CLASS__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IS_LEAF = CLASS__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__FEATURE = CLASS__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IS_ABSTRACT = CLASS__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__INHERITED_MEMBER = CLASS__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__GENERAL = CLASS__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__GENERALIZATION = CLASS__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__ATTRIBUTE = CLASS__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__SUBSTITUTION = CLASS__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_USE_CASE = CLASS__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__REPRESENTATION = CLASS__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OCCURRENCE = CLASS__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_ATTRIBUTE = CLASS__OWNED_ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Part</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__PART = CLASS__PART;
-
-	/**
-	 * The feature id for the '<em><b>Role</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__ROLE = CLASS__ROLE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Connector</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_CONNECTOR = CLASS__OWNED_CONNECTOR;
-
-	/**
-	 * The feature id for the '<em><b>Owned Port</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_PORT = CLASS__OWNED_PORT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_BEHAVIOR = CLASS__OWNED_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__CLASSIFIER_BEHAVIOR = CLASS__CLASSIFIER_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IMPLEMENTATION = CLASS__IMPLEMENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_STATE_MACHINE = CLASS__OWNED_STATE_MACHINE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_OPERATION = CLASS__OWNED_OPERATION;
-
-	/**
-	 * The feature id for the '<em><b>Super Class</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__SUPER_CLASS = CLASS__SUPER_CLASS;
-
-	/**
-	 * The feature id for the '<em><b>Extension</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__EXTENSION = CLASS__EXTENSION;
-
-	/**
-	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__NESTED_CLASSIFIER = CLASS__NESTED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IS_ACTIVE = CLASS__IS_ACTIVE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_RECEPTION = CLASS__OWNED_RECEPTION;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__RELATED_ELEMENT = CLASS_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Is Derived</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__IS_DERIVED = CLASS_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Owned End</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__OWNED_END = CLASS_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>End Type</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__END_TYPE = CLASS_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Member End</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS__MEMBER_END = CLASS_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Association Class</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ASSOCIATION_CLASS_FEATURE_COUNT = CLASS_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__EANNOTATIONS = PACKAGEABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__OWNED_ELEMENT = PACKAGEABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__OWNER = PACKAGEABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__OWNED_COMMENT = PACKAGEABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__TEMPLATE_BINDING = PACKAGEABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__OWNED_TEMPLATE_SIGNATURE = PACKAGEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__NAME = PACKAGEABLE_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__QUALIFIED_NAME = PACKAGEABLE_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__VISIBILITY = PACKAGEABLE_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__CLIENT_DEPENDENCY = PACKAGEABLE_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__NAME_EXPRESSION = PACKAGEABLE_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__TEMPLATE_PARAMETER = PACKAGEABLE_ELEMENT__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__OWNING_PARAMETER = PACKAGEABLE_ELEMENT__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__PACKAGEABLE_ELEMENT_VISIBILITY = PACKAGEABLE_ELEMENT__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Is Covering</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__IS_COVERING = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Is Disjoint</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__IS_DISJOINT = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Powertype</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__POWERTYPE = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET__GENERALIZATION = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The number of structural features of the the '<em>Generalization Set</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GENERALIZATION_SET_FEATURE_COUNT = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>Represented</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM__REPRESENTED = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Information Item</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_ITEM_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__EANNOTATIONS = DIRECTED_RELATIONSHIP__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__OWNED_ELEMENT = DIRECTED_RELATIONSHIP__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__OWNER = DIRECTED_RELATIONSHIP__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__OWNED_COMMENT = DIRECTED_RELATIONSHIP__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__RELATED_ELEMENT = DIRECTED_RELATIONSHIP__RELATED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__SOURCE = DIRECTED_RELATIONSHIP__SOURCE;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__TARGET = DIRECTED_RELATIONSHIP__TARGET;
-
-	/**
-	 * The feature id for the '<em><b>Realization</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__REALIZATION = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Conveyed</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW__CONVEYED = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Information Flow</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INFORMATION_FLOW_FEATURE_COUNT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__EANNOTATIONS = PACKAGE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_ELEMENT = PACKAGE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNER = PACKAGE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_COMMENT = PACKAGE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__TEMPLATE_BINDING = PACKAGE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_TEMPLATE_SIGNATURE = PACKAGE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__NAME = PACKAGE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__QUALIFIED_NAME = PACKAGE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__VISIBILITY = PACKAGE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__CLIENT_DEPENDENCY = PACKAGE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__NAME_EXPRESSION = PACKAGE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__MEMBER = PACKAGE__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_RULE = PACKAGE__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__IMPORTED_MEMBER = PACKAGE__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__ELEMENT_IMPORT = PACKAGE__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__PACKAGE_IMPORT = PACKAGE__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__TEMPLATE_PARAMETER = PACKAGE__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNING_PARAMETER = PACKAGE__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__PACKAGEABLE_ELEMENT_VISIBILITY = PACKAGE__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Nested Package</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__NESTED_PACKAGE = PACKAGE__NESTED_PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Nesting Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__NESTING_PACKAGE = PACKAGE__NESTING_PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Type</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_TYPE = PACKAGE__OWNED_TYPE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Member</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__OWNED_MEMBER = PACKAGE__OWNED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Package Merge</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__PACKAGE_MERGE = PACKAGE__PACKAGE_MERGE;
-
-	/**
-	 * The feature id for the '<em><b>Applied Profile</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__APPLIED_PROFILE = PACKAGE__APPLIED_PROFILE;
-
-	/**
-	 * The feature id for the '<em><b>Package Extension</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__PACKAGE_EXTENSION = PACKAGE__PACKAGE_EXTENSION;
-
-	/**
-	 * The feature id for the '<em><b>Viewpoint</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL__VIEWPOINT = PACKAGE_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Model</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MODEL_FEATURE_COUNT = PACKAGE_FEATURE_COUNT + 1;
+	int SUBSTITUTION = 52;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -13694,15 +12362,6 @@
 	int BEHAVIOR__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEHAVIOR__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13712,6 +12371,15 @@
 	int BEHAVIOR__SUBSTITUTION = CLASS__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEHAVIOR__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14225,15 +12893,6 @@
 	int BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14243,6 +12902,15 @@
 	int BEHAVIORED_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14576,15 +13244,6 @@
 	int ACTIVITY__REDEFINED_CLASSIFIER = BEHAVIOR__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTIVITY__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14594,6 +13253,15 @@
 	int ACTIVITY__SUBSTITUTION = BEHAVIOR__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14927,6 +13595,1338 @@
 	int ACTIVITY_FEATURE_COUNT = BEHAVIOR_FEATURE_COUNT + 9;
 
 	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__EANNOTATIONS = CLASS__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_ELEMENT = CLASS__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNER = CLASS__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_COMMENT = CLASS__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__TEMPLATE_BINDING = CLASS__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_TEMPLATE_SIGNATURE = CLASS__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__NAME = CLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__QUALIFIED_NAME = CLASS__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__VISIBILITY = CLASS__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__CLIENT_DEPENDENCY = CLASS__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__NAME_EXPRESSION = CLASS__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__MEMBER = CLASS__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_RULE = CLASS__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IMPORTED_MEMBER = CLASS__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__ELEMENT_IMPORT = CLASS__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__PACKAGE_IMPORT = CLASS__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__TEMPLATE_PARAMETER = CLASS__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNING_PARAMETER = CLASS__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__PACKAGEABLE_ELEMENT_VISIBILITY = CLASS__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__PACKAGE = CLASS__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__REDEFINITION_CONTEXT = CLASS__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IS_LEAF = CLASS__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__FEATURE = CLASS__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IS_ABSTRACT = CLASS__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__INHERITED_MEMBER = CLASS__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__GENERAL = CLASS__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__GENERALIZATION = CLASS__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__ATTRIBUTE = CLASS__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__SUBSTITUTION = CLASS__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_USE_CASE = CLASS__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__REPRESENTATION = CLASS__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OCCURRENCE = CLASS__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_ATTRIBUTE = CLASS__OWNED_ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Part</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__PART = CLASS__PART;
+
+	/**
+	 * The feature id for the '<em><b>Role</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__ROLE = CLASS__ROLE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Connector</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_CONNECTOR = CLASS__OWNED_CONNECTOR;
+
+	/**
+	 * The feature id for the '<em><b>Owned Port</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_PORT = CLASS__OWNED_PORT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_BEHAVIOR = CLASS__OWNED_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__CLASSIFIER_BEHAVIOR = CLASS__CLASSIFIER_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IMPLEMENTATION = CLASS__IMPLEMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_STATE_MACHINE = CLASS__OWNED_STATE_MACHINE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_OPERATION = CLASS__OWNED_OPERATION;
+
+	/**
+	 * The feature id for the '<em><b>Super Class</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__SUPER_CLASS = CLASS__SUPER_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Extension</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__EXTENSION = CLASS__EXTENSION;
+
+	/**
+	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__NESTED_CLASSIFIER = CLASS__NESTED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IS_ACTIVE = CLASS__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_RECEPTION = CLASS__OWNED_RECEPTION;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__RELATED_ELEMENT = CLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Is Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__IS_DERIVED = CLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Owned End</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__OWNED_END = CLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>End Type</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__END_TYPE = CLASS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Member End</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS__MEMBER_END = CLASS_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Association Class</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ASSOCIATION_CLASS_FEATURE_COUNT = CLASS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__EANNOTATIONS = PACKAGE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_ELEMENT = PACKAGE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNER = PACKAGE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_COMMENT = PACKAGE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__TEMPLATE_BINDING = PACKAGE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_TEMPLATE_SIGNATURE = PACKAGE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__NAME = PACKAGE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__QUALIFIED_NAME = PACKAGE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__VISIBILITY = PACKAGE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__CLIENT_DEPENDENCY = PACKAGE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__NAME_EXPRESSION = PACKAGE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__MEMBER = PACKAGE__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_RULE = PACKAGE__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__IMPORTED_MEMBER = PACKAGE__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__ELEMENT_IMPORT = PACKAGE__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__PACKAGE_IMPORT = PACKAGE__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__TEMPLATE_PARAMETER = PACKAGE__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNING_PARAMETER = PACKAGE__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__PACKAGEABLE_ELEMENT_VISIBILITY = PACKAGE__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Nested Package</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__NESTED_PACKAGE = PACKAGE__NESTED_PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Nesting Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__NESTING_PACKAGE = PACKAGE__NESTING_PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Type</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_TYPE = PACKAGE__OWNED_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Member</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OWNED_MEMBER = PACKAGE__OWNED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Package Merge</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__PACKAGE_MERGE = PACKAGE__PACKAGE_MERGE;
+
+	/**
+	 * The feature id for the '<em><b>Applied Profile</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__APPLIED_PROFILE = PACKAGE__APPLIED_PROFILE;
+
+	/**
+	 * The feature id for the '<em><b>Package Extension</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__PACKAGE_EXTENSION = PACKAGE__PACKAGE_EXTENSION;
+
+	/**
+	 * The feature id for the '<em><b>Viewpoint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__VIEWPOINT = PACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL_FEATURE_COUNT = PACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Represented</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM__REPRESENTED = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Information Item</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_ITEM_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__EANNOTATIONS = DIRECTED_RELATIONSHIP__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__OWNED_ELEMENT = DIRECTED_RELATIONSHIP__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__OWNER = DIRECTED_RELATIONSHIP__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__OWNED_COMMENT = DIRECTED_RELATIONSHIP__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__RELATED_ELEMENT = DIRECTED_RELATIONSHIP__RELATED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__SOURCE = DIRECTED_RELATIONSHIP__SOURCE;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__TARGET = DIRECTED_RELATIONSHIP__TARGET;
+
+	/**
+	 * The feature id for the '<em><b>Realization</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__REALIZATION = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Conveyed</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW__CONVEYED = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Information Flow</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INFORMATION_FLOW_FEATURE_COUNT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__EANNOTATIONS = PACKAGEABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__OWNED_ELEMENT = PACKAGEABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__OWNER = PACKAGEABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__OWNED_COMMENT = PACKAGEABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__TEMPLATE_BINDING = PACKAGEABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__OWNED_TEMPLATE_SIGNATURE = PACKAGEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__NAME = PACKAGEABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__QUALIFIED_NAME = PACKAGEABLE_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__VISIBILITY = PACKAGEABLE_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__CLIENT_DEPENDENCY = PACKAGEABLE_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__NAME_EXPRESSION = PACKAGEABLE_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__TEMPLATE_PARAMETER = PACKAGEABLE_ELEMENT__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__OWNING_PARAMETER = PACKAGEABLE_ELEMENT__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__PACKAGEABLE_ELEMENT_VISIBILITY = PACKAGEABLE_ELEMENT__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Is Covering</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__IS_COVERING = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Is Disjoint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__IS_DISJOINT = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Powertype</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__POWERTYPE = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET__GENERALIZATION = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the the '<em>Generalization Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERALIZATION_SET_FEATURE_COUNT = PACKAGEABLE_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ArtifactImpl <em>Artifact</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14934,7 +14934,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getArtifact()
 	 * @generated
 	 */
-	int ARTIFACT = 87;
+	int ARTIFACT = 72;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ManifestationImpl <em>Manifestation</em>}' class.
@@ -14944,7 +14944,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getManifestation()
 	 * @generated
 	 */
-	int MANIFESTATION = 88;
+	int MANIFESTATION = 73;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InterfaceImpl <em>Interface</em>}' class.
@@ -14954,7 +14954,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInterface()
 	 * @generated
 	 */
-	int INTERFACE = 80;
+	int INTERFACE = 65;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ImplementationImpl <em>Implementation</em>}' class.
@@ -14964,7 +14964,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getImplementation()
 	 * @generated
 	 */
-	int IMPLEMENTATION = 81;
+	int IMPLEMENTATION = 66;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActorImpl <em>Actor</em>}' class.
@@ -14974,7 +14974,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActor()
 	 * @generated
 	 */
-	int ACTOR = 82;
+	int ACTOR = 67;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExtendImpl <em>Extend</em>}' class.
@@ -14984,7 +14984,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExtend()
 	 * @generated
 	 */
-	int EXTEND = 83;
+	int EXTEND = 68;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.UseCaseImpl <em>Use Case</em>}' class.
@@ -14994,7 +14994,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getUseCase()
 	 * @generated
 	 */
-	int USE_CASE = 84;
+	int USE_CASE = 69;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExtensionPointImpl <em>Extension Point</em>}' class.
@@ -15004,7 +15004,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExtensionPoint()
 	 * @generated
 	 */
-	int EXTENSION_POINT = 85;
+	int EXTENSION_POINT = 70;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.IncludeImpl <em>Include</em>}' class.
@@ -15014,7 +15014,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInclude()
 	 * @generated
 	 */
-	int INCLUDE = 86;
+	int INCLUDE = 71;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityEdgeImpl <em>Activity Edge</em>}' class.
@@ -15024,7 +15024,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityEdge()
 	 * @generated
 	 */
-	int ACTIVITY_EDGE = 61;
+	int ACTIVITY_EDGE = 74;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityGroupImpl <em>Activity Group</em>}' class.
@@ -15034,7 +15034,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityGroup()
 	 * @generated
 	 */
-	int ACTIVITY_GROUP = 62;
+	int ACTIVITY_GROUP = 75;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityNodeImpl <em>Activity Node</em>}' class.
@@ -15044,7 +15044,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityNode()
 	 * @generated
 	 */
-	int ACTIVITY_NODE = 63;
+	int ACTIVITY_NODE = 76;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExecutableNodeImpl <em>Executable Node</em>}' class.
@@ -15054,7 +15054,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExecutableNode()
 	 * @generated
 	 */
-	int EXECUTABLE_NODE = 74;
+	int EXECUTABLE_NODE = 87;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActionImpl <em>Action</em>}' class.
@@ -15064,7 +15064,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAction()
 	 * @generated
 	 */
-	int ACTION = 64;
+	int ACTION = 77;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ObjectNodeImpl <em>Object Node</em>}' class.
@@ -15074,7 +15074,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getObjectNode()
 	 * @generated
 	 */
-	int OBJECT_NODE = 65;
+	int OBJECT_NODE = 78;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ControlNodeImpl <em>Control Node</em>}' class.
@@ -15084,7 +15084,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getControlNode()
 	 * @generated
 	 */
-	int CONTROL_NODE = 66;
+	int CONTROL_NODE = 79;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ControlFlowImpl <em>Control Flow</em>}' class.
@@ -15094,7 +15094,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getControlFlow()
 	 * @generated
 	 */
-	int CONTROL_FLOW = 67;
+	int CONTROL_FLOW = 80;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ObjectFlowImpl <em>Object Flow</em>}' class.
@@ -15104,7 +15104,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getObjectFlow()
 	 * @generated
 	 */
-	int OBJECT_FLOW = 68;
+	int OBJECT_FLOW = 81;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InitialNodeImpl <em>Initial Node</em>}' class.
@@ -15114,7 +15114,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInitialNode()
 	 * @generated
 	 */
-	int INITIAL_NODE = 69;
+	int INITIAL_NODE = 82;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.FinalNodeImpl <em>Final Node</em>}' class.
@@ -15124,7 +15124,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getFinalNode()
 	 * @generated
 	 */
-	int FINAL_NODE = 70;
+	int FINAL_NODE = 83;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityFinalNodeImpl <em>Activity Final Node</em>}' class.
@@ -15134,7 +15134,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityFinalNode()
 	 * @generated
 	 */
-	int ACTIVITY_FINAL_NODE = 71;
+	int ACTIVITY_FINAL_NODE = 84;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DecisionNodeImpl <em>Decision Node</em>}' class.
@@ -15144,7 +15144,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDecisionNode()
 	 * @generated
 	 */
-	int DECISION_NODE = 72;
+	int DECISION_NODE = 85;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.MergeNodeImpl <em>Merge Node</em>}' class.
@@ -15154,7 +15154,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getMergeNode()
 	 * @generated
 	 */
-	int MERGE_NODE = 73;
+	int MERGE_NODE = 86;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PinImpl <em>Pin</em>}' class.
@@ -15164,7 +15164,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPin()
 	 * @generated
 	 */
-	int PIN = 77;
+	int PIN = 90;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.OutputPinImpl <em>Output Pin</em>}' class.
@@ -15174,7 +15174,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getOutputPin()
 	 * @generated
 	 */
-	int OUTPUT_PIN = 75;
+	int OUTPUT_PIN = 88;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InputPinImpl <em>Input Pin</em>}' class.
@@ -15184,7 +15184,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInputPin()
 	 * @generated
 	 */
-	int INPUT_PIN = 76;
+	int INPUT_PIN = 89;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityParameterNodeImpl <em>Activity Parameter Node</em>}' class.
@@ -15194,7 +15194,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityParameterNode()
 	 * @generated
 	 */
-	int ACTIVITY_PARAMETER_NODE = 78;
+	int ACTIVITY_PARAMETER_NODE = 91;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ValuePinImpl <em>Value Pin</em>}' class.
@@ -15204,7 +15204,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getValuePin()
 	 * @generated
 	 */
-	int VALUE_PIN = 79;
+	int VALUE_PIN = 92;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.VariableImpl <em>Variable</em>}' class.
@@ -15214,7 +15214,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getVariable()
 	 * @generated
 	 */
-	int VARIABLE = 118;
+	int VARIABLE = 116;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StructuredActivityNodeImpl <em>Structured Activity Node</em>}' class.
@@ -15224,7 +15224,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStructuredActivityNode()
 	 * @generated
 	 */
-	int STRUCTURED_ACTIVITY_NODE = 119;
+	int STRUCTURED_ACTIVITY_NODE = 117;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConditionalNodeImpl <em>Conditional Node</em>}' class.
@@ -15234,7 +15234,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConditionalNode()
 	 * @generated
 	 */
-	int CONDITIONAL_NODE = 120;
+	int CONDITIONAL_NODE = 118;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClauseImpl <em>Clause</em>}' class.
@@ -15244,7 +15244,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClause()
 	 * @generated
 	 */
-	int CLAUSE = 121;
+	int CLAUSE = 119;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LoopNodeImpl <em>Loop Node</em>}' class.
@@ -15254,7 +15254,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getLoopNode()
 	 * @generated
 	 */
-	int LOOP_NODE = 122;
+	int LOOP_NODE = 120;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConnectorEndImpl <em>Connector End</em>}' class.
@@ -15264,7 +15264,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnectorEnd()
 	 * @generated
 	 */
-	int CONNECTOR_END = 89;
+	int CONNECTOR_END = 61;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConnectorImpl <em>Connector</em>}' class.
@@ -15274,7 +15274,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnector()
 	 * @generated
 	 */
-	int CONNECTOR = 91;
+	int CONNECTOR = 63;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TriggerImpl <em>Trigger</em>}' class.
@@ -15284,7 +15284,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTrigger()
 	 * @generated
 	 */
-	int TRIGGER = 128;
+	int TRIGGER = 110;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.MessageTriggerImpl <em>Message Trigger</em>}' class.
@@ -15294,7 +15294,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getMessageTrigger()
 	 * @generated
 	 */
-	int MESSAGE_TRIGGER = 126;
+	int MESSAGE_TRIGGER = 108;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CallTriggerImpl <em>Call Trigger</em>}' class.
@@ -15304,7 +15304,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCallTrigger()
 	 * @generated
 	 */
-	int CALL_TRIGGER = 125;
+	int CALL_TRIGGER = 107;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ChangeTriggerImpl <em>Change Trigger</em>}' class.
@@ -15314,7 +15314,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getChangeTrigger()
 	 * @generated
 	 */
-	int CHANGE_TRIGGER = 127;
+	int CHANGE_TRIGGER = 109;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReceptionImpl <em>Reception</em>}' class.
@@ -15324,7 +15324,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReception()
 	 * @generated
 	 */
-	int RECEPTION = 129;
+	int RECEPTION = 111;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.SignalImpl <em>Signal</em>}' class.
@@ -15334,7 +15334,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSignal()
 	 * @generated
 	 */
-	int SIGNAL = 130;
+	int SIGNAL = 112;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.SignalTriggerImpl <em>Signal Trigger</em>}' class.
@@ -15344,7 +15344,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSignalTrigger()
 	 * @generated
 	 */
-	int SIGNAL_TRIGGER = 131;
+	int SIGNAL_TRIGGER = 113;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TimeTriggerImpl <em>Time Trigger</em>}' class.
@@ -15354,7 +15354,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTimeTrigger()
 	 * @generated
 	 */
-	int TIME_TRIGGER = 132;
+	int TIME_TRIGGER = 114;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AnyTriggerImpl <em>Any Trigger</em>}' class.
@@ -15364,7 +15364,2635 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAnyTrigger()
 	 * @generated
 	 */
-	int ANY_TRIGGER = 133;
+	int ANY_TRIGGER = 115;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__EANNOTATIONS = MULTIPLICITY_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__OWNED_ELEMENT = MULTIPLICITY_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__OWNER = MULTIPLICITY_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__OWNED_COMMENT = MULTIPLICITY_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Is Ordered</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__IS_ORDERED = MULTIPLICITY_ELEMENT__IS_ORDERED;
+
+	/**
+	 * The feature id for the '<em><b>Is Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__IS_UNIQUE = MULTIPLICITY_ELEMENT__IS_UNIQUE;
+
+	/**
+	 * The feature id for the '<em><b>Lower</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__LOWER = MULTIPLICITY_ELEMENT__LOWER;
+
+	/**
+	 * The feature id for the '<em><b>Upper</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__UPPER = MULTIPLICITY_ELEMENT__UPPER;
+
+	/**
+	 * The feature id for the '<em><b>Upper Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__UPPER_VALUE = MULTIPLICITY_ELEMENT__UPPER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Lower Value</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__LOWER_VALUE = MULTIPLICITY_ELEMENT__LOWER_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Defining End</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__DEFINING_END = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Role</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__ROLE = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Part With Port</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END__PART_WITH_PORT = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the the '<em>Connector End</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_END_FEATURE_COUNT = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__EANNOTATIONS = FEATURE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__OWNED_ELEMENT = FEATURE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__OWNER = FEATURE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__OWNED_COMMENT = FEATURE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__TEMPLATE_BINDING = FEATURE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__OWNED_TEMPLATE_SIGNATURE = FEATURE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__NAME = FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__QUALIFIED_NAME = FEATURE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__VISIBILITY = FEATURE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__CLIENT_DEPENDENCY = FEATURE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__NAME_EXPRESSION = FEATURE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__REDEFINITION_CONTEXT = FEATURE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__IS_LEAF = FEATURE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Featuring Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__FEATURING_CLASSIFIER = FEATURE__FEATURING_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Is Static</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__IS_STATIC = FEATURE__IS_STATIC;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__TYPE = FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Connector</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__REDEFINED_CONNECTOR = FEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>End</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__END = FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Kind</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__KIND = FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Contract</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR__CONTRACT = FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Connector</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTOR_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_ATTRIBUTE = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_OPERATION = CLASSIFIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Interface</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__REDEFINED_INTERFACE = CLASSIFIER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__NESTED_CLASSIFIER = CLASSIFIER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__OWNED_RECEPTION = CLASSIFIER_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Protocol</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE__PROTOCOL = CLASSIFIER_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the the '<em>Interface</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERFACE_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__EANNOTATIONS = REALIZATION__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__OWNED_ELEMENT = REALIZATION__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__OWNER = REALIZATION__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__OWNED_COMMENT = REALIZATION__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__TEMPLATE_BINDING = REALIZATION__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__OWNED_TEMPLATE_SIGNATURE = REALIZATION__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__NAME = REALIZATION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__QUALIFIED_NAME = REALIZATION__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__VISIBILITY = REALIZATION__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__CLIENT_DEPENDENCY = REALIZATION__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__NAME_EXPRESSION = REALIZATION__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__TEMPLATE_PARAMETER = REALIZATION__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__OWNING_PARAMETER = REALIZATION__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__PACKAGEABLE_ELEMENT_VISIBILITY = REALIZATION__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__RELATED_ELEMENT = REALIZATION__RELATED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__SOURCE = REALIZATION__SOURCE;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__TARGET = REALIZATION__TARGET;
+
+	/**
+	 * The feature id for the '<em><b>Client</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__CLIENT = REALIZATION__CLIENT;
+
+	/**
+	 * The feature id for the '<em><b>Supplier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__SUPPLIER = REALIZATION__SUPPLIER;
+
+	/**
+	 * The feature id for the '<em><b>Mapping</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__MAPPING = REALIZATION__MAPPING;
+
+	/**
+	 * The feature id for the '<em><b>Abstraction</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__ABSTRACTION = REALIZATION__ABSTRACTION;
+
+	/**
+	 * The feature id for the '<em><b>Realizing Classifier</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__REALIZING_CLASSIFIER = REALIZATION__REALIZING_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Contract</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__CONTRACT = REALIZATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Implementing Classifier</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION__IMPLEMENTING_CLASSIFIER = REALIZATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Implementation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLEMENTATION_FEATURE_COUNT = REALIZATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The number of structural features of the the '<em>Actor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTOR_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__OWNER = NAMED_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__RELATED_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__TARGET = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Extended Case</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__EXTENDED_CASE = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Extension</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__EXTENSION = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Condition</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__CONDITION = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Extension Location</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND__EXTENSION_LOCATION = NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the the '<em>Extend</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTEND_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__EANNOTATIONS = BEHAVIORED_CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_ELEMENT = BEHAVIORED_CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNER = BEHAVIORED_CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_COMMENT = BEHAVIORED_CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__TEMPLATE_BINDING = BEHAVIORED_CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_TEMPLATE_SIGNATURE = BEHAVIORED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__NAME = BEHAVIORED_CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__QUALIFIED_NAME = BEHAVIORED_CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__VISIBILITY = BEHAVIORED_CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__CLIENT_DEPENDENCY = BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__NAME_EXPRESSION = BEHAVIORED_CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__MEMBER = BEHAVIORED_CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_RULE = BEHAVIORED_CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__IMPORTED_MEMBER = BEHAVIORED_CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__ELEMENT_IMPORT = BEHAVIORED_CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__PACKAGE_IMPORT = BEHAVIORED_CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__TEMPLATE_PARAMETER = BEHAVIORED_CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNING_PARAMETER = BEHAVIORED_CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__PACKAGEABLE_ELEMENT_VISIBILITY = BEHAVIORED_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__PACKAGE = BEHAVIORED_CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__REDEFINITION_CONTEXT = BEHAVIORED_CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__IS_LEAF = BEHAVIORED_CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__FEATURE = BEHAVIORED_CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__IS_ABSTRACT = BEHAVIORED_CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__INHERITED_MEMBER = BEHAVIORED_CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__GENERAL = BEHAVIORED_CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__GENERALIZATION = BEHAVIORED_CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__ATTRIBUTE = BEHAVIORED_CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__REDEFINED_CLASSIFIER = BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__SUBSTITUTION = BEHAVIORED_CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_USE_CASE = BEHAVIORED_CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__REPRESENTATION = BEHAVIORED_CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OCCURRENCE = BEHAVIORED_CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_BEHAVIOR = BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__CLASSIFIER_BEHAVIOR = BEHAVIORED_CLASSIFIER__CLASSIFIER_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__IMPLEMENTATION = BEHAVIORED_CLASSIFIER__IMPLEMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__OWNED_STATE_MACHINE = BEHAVIORED_CLASSIFIER__OWNED_STATE_MACHINE;
+
+	/**
+	 * The feature id for the '<em><b>Include</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__INCLUDE = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Extend</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__EXTEND = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Extension Point</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__EXTENSION_POINT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Subject</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE__SUBJECT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the the '<em>Use Case</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USE_CASE_FEATURE_COUNT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__EANNOTATIONS = REDEFINABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__OWNED_ELEMENT = REDEFINABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__OWNER = REDEFINABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__OWNED_COMMENT = REDEFINABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__TEMPLATE_BINDING = REDEFINABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__OWNED_TEMPLATE_SIGNATURE = REDEFINABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__NAME = REDEFINABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__QUALIFIED_NAME = REDEFINABLE_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__VISIBILITY = REDEFINABLE_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__CLIENT_DEPENDENCY = REDEFINABLE_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__NAME_EXPRESSION = REDEFINABLE_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__REDEFINITION_CONTEXT = REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__IS_LEAF = REDEFINABLE_ELEMENT__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Use Case</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT__USE_CASE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Extension Point</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXTENSION_POINT_FEATURE_COUNT = REDEFINABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__OWNER = NAMED_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__RELATED_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__TARGET = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Including Case</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__INCLUDING_CASE = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Addition</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE__ADDITION = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Include</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INCLUDE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>File Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__FILE_NAME = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Nested Artifact</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__NESTED_ARTIFACT = CLASSIFIER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Manifestation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__MANIFESTATION = CLASSIFIER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_OPERATION = CLASSIFIER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT__OWNED_ATTRIBUTE = CLASSIFIER_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Artifact</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__EANNOTATIONS = ABSTRACTION__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__OWNED_ELEMENT = ABSTRACTION__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__OWNER = ABSTRACTION__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__OWNED_COMMENT = ABSTRACTION__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__TEMPLATE_BINDING = ABSTRACTION__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__OWNED_TEMPLATE_SIGNATURE = ABSTRACTION__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__NAME = ABSTRACTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__QUALIFIED_NAME = ABSTRACTION__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__VISIBILITY = ABSTRACTION__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__CLIENT_DEPENDENCY = ABSTRACTION__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__NAME_EXPRESSION = ABSTRACTION__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__TEMPLATE_PARAMETER = ABSTRACTION__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__OWNING_PARAMETER = ABSTRACTION__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__PACKAGEABLE_ELEMENT_VISIBILITY = ABSTRACTION__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__RELATED_ELEMENT = ABSTRACTION__RELATED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__SOURCE = ABSTRACTION__SOURCE;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__TARGET = ABSTRACTION__TARGET;
+
+	/**
+	 * The feature id for the '<em><b>Client</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__CLIENT = ABSTRACTION__CLIENT;
+
+	/**
+	 * The feature id for the '<em><b>Supplier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__SUPPLIER = ABSTRACTION__SUPPLIER;
+
+	/**
+	 * The feature id for the '<em><b>Mapping</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__MAPPING = ABSTRACTION__MAPPING;
+
+	/**
+	 * The feature id for the '<em><b>Utilized Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION__UTILIZED_ELEMENT = ABSTRACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Manifestation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANIFESTATION_FEATURE_COUNT = ABSTRACTION_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -19453,2634 +22081,6 @@
 	int VALUE_PIN_FEATURE_COUNT = INPUT_PIN_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_ATTRIBUTE = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_OPERATION = CLASSIFIER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Interface</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__REDEFINED_INTERFACE = CLASSIFIER_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__NESTED_CLASSIFIER = CLASSIFIER_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__OWNED_RECEPTION = CLASSIFIER_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Protocol</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE__PROTOCOL = CLASSIFIER_FEATURE_COUNT + 5;
-
-	/**
-	 * The number of structural features of the the '<em>Interface</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERFACE_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__EANNOTATIONS = REALIZATION__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__OWNED_ELEMENT = REALIZATION__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__OWNER = REALIZATION__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__OWNED_COMMENT = REALIZATION__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__TEMPLATE_BINDING = REALIZATION__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__OWNED_TEMPLATE_SIGNATURE = REALIZATION__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__NAME = REALIZATION__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__QUALIFIED_NAME = REALIZATION__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__VISIBILITY = REALIZATION__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__CLIENT_DEPENDENCY = REALIZATION__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__NAME_EXPRESSION = REALIZATION__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__TEMPLATE_PARAMETER = REALIZATION__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__OWNING_PARAMETER = REALIZATION__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__PACKAGEABLE_ELEMENT_VISIBILITY = REALIZATION__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__RELATED_ELEMENT = REALIZATION__RELATED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__SOURCE = REALIZATION__SOURCE;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__TARGET = REALIZATION__TARGET;
-
-	/**
-	 * The feature id for the '<em><b>Client</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__CLIENT = REALIZATION__CLIENT;
-
-	/**
-	 * The feature id for the '<em><b>Supplier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__SUPPLIER = REALIZATION__SUPPLIER;
-
-	/**
-	 * The feature id for the '<em><b>Mapping</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__MAPPING = REALIZATION__MAPPING;
-
-	/**
-	 * The feature id for the '<em><b>Abstraction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__ABSTRACTION = REALIZATION__ABSTRACTION;
-
-	/**
-	 * The feature id for the '<em><b>Realizing Classifier</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__REALIZING_CLASSIFIER = REALIZATION__REALIZING_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Contract</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__CONTRACT = REALIZATION_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Implementing Classifier</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION__IMPLEMENTING_CLASSIFIER = REALIZATION_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Implementation</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int IMPLEMENTATION_FEATURE_COUNT = REALIZATION_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The number of structural features of the the '<em>Actor</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ACTOR_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__OWNER = NAMED_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__NAME = NAMED_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__RELATED_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__TARGET = NAMED_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Extended Case</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__EXTENDED_CASE = NAMED_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Extension</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__EXTENSION = NAMED_ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Condition</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__CONDITION = NAMED_ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Extension Location</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND__EXTENSION_LOCATION = NAMED_ELEMENT_FEATURE_COUNT + 6;
-
-	/**
-	 * The number of structural features of the the '<em>Extend</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTEND_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 7;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__EANNOTATIONS = BEHAVIORED_CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_ELEMENT = BEHAVIORED_CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNER = BEHAVIORED_CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_COMMENT = BEHAVIORED_CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__TEMPLATE_BINDING = BEHAVIORED_CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_TEMPLATE_SIGNATURE = BEHAVIORED_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__NAME = BEHAVIORED_CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__QUALIFIED_NAME = BEHAVIORED_CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__VISIBILITY = BEHAVIORED_CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__CLIENT_DEPENDENCY = BEHAVIORED_CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__NAME_EXPRESSION = BEHAVIORED_CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__MEMBER = BEHAVIORED_CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_RULE = BEHAVIORED_CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__IMPORTED_MEMBER = BEHAVIORED_CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__ELEMENT_IMPORT = BEHAVIORED_CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__PACKAGE_IMPORT = BEHAVIORED_CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__TEMPLATE_PARAMETER = BEHAVIORED_CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNING_PARAMETER = BEHAVIORED_CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__PACKAGEABLE_ELEMENT_VISIBILITY = BEHAVIORED_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__PACKAGE = BEHAVIORED_CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__REDEFINITION_CONTEXT = BEHAVIORED_CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__IS_LEAF = BEHAVIORED_CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__FEATURE = BEHAVIORED_CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__IS_ABSTRACT = BEHAVIORED_CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__INHERITED_MEMBER = BEHAVIORED_CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__GENERAL = BEHAVIORED_CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__GENERALIZATION = BEHAVIORED_CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__ATTRIBUTE = BEHAVIORED_CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__REDEFINED_CLASSIFIER = BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__SUBSTITUTION = BEHAVIORED_CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_USE_CASE = BEHAVIORED_CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__REPRESENTATION = BEHAVIORED_CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OCCURRENCE = BEHAVIORED_CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_BEHAVIOR = BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__CLASSIFIER_BEHAVIOR = BEHAVIORED_CLASSIFIER__CLASSIFIER_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__IMPLEMENTATION = BEHAVIORED_CLASSIFIER__IMPLEMENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__OWNED_STATE_MACHINE = BEHAVIORED_CLASSIFIER__OWNED_STATE_MACHINE;
-
-	/**
-	 * The feature id for the '<em><b>Include</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__INCLUDE = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Extend</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__EXTEND = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Extension Point</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__EXTENSION_POINT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Subject</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE__SUBJECT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 3;
-
-	/**
-	 * The number of structural features of the the '<em>Use Case</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int USE_CASE_FEATURE_COUNT = BEHAVIORED_CLASSIFIER_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__EANNOTATIONS = REDEFINABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__OWNED_ELEMENT = REDEFINABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__OWNER = REDEFINABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__OWNED_COMMENT = REDEFINABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__TEMPLATE_BINDING = REDEFINABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__OWNED_TEMPLATE_SIGNATURE = REDEFINABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__NAME = REDEFINABLE_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__QUALIFIED_NAME = REDEFINABLE_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__VISIBILITY = REDEFINABLE_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__CLIENT_DEPENDENCY = REDEFINABLE_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__NAME_EXPRESSION = REDEFINABLE_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__REDEFINITION_CONTEXT = REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__IS_LEAF = REDEFINABLE_ELEMENT__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Use Case</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT__USE_CASE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Extension Point</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXTENSION_POINT_FEATURE_COUNT = REDEFINABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__OWNER = NAMED_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__NAME = NAMED_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__RELATED_ELEMENT = NAMED_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__SOURCE = NAMED_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__TARGET = NAMED_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Including Case</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__INCLUDING_CASE = NAMED_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Addition</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE__ADDITION = NAMED_ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Include</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INCLUDE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>File Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__FILE_NAME = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Nested Artifact</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__NESTED_ARTIFACT = CLASSIFIER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Manifestation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__MANIFESTATION = CLASSIFIER_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_OPERATION = CLASSIFIER_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT__OWNED_ATTRIBUTE = CLASSIFIER_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Artifact</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int ARTIFACT_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__EANNOTATIONS = ABSTRACTION__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__OWNED_ELEMENT = ABSTRACTION__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__OWNER = ABSTRACTION__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__OWNED_COMMENT = ABSTRACTION__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__TEMPLATE_BINDING = ABSTRACTION__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__OWNED_TEMPLATE_SIGNATURE = ABSTRACTION__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__NAME = ABSTRACTION__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__QUALIFIED_NAME = ABSTRACTION__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__VISIBILITY = ABSTRACTION__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__CLIENT_DEPENDENCY = ABSTRACTION__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__NAME_EXPRESSION = ABSTRACTION__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__TEMPLATE_PARAMETER = ABSTRACTION__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__OWNING_PARAMETER = ABSTRACTION__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__PACKAGEABLE_ELEMENT_VISIBILITY = ABSTRACTION__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__RELATED_ELEMENT = ABSTRACTION__RELATED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__SOURCE = ABSTRACTION__SOURCE;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__TARGET = ABSTRACTION__TARGET;
-
-	/**
-	 * The feature id for the '<em><b>Client</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__CLIENT = ABSTRACTION__CLIENT;
-
-	/**
-	 * The feature id for the '<em><b>Supplier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__SUPPLIER = ABSTRACTION__SUPPLIER;
-
-	/**
-	 * The feature id for the '<em><b>Mapping</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__MAPPING = ABSTRACTION__MAPPING;
-
-	/**
-	 * The feature id for the '<em><b>Utilized Element</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION__UTILIZED_ELEMENT = ABSTRACTION_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Manifestation</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int MANIFESTATION_FEATURE_COUNT = ABSTRACTION_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__EANNOTATIONS = MULTIPLICITY_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__OWNED_ELEMENT = MULTIPLICITY_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__OWNER = MULTIPLICITY_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__OWNED_COMMENT = MULTIPLICITY_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Is Ordered</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__IS_ORDERED = MULTIPLICITY_ELEMENT__IS_ORDERED;
-
-	/**
-	 * The feature id for the '<em><b>Is Unique</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__IS_UNIQUE = MULTIPLICITY_ELEMENT__IS_UNIQUE;
-
-	/**
-	 * The feature id for the '<em><b>Lower</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__LOWER = MULTIPLICITY_ELEMENT__LOWER;
-
-	/**
-	 * The feature id for the '<em><b>Upper</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__UPPER = MULTIPLICITY_ELEMENT__UPPER;
-
-	/**
-	 * The feature id for the '<em><b>Upper Value</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__UPPER_VALUE = MULTIPLICITY_ELEMENT__UPPER_VALUE;
-
-	/**
-	 * The feature id for the '<em><b>Lower Value</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__LOWER_VALUE = MULTIPLICITY_ELEMENT__LOWER_VALUE;
-
-	/**
-	 * The feature id for the '<em><b>Defining End</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__DEFINING_END = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Role</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__ROLE = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Part With Port</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END__PART_WITH_PORT = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The number of structural features of the the '<em>Connector End</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_END_FEATURE_COUNT = MULTIPLICITY_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__EANNOTATIONS = FEATURE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__OWNED_ELEMENT = FEATURE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__OWNER = FEATURE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__OWNED_COMMENT = FEATURE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__TEMPLATE_BINDING = FEATURE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__OWNED_TEMPLATE_SIGNATURE = FEATURE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__NAME = FEATURE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__QUALIFIED_NAME = FEATURE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__VISIBILITY = FEATURE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__CLIENT_DEPENDENCY = FEATURE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__NAME_EXPRESSION = FEATURE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__REDEFINITION_CONTEXT = FEATURE__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__IS_LEAF = FEATURE__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Featuring Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__FEATURING_CLASSIFIER = FEATURE__FEATURING_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Is Static</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__IS_STATIC = FEATURE__IS_STATIC;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__TYPE = FEATURE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Connector</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__REDEFINED_CONNECTOR = FEATURE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>End</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__END = FEATURE_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Kind</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__KIND = FEATURE_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Contract</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR__CONTRACT = FEATURE_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Connector</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTOR_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 5;
-
-	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TemplateSignatureImpl <em>Template Signature</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -22088,7 +22088,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateSignature()
 	 * @generated
 	 */
-	int TEMPLATE_SIGNATURE = 95;
+	int TEMPLATE_SIGNATURE = 121;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TemplateParameterImpl <em>Template Parameter</em>}' class.
@@ -22098,7 +22098,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateParameter()
 	 * @generated
 	 */
-	int TEMPLATE_PARAMETER = 96;
+	int TEMPLATE_PARAMETER = 122;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StringExpressionImpl <em>String Expression</em>}' class.
@@ -22108,7 +22108,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStringExpression()
 	 * @generated
 	 */
-	int STRING_EXPRESSION = 98;
+	int STRING_EXPRESSION = 124;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ParameterableElementImpl <em>Parameterable Element</em>}' class.
@@ -22118,7 +22118,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getParameterableElement()
 	 * @generated
 	 */
-	int PARAMETERABLE_ELEMENT = 99;
+	int PARAMETERABLE_ELEMENT = 125;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TemplateBindingImpl <em>Template Binding</em>}' class.
@@ -22128,7 +22128,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateBinding()
 	 * @generated
 	 */
-	int TEMPLATE_BINDING = 100;
+	int TEMPLATE_BINDING = 126;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl <em>Template Parameter Substitution</em>}' class.
@@ -22138,7 +22138,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateParameterSubstitution()
 	 * @generated
 	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION = 101;
+	int TEMPLATE_PARAMETER_SUBSTITUTION = 127;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CollaborationImpl <em>Collaboration</em>}' class.
@@ -22158,7 +22158,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getOperationTemplateParameter()
 	 * @generated
 	 */
-	int OPERATION_TEMPLATE_PARAMETER = 102;
+	int OPERATION_TEMPLATE_PARAMETER = 128;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClassifierTemplateParameterImpl <em>Classifier Template Parameter</em>}' class.
@@ -22168,7 +22168,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClassifierTemplateParameter()
 	 * @generated
 	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER = 103;
+	int CLASSIFIER_TEMPLATE_PARAMETER = 129;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ParameterableClassifierImpl <em>Parameterable Classifier</em>}' class.
@@ -22178,7 +22178,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getParameterableClassifier()
 	 * @generated
 	 */
-	int PARAMETERABLE_CLASSIFIER = 104;
+	int PARAMETERABLE_CLASSIFIER = 130;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RedefinableTemplateSignatureImpl <em>Redefinable Template Signature</em>}' class.
@@ -22188,7 +22188,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRedefinableTemplateSignature()
 	 * @generated
 	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE = 105;
+	int REDEFINABLE_TEMPLATE_SIGNATURE = 131;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TemplateableClassifierImpl <em>Templateable Classifier</em>}' class.
@@ -22198,7 +22198,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTemplateableClassifier()
 	 * @generated
 	 */
-	int TEMPLATEABLE_CLASSIFIER = 106;
+	int TEMPLATEABLE_CLASSIFIER = 132;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConnectableElementTemplateParameterImpl <em>Connectable Element Template Parameter</em>}' class.
@@ -22208,7 +22208,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnectableElementTemplateParameter()
 	 * @generated
 	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER = 107;
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER = 133;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ForkNodeImpl <em>Fork Node</em>}' class.
@@ -22218,7 +22218,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getForkNode()
 	 * @generated
 	 */
-	int FORK_NODE = 182;
+	int FORK_NODE = 142;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.JoinNodeImpl <em>Join Node</em>}' class.
@@ -22228,7 +22228,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getJoinNode()
 	 * @generated
 	 */
-	int JOIN_NODE = 183;
+	int JOIN_NODE = 143;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.FlowFinalNodeImpl <em>Flow Final Node</em>}' class.
@@ -22238,7 +22238,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getFlowFinalNode()
 	 * @generated
 	 */
-	int FLOW_FINAL_NODE = 184;
+	int FLOW_FINAL_NODE = 144;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CentralBufferNodeImpl <em>Central Buffer Node</em>}' class.
@@ -22248,7 +22248,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCentralBufferNode()
 	 * @generated
 	 */
-	int CENTRAL_BUFFER_NODE = 185;
+	int CENTRAL_BUFFER_NODE = 145;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ActivityPartitionImpl <em>Activity Partition</em>}' class.
@@ -22258,7 +22258,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getActivityPartition()
 	 * @generated
 	 */
-	int ACTIVITY_PARTITION = 186;
+	int ACTIVITY_PARTITION = 146;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PortImpl <em>Port</em>}' class.
@@ -22268,7 +22268,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPort()
 	 * @generated
 	 */
-	int PORT = 123;
+	int PORT = 105;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExpansionNodeImpl <em>Expansion Node</em>}' class.
@@ -22308,7 +22308,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteraction()
 	 * @generated
 	 */
-	int INTERACTION = 108;
+	int INTERACTION = 95;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InteractionFragmentImpl <em>Interaction Fragment</em>}' class.
@@ -22318,7 +22318,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteractionFragment()
 	 * @generated
 	 */
-	int INTERACTION_FRAGMENT = 109;
+	int INTERACTION_FRAGMENT = 96;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LifelineImpl <em>Lifeline</em>}' class.
@@ -22328,7 +22328,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getLifeline()
 	 * @generated
 	 */
-	int LIFELINE = 110;
+	int LIFELINE = 97;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.MessageImpl <em>Message</em>}' class.
@@ -22338,7 +22338,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getMessage()
 	 * @generated
 	 */
-	int MESSAGE = 111;
+	int MESSAGE = 98;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.GeneralOrderingImpl <em>General Ordering</em>}' class.
@@ -22348,7 +22348,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getGeneralOrdering()
 	 * @generated
 	 */
-	int GENERAL_ORDERING = 112;
+	int GENERAL_ORDERING = 99;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.MessageEndImpl <em>Message End</em>}' class.
@@ -22358,7 +22358,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getMessageEnd()
 	 * @generated
 	 */
-	int MESSAGE_END = 113;
+	int MESSAGE_END = 100;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.EventOccurrenceImpl <em>Event Occurrence</em>}' class.
@@ -22368,7 +22368,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getEventOccurrence()
 	 * @generated
 	 */
-	int EVENT_OCCURRENCE = 114;
+	int EVENT_OCCURRENCE = 101;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExecutionOccurrenceImpl <em>Execution Occurrence</em>}' class.
@@ -22378,7 +22378,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExecutionOccurrence()
 	 * @generated
 	 */
-	int EXECUTION_OCCURRENCE = 115;
+	int EXECUTION_OCCURRENCE = 102;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StateInvariantImpl <em>State Invariant</em>}' class.
@@ -22388,7 +22388,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStateInvariant()
 	 * @generated
 	 */
-	int STATE_INVARIANT = 116;
+	int STATE_INVARIANT = 103;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StopImpl <em>Stop</em>}' class.
@@ -22398,7 +22398,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStop()
 	 * @generated
 	 */
-	int STOP = 117;
+	int STOP = 104;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CollaborationOccurrenceImpl <em>Collaboration Occurrence</em>}' class.
@@ -22418,7 +22418,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCreateObjectAction()
 	 * @generated
 	 */
-	int CREATE_OBJECT_ACTION = 149;
+	int CREATE_OBJECT_ACTION = 147;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DestroyObjectActionImpl <em>Destroy Object Action</em>}' class.
@@ -22428,7 +22428,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDestroyObjectAction()
 	 * @generated
 	 */
-	int DESTROY_OBJECT_ACTION = 150;
+	int DESTROY_OBJECT_ACTION = 148;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TestIdentityActionImpl <em>Test Identity Action</em>}' class.
@@ -22438,7 +22438,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTestIdentityAction()
 	 * @generated
 	 */
-	int TEST_IDENTITY_ACTION = 151;
+	int TEST_IDENTITY_ACTION = 149;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadSelfActionImpl <em>Read Self Action</em>}' class.
@@ -22448,7 +22448,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadSelfAction()
 	 * @generated
 	 */
-	int READ_SELF_ACTION = 152;
+	int READ_SELF_ACTION = 150;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StructuralFeatureActionImpl <em>Structural Feature Action</em>}' class.
@@ -22458,7 +22458,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStructuralFeatureAction()
 	 * @generated
 	 */
-	int STRUCTURAL_FEATURE_ACTION = 153;
+	int STRUCTURAL_FEATURE_ACTION = 151;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadStructuralFeatureActionImpl <em>Read Structural Feature Action</em>}' class.
@@ -22468,7 +22468,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadStructuralFeatureAction()
 	 * @generated
 	 */
-	int READ_STRUCTURAL_FEATURE_ACTION = 154;
+	int READ_STRUCTURAL_FEATURE_ACTION = 152;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.WriteStructuralFeatureActionImpl <em>Write Structural Feature Action</em>}' class.
@@ -22478,7 +22478,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getWriteStructuralFeatureAction()
 	 * @generated
 	 */
-	int WRITE_STRUCTURAL_FEATURE_ACTION = 155;
+	int WRITE_STRUCTURAL_FEATURE_ACTION = 153;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClearStructuralFeatureActionImpl <em>Clear Structural Feature Action</em>}' class.
@@ -22488,7 +22488,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClearStructuralFeatureAction()
 	 * @generated
 	 */
-	int CLEAR_STRUCTURAL_FEATURE_ACTION = 156;
+	int CLEAR_STRUCTURAL_FEATURE_ACTION = 154;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RemoveStructuralFeatureValueActionImpl <em>Remove Structural Feature Value Action</em>}' class.
@@ -22498,7 +22498,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRemoveStructuralFeatureValueAction()
 	 * @generated
 	 */
-	int REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION = 157;
+	int REMOVE_STRUCTURAL_FEATURE_VALUE_ACTION = 155;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AddStructuralFeatureValueActionImpl <em>Add Structural Feature Value Action</em>}' class.
@@ -22508,7 +22508,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAddStructuralFeatureValueAction()
 	 * @generated
 	 */
-	int ADD_STRUCTURAL_FEATURE_VALUE_ACTION = 158;
+	int ADD_STRUCTURAL_FEATURE_VALUE_ACTION = 156;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LinkActionImpl <em>Link Action</em>}' class.
@@ -22518,7 +22518,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getLinkAction()
 	 * @generated
 	 */
-	int LINK_ACTION = 159;
+	int LINK_ACTION = 157;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LinkEndDataImpl <em>Link End Data</em>}' class.
@@ -22528,7 +22528,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getLinkEndData()
 	 * @generated
 	 */
-	int LINK_END_DATA = 160;
+	int LINK_END_DATA = 158;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadLinkActionImpl <em>Read Link Action</em>}' class.
@@ -22538,7 +22538,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadLinkAction()
 	 * @generated
 	 */
-	int READ_LINK_ACTION = 161;
+	int READ_LINK_ACTION = 159;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.LinkEndCreationDataImpl <em>Link End Creation Data</em>}' class.
@@ -22548,7 +22548,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getLinkEndCreationData()
 	 * @generated
 	 */
-	int LINK_END_CREATION_DATA = 162;
+	int LINK_END_CREATION_DATA = 160;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.WriteLinkActionImpl <em>Write Link Action</em>}' class.
@@ -22558,7 +22558,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getWriteLinkAction()
 	 * @generated
 	 */
-	int WRITE_LINK_ACTION = 164;
+	int WRITE_LINK_ACTION = 162;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CreateLinkActionImpl <em>Create Link Action</em>}' class.
@@ -22568,7 +22568,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCreateLinkAction()
 	 * @generated
 	 */
-	int CREATE_LINK_ACTION = 163;
+	int CREATE_LINK_ACTION = 161;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DestroyLinkActionImpl <em>Destroy Link Action</em>}' class.
@@ -22578,7 +22578,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDestroyLinkAction()
 	 * @generated
 	 */
-	int DESTROY_LINK_ACTION = 165;
+	int DESTROY_LINK_ACTION = 163;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClearAssociationActionImpl <em>Clear Association Action</em>}' class.
@@ -22588,7 +22588,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClearAssociationAction()
 	 * @generated
 	 */
-	int CLEAR_ASSOCIATION_ACTION = 166;
+	int CLEAR_ASSOCIATION_ACTION = 164;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.VariableActionImpl <em>Variable Action</em>}' class.
@@ -22598,7 +22598,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getVariableAction()
 	 * @generated
 	 */
-	int VARIABLE_ACTION = 167;
+	int VARIABLE_ACTION = 165;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadVariableActionImpl <em>Read Variable Action</em>}' class.
@@ -22608,7 +22608,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadVariableAction()
 	 * @generated
 	 */
-	int READ_VARIABLE_ACTION = 168;
+	int READ_VARIABLE_ACTION = 166;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.WriteVariableActionImpl <em>Write Variable Action</em>}' class.
@@ -22618,7 +22618,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getWriteVariableAction()
 	 * @generated
 	 */
-	int WRITE_VARIABLE_ACTION = 169;
+	int WRITE_VARIABLE_ACTION = 167;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ClearVariableActionImpl <em>Clear Variable Action</em>}' class.
@@ -22628,7 +22628,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getClearVariableAction()
 	 * @generated
 	 */
-	int CLEAR_VARIABLE_ACTION = 170;
+	int CLEAR_VARIABLE_ACTION = 168;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AddVariableValueActionImpl <em>Add Variable Value Action</em>}' class.
@@ -22638,7 +22638,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAddVariableValueAction()
 	 * @generated
 	 */
-	int ADD_VARIABLE_VALUE_ACTION = 171;
+	int ADD_VARIABLE_VALUE_ACTION = 169;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RemoveVariableValueActionImpl <em>Remove Variable Value Action</em>}' class.
@@ -22648,7 +22648,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRemoveVariableValueAction()
 	 * @generated
 	 */
-	int REMOVE_VARIABLE_VALUE_ACTION = 172;
+	int REMOVE_VARIABLE_VALUE_ACTION = 170;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ApplyFunctionActionImpl <em>Apply Function Action</em>}' class.
@@ -22658,7 +22658,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getApplyFunctionAction()
 	 * @generated
 	 */
-	int APPLY_FUNCTION_ACTION = 173;
+	int APPLY_FUNCTION_ACTION = 171;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PrimitiveFunctionImpl <em>Primitive Function</em>}' class.
@@ -22668,7 +22668,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPrimitiveFunction()
 	 * @generated
 	 */
-	int PRIMITIVE_FUNCTION = 174;
+	int PRIMITIVE_FUNCTION = 172;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InvocationActionImpl <em>Invocation Action</em>}' class.
@@ -22678,7 +22678,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInvocationAction()
 	 * @generated
 	 */
-	int INVOCATION_ACTION = 176;
+	int INVOCATION_ACTION = 174;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CallActionImpl <em>Call Action</em>}' class.
@@ -22688,7 +22688,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCallAction()
 	 * @generated
 	 */
-	int CALL_ACTION = 175;
+	int CALL_ACTION = 173;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.SendSignalActionImpl <em>Send Signal Action</em>}' class.
@@ -22698,7 +22698,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSendSignalAction()
 	 * @generated
 	 */
-	int SEND_SIGNAL_ACTION = 177;
+	int SEND_SIGNAL_ACTION = 175;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.BroadcastSignalActionImpl <em>Broadcast Signal Action</em>}' class.
@@ -22708,7 +22708,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getBroadcastSignalAction()
 	 * @generated
 	 */
-	int BROADCAST_SIGNAL_ACTION = 178;
+	int BROADCAST_SIGNAL_ACTION = 176;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.SendObjectActionImpl <em>Send Object Action</em>}' class.
@@ -22718,7 +22718,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getSendObjectAction()
 	 * @generated
 	 */
-	int SEND_OBJECT_ACTION = 179;
+	int SEND_OBJECT_ACTION = 177;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CallOperationActionImpl <em>Call Operation Action</em>}' class.
@@ -22728,7 +22728,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCallOperationAction()
 	 * @generated
 	 */
-	int CALL_OPERATION_ACTION = 180;
+	int CALL_OPERATION_ACTION = 178;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CallBehaviorActionImpl <em>Call Behavior Action</em>}' class.
@@ -22738,7 +22738,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCallBehaviorAction()
 	 * @generated
 	 */
-	int CALL_BEHAVIOR_ACTION = 181;
+	int CALL_BEHAVIOR_ACTION = 179;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StateMachineImpl <em>State Machine</em>}' class.
@@ -22748,7 +22748,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStateMachine()
 	 * @generated
 	 */
-	int STATE_MACHINE = 141;
+	int STATE_MACHINE = 134;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RegionImpl <em>Region</em>}' class.
@@ -22758,7 +22758,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRegion()
 	 * @generated
 	 */
-	int REGION = 142;
+	int REGION = 135;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.VertexImpl <em>Vertex</em>}' class.
@@ -22768,7 +22768,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getVertex()
 	 * @generated
 	 */
-	int VERTEX = 145;
+	int VERTEX = 138;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PseudostateImpl <em>Pseudostate</em>}' class.
@@ -22778,7 +22778,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPseudostate()
 	 * @generated
 	 */
-	int PSEUDOSTATE = 143;
+	int PSEUDOSTATE = 136;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StateImpl <em>State</em>}' class.
@@ -22788,7 +22788,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getState()
 	 * @generated
 	 */
-	int STATE = 144;
+	int STATE = 137;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ConnectionPointReferenceImpl <em>Connection Point Reference</em>}' class.
@@ -22798,7 +22798,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnectionPointReference()
 	 * @generated
 	 */
-	int CONNECTION_POINT_REFERENCE = 146;
+	int CONNECTION_POINT_REFERENCE = 139;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TransitionImpl <em>Transition</em>}' class.
@@ -22808,7 +22808,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTransition()
 	 * @generated
 	 */
-	int TRANSITION = 147;
+	int TRANSITION = 140;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.FinalStateImpl <em>Final State</em>}' class.
@@ -22818,7 +22818,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getFinalState()
 	 * @generated
 	 */
-	int FINAL_STATE = 148;
+	int FINAL_STATE = 141;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -23208,15 +23208,6 @@
 	int COLLABORATION__REDEFINED_CLASSIFIER = BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COLLABORATION__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -23226,6 +23217,15 @@
 	int COLLABORATION__SUBSTITUTION = BEHAVIORED_CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COLLABORATION__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -23349,1590 +23349,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int TEMPLATE_SIGNATURE__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__PARAMETER = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parameter</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__OWNED_PARAMETER = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Nested Signature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__NESTED_SIGNATURE = ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Nesting Signature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__NESTING_SIGNATURE = ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Template</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE__TEMPLATE = ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Template Signature</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_SIGNATURE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Signature</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__SIGNATURE = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Default</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__DEFAULT = ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER__OWNED_DEFAULT = ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Template Parameter</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__EANNOTATIONS = TEMPLATEABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__OWNED_ELEMENT = TEMPLATEABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__OWNER = TEMPLATEABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__OWNED_COMMENT = TEMPLATEABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__TEMPLATE_BINDING = TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__OWNED_TEMPLATE_SIGNATURE = TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Sub Expression</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__SUB_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owning Expression</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION__OWNING_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>String Expression</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRING_EXPRESSION_FEATURE_COUNT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__TEMPLATE_PARAMETER = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT__OWNING_PARAMETER = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Parameterable Element</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_ELEMENT_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__EANNOTATIONS = DIRECTED_RELATIONSHIP__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__OWNED_ELEMENT = DIRECTED_RELATIONSHIP__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__OWNER = DIRECTED_RELATIONSHIP__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__OWNED_COMMENT = DIRECTED_RELATIONSHIP__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__RELATED_ELEMENT = DIRECTED_RELATIONSHIP__RELATED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Source</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__SOURCE = DIRECTED_RELATIONSHIP__SOURCE;
-
-	/**
-	 * The feature id for the '<em><b>Target</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__TARGET = DIRECTED_RELATIONSHIP__TARGET;
-
-	/**
-	 * The feature id for the '<em><b>Bound Element</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__BOUND_ELEMENT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Signature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__SIGNATURE = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING__PARAMETER_SUBSTITUTION = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 2;
-
-	/**
-	 * The number of structural features of the the '<em>Template Binding</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_BINDING_FEATURE_COUNT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Formal</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__FORMAL = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Actual</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL = ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Owned Actual</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL = ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The number of structural features of the the '<em>Template Parameter Substitution</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATE_PARAMETER_SUBSTITUTION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Signature</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Default</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
-
-	/**
-	 * The number of structural features of the the '<em>Operation Template Parameter</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Signature</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Default</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
-
-	/**
-	 * The feature id for the '<em><b>Allow Substitutable</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER__ALLOW_SUBSTITUTABLE = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Classifier Template Parameter</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLASSIFIER_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The number of structural features of the the '<em>Parameterable Classifier</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETERABLE_CLASSIFIER_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS = REDEFINABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_ELEMENT = REDEFINABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNER = REDEFINABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_COMMENT = REDEFINABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE_BINDING = REDEFINABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_TEMPLATE_SIGNATURE = REDEFINABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__NAME = REDEFINABLE_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__QUALIFIED_NAME = REDEFINABLE_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__VISIBILITY = REDEFINABLE_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__CLIENT_DEPENDENCY = REDEFINABLE_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__NAME_EXPRESSION = REDEFINABLE_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINITION_CONTEXT = REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__IS_LEAF = REDEFINABLE_ELEMENT__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__PARAMETER = REDEFINABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parameter</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER = REDEFINABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Nested Signature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__NESTED_SIGNATURE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Nesting Signature</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__NESTING_SIGNATURE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Template</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Redefinable Template Signature</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int REDEFINABLE_TEMPLATE_SIGNATURE_FEATURE_COUNT = REDEFINABLE_ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNER = CLASSIFIER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__NAME = CLASSIFIER__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__VISIBILITY = CLASSIFIER__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__MEMBER = CLASSIFIER__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNED_RULE = CLASSIFIER__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__PACKAGE = CLASSIFIER__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__IS_LEAF = CLASSIFIER__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__FEATURE = CLASSIFIER__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__GENERAL = CLASSIFIER__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__GENERALIZATION = CLASSIFIER__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__REPRESENTATION = CLASSIFIER__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER__OCCURRENCE = CLASSIFIER__OCCURRENCE;
-
-	/**
-	 * The number of structural features of the the '<em>Templateable Classifier</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TEMPLATEABLE_CLASSIFIER_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Signature</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Default</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
-
-	/**
-	 * The number of structural features of the the '<em>Connectable Element Template Parameter</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int INTERACTION__EANNOTATIONS = BEHAVIOR__EANNOTATIONS;
 
 	/**
@@ -25188,15 +23604,6 @@
 	int INTERACTION__REDEFINED_CLASSIFIER = BEHAVIOR__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -25206,6 +23613,15 @@
 	int INTERACTION__SUBSTITUTION = BEHAVIOR__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERACTION__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -26985,1455 +25401,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int VARIABLE__EANNOTATIONS = CONNECTABLE_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__OWNED_ELEMENT = CONNECTABLE_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__OWNER = CONNECTABLE_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__OWNED_COMMENT = CONNECTABLE_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__TEMPLATE_BINDING = CONNECTABLE_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__OWNED_TEMPLATE_SIGNATURE = CONNECTABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__NAME = CONNECTABLE_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__QUALIFIED_NAME = CONNECTABLE_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__VISIBILITY = CONNECTABLE_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__CLIENT_DEPENDENCY = CONNECTABLE_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__NAME_EXPRESSION = CONNECTABLE_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__TEMPLATE_PARAMETER = CONNECTABLE_ELEMENT__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__OWNING_PARAMETER = CONNECTABLE_ELEMENT__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>End</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__END = CONNECTABLE_ELEMENT__END;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__TYPE = CONNECTABLE_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Scope</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE__SCOPE = CONNECTABLE_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Variable</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int VARIABLE_FEATURE_COUNT = CONNECTABLE_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__EANNOTATIONS = ACTION__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT = ACTION__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OWNER = ACTION__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT = ACTION__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING = ACTION__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE = ACTION__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__NAME = ACTION__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME = ACTION__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__VISIBILITY = ACTION__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY = ACTION__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION = ACTION__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT = ACTION__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IS_LEAF = ACTION__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OUTGOING = ACTION__OUTGOING;
-
-	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__INCOMING = ACTION__INCOMING;
-
-	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IN_GROUP = ACTION__IN_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__ACTIVITY = ACTION__ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT = ACTION__REDEFINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE = ACTION__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IN_PARTITION = ACTION__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION = ACTION__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__HANDLER = ACTION__HANDLER;
-
-	/**
-	 * The feature id for the '<em><b>Effect</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__EFFECT = ACTION__EFFECT;
-
-	/**
-	 * The feature id for the '<em><b>Output</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OUTPUT = ACTION__OUTPUT;
-
-	/**
-	 * The feature id for the '<em><b>Input</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__INPUT = ACTION__INPUT;
-
-	/**
-	 * The feature id for the '<em><b>Context</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__CONTEXT = ACTION__CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION = ACTION__LOCAL_PRECONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION = ACTION__LOCAL_POSTCONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__MEMBER = ACTION_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__OWNED_RULE = ACTION_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER = ACTION_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT = ACTION_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT = ACTION_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Super Group</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__SUPER_GROUP = ACTION_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY = ACTION_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__VARIABLE = ACTION_FEATURE_COUNT + 7;
-
-	/**
-	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE = ACTION_FEATURE_COUNT + 8;
-
-	/**
-	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE = ACTION_FEATURE_COUNT + 9;
-
-	/**
-	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE = ACTION_FEATURE_COUNT + 10;
-
-	/**
-	 * The number of structural features of the the '<em>Structured Activity Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT = ACTION_FEATURE_COUNT + 11;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__EANNOTATIONS = STRUCTURED_ACTIVITY_NODE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OWNED_ELEMENT = STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OWNER = STRUCTURED_ACTIVITY_NODE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OWNED_COMMENT = STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__TEMPLATE_BINDING = STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OWNED_TEMPLATE_SIGNATURE = STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__NAME = STRUCTURED_ACTIVITY_NODE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__QUALIFIED_NAME = STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__VISIBILITY = STRUCTURED_ACTIVITY_NODE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__CLIENT_DEPENDENCY = STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__NAME_EXPRESSION = STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__REDEFINITION_CONTEXT = STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IS_LEAF = STRUCTURED_ACTIVITY_NODE__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OUTGOING = STRUCTURED_ACTIVITY_NODE__OUTGOING;
-
-	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__INCOMING = STRUCTURED_ACTIVITY_NODE__INCOMING;
-
-	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IN_GROUP = STRUCTURED_ACTIVITY_NODE__IN_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__REDEFINED_ELEMENT = STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IN_STRUCTURED_NODE = STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IN_PARTITION = STRUCTURED_ACTIVITY_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IN_INTERRUPTIBLE_REGION = STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__HANDLER = STRUCTURED_ACTIVITY_NODE__HANDLER;
-
-	/**
-	 * The feature id for the '<em><b>Effect</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__EFFECT = STRUCTURED_ACTIVITY_NODE__EFFECT;
-
-	/**
-	 * The feature id for the '<em><b>Output</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OUTPUT = STRUCTURED_ACTIVITY_NODE__OUTPUT;
-
-	/**
-	 * The feature id for the '<em><b>Input</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__INPUT = STRUCTURED_ACTIVITY_NODE__INPUT;
-
-	/**
-	 * The feature id for the '<em><b>Context</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__CONTEXT = STRUCTURED_ACTIVITY_NODE__CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__LOCAL_PRECONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__LOCAL_POSTCONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__MEMBER = STRUCTURED_ACTIVITY_NODE__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__OWNED_RULE = STRUCTURED_ACTIVITY_NODE__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IMPORTED_MEMBER = STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__ELEMENT_IMPORT = STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__PACKAGE_IMPORT = STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Super Group</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__SUPER_GROUP = STRUCTURED_ACTIVITY_NODE__SUPER_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__ACTIVITY_GROUP_ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__VARIABLE = STRUCTURED_ACTIVITY_NODE__VARIABLE;
-
-	/**
-	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__CONTAINED_NODE = STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__CONTAINED_EDGE = STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE;
-
-	/**
-	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__MUST_ISOLATE = STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE;
-
-	/**
-	 * The feature id for the '<em><b>Is Determinate</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IS_DETERMINATE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Is Assured</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__IS_ASSURED = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Clause</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__CLAUSE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Result</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE__RESULT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 3;
-
-	/**
-	 * The number of structural features of the the '<em>Conditional Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONDITIONAL_NODE_FEATURE_COUNT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__EANNOTATIONS = ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__OWNER = ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Test</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__TEST = ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Body</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__BODY = ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Predecessor Clause</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__PREDECESSOR_CLAUSE = ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Successor Clause</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__SUCCESSOR_CLAUSE = ELEMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Decider</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__DECIDER = ELEMENT_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Body Output</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE__BODY_OUTPUT = ELEMENT_FEATURE_COUNT + 5;
-
-	/**
-	 * The number of structural features of the the '<em>Clause</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CLAUSE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__EANNOTATIONS = STRUCTURED_ACTIVITY_NODE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OWNED_ELEMENT = STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OWNER = STRUCTURED_ACTIVITY_NODE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OWNED_COMMENT = STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__TEMPLATE_BINDING = STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OWNED_TEMPLATE_SIGNATURE = STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__NAME = STRUCTURED_ACTIVITY_NODE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__QUALIFIED_NAME = STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__VISIBILITY = STRUCTURED_ACTIVITY_NODE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__CLIENT_DEPENDENCY = STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__NAME_EXPRESSION = STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__REDEFINITION_CONTEXT = STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IS_LEAF = STRUCTURED_ACTIVITY_NODE__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OUTGOING = STRUCTURED_ACTIVITY_NODE__OUTGOING;
-
-	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__INCOMING = STRUCTURED_ACTIVITY_NODE__INCOMING;
-
-	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IN_GROUP = STRUCTURED_ACTIVITY_NODE__IN_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__REDEFINED_ELEMENT = STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IN_STRUCTURED_NODE = STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IN_PARTITION = STRUCTURED_ACTIVITY_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IN_INTERRUPTIBLE_REGION = STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__HANDLER = STRUCTURED_ACTIVITY_NODE__HANDLER;
-
-	/**
-	 * The feature id for the '<em><b>Effect</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__EFFECT = STRUCTURED_ACTIVITY_NODE__EFFECT;
-
-	/**
-	 * The feature id for the '<em><b>Output</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OUTPUT = STRUCTURED_ACTIVITY_NODE__OUTPUT;
-
-	/**
-	 * The feature id for the '<em><b>Input</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__INPUT = STRUCTURED_ACTIVITY_NODE__INPUT;
-
-	/**
-	 * The feature id for the '<em><b>Context</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__CONTEXT = STRUCTURED_ACTIVITY_NODE__CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__LOCAL_PRECONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__LOCAL_POSTCONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__MEMBER = STRUCTURED_ACTIVITY_NODE__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__OWNED_RULE = STRUCTURED_ACTIVITY_NODE__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IMPORTED_MEMBER = STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__ELEMENT_IMPORT = STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__PACKAGE_IMPORT = STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Super Group</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__SUPER_GROUP = STRUCTURED_ACTIVITY_NODE__SUPER_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__ACTIVITY_GROUP_ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__VARIABLE = STRUCTURED_ACTIVITY_NODE__VARIABLE;
-
-	/**
-	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__CONTAINED_NODE = STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__CONTAINED_EDGE = STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE;
-
-	/**
-	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__MUST_ISOLATE = STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE;
-
-	/**
-	 * The feature id for the '<em><b>Is Tested First</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__IS_TESTED_FIRST = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Body Part</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__BODY_PART = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Setup Part</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__SETUP_PART = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Decider</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__DECIDER = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Test</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__TEST = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Result</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__RESULT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>Loop Variable</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__LOOP_VARIABLE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>Body Output</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__BODY_OUTPUT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 7;
-
-	/**
-	 * The feature id for the '<em><b>Loop Variable Input</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE__LOOP_VARIABLE_INPUT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 8;
-
-	/**
-	 * The number of structural features of the the '<em>Loop Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int LOOP_NODE_FEATURE_COUNT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 9;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int PORT__EANNOTATIONS = PROPERTY__EANNOTATIONS;
 
 	/**
@@ -29994,15 +26961,6 @@
 	int SIGNAL__REDEFINED_CLASSIFIER = BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int SIGNAL__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -30012,6 +26970,15 @@
 	int SIGNAL__SUBSTITUTION = BEHAVIORED_CLASSIFIER__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGNAL__POWERTYPE_EXTENT = BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -30552,6 +27519,3039 @@
 	int ANY_TRIGGER_FEATURE_COUNT = MESSAGE_TRIGGER_FEATURE_COUNT + 0;
 
 	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__EANNOTATIONS = CONNECTABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__OWNED_ELEMENT = CONNECTABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__OWNER = CONNECTABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__OWNED_COMMENT = CONNECTABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__TEMPLATE_BINDING = CONNECTABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__OWNED_TEMPLATE_SIGNATURE = CONNECTABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__NAME = CONNECTABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__QUALIFIED_NAME = CONNECTABLE_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__VISIBILITY = CONNECTABLE_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__CLIENT_DEPENDENCY = CONNECTABLE_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__NAME_EXPRESSION = CONNECTABLE_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__TEMPLATE_PARAMETER = CONNECTABLE_ELEMENT__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__OWNING_PARAMETER = CONNECTABLE_ELEMENT__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>End</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__END = CONNECTABLE_ELEMENT__END;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__TYPE = CONNECTABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Scope</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE__SCOPE = CONNECTABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Variable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIABLE_FEATURE_COUNT = CONNECTABLE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__EANNOTATIONS = ACTION__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT = ACTION__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OWNER = ACTION__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT = ACTION__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING = ACTION__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE = ACTION__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__NAME = ACTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME = ACTION__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__VISIBILITY = ACTION__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY = ACTION__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION = ACTION__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT = ACTION__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IS_LEAF = ACTION__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OUTGOING = ACTION__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__INCOMING = ACTION__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IN_GROUP = ACTION__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__ACTIVITY = ACTION__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT = ACTION__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE = ACTION__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IN_PARTITION = ACTION__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION = ACTION__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__HANDLER = ACTION__HANDLER;
+
+	/**
+	 * The feature id for the '<em><b>Effect</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__EFFECT = ACTION__EFFECT;
+
+	/**
+	 * The feature id for the '<em><b>Output</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OUTPUT = ACTION__OUTPUT;
+
+	/**
+	 * The feature id for the '<em><b>Input</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__INPUT = ACTION__INPUT;
+
+	/**
+	 * The feature id for the '<em><b>Context</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__CONTEXT = ACTION__CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION = ACTION__LOCAL_PRECONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION = ACTION__LOCAL_POSTCONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__MEMBER = ACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__OWNED_RULE = ACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER = ACTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT = ACTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT = ACTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__SUPER_GROUP = ACTION_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY = ACTION_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__VARIABLE = ACTION_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE = ACTION_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE = ACTION_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE = ACTION_FEATURE_COUNT + 10;
+
+	/**
+	 * The number of structural features of the the '<em>Structured Activity Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT = ACTION_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__EANNOTATIONS = STRUCTURED_ACTIVITY_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OWNED_ELEMENT = STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OWNER = STRUCTURED_ACTIVITY_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OWNED_COMMENT = STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__TEMPLATE_BINDING = STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OWNED_TEMPLATE_SIGNATURE = STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__NAME = STRUCTURED_ACTIVITY_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__QUALIFIED_NAME = STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__VISIBILITY = STRUCTURED_ACTIVITY_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__CLIENT_DEPENDENCY = STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__NAME_EXPRESSION = STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__REDEFINITION_CONTEXT = STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IS_LEAF = STRUCTURED_ACTIVITY_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OUTGOING = STRUCTURED_ACTIVITY_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__INCOMING = STRUCTURED_ACTIVITY_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IN_GROUP = STRUCTURED_ACTIVITY_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__REDEFINED_ELEMENT = STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IN_STRUCTURED_NODE = STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IN_PARTITION = STRUCTURED_ACTIVITY_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IN_INTERRUPTIBLE_REGION = STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__HANDLER = STRUCTURED_ACTIVITY_NODE__HANDLER;
+
+	/**
+	 * The feature id for the '<em><b>Effect</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__EFFECT = STRUCTURED_ACTIVITY_NODE__EFFECT;
+
+	/**
+	 * The feature id for the '<em><b>Output</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OUTPUT = STRUCTURED_ACTIVITY_NODE__OUTPUT;
+
+	/**
+	 * The feature id for the '<em><b>Input</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__INPUT = STRUCTURED_ACTIVITY_NODE__INPUT;
+
+	/**
+	 * The feature id for the '<em><b>Context</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__CONTEXT = STRUCTURED_ACTIVITY_NODE__CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__LOCAL_PRECONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__LOCAL_POSTCONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__MEMBER = STRUCTURED_ACTIVITY_NODE__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__OWNED_RULE = STRUCTURED_ACTIVITY_NODE__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IMPORTED_MEMBER = STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__ELEMENT_IMPORT = STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__PACKAGE_IMPORT = STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__SUPER_GROUP = STRUCTURED_ACTIVITY_NODE__SUPER_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__ACTIVITY_GROUP_ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__VARIABLE = STRUCTURED_ACTIVITY_NODE__VARIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__CONTAINED_NODE = STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__CONTAINED_EDGE = STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE;
+
+	/**
+	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__MUST_ISOLATE = STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Determinate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IS_DETERMINATE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Is Assured</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__IS_ASSURED = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Clause</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__CLAUSE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Result</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE__RESULT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the the '<em>Conditional Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONDITIONAL_NODE_FEATURE_COUNT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Test</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__TEST = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__BODY = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Predecessor Clause</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__PREDECESSOR_CLAUSE = ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Successor Clause</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__SUCCESSOR_CLAUSE = ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Decider</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__DECIDER = ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Body Output</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE__BODY_OUTPUT = ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the the '<em>Clause</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLAUSE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__EANNOTATIONS = STRUCTURED_ACTIVITY_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OWNED_ELEMENT = STRUCTURED_ACTIVITY_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OWNER = STRUCTURED_ACTIVITY_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OWNED_COMMENT = STRUCTURED_ACTIVITY_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__TEMPLATE_BINDING = STRUCTURED_ACTIVITY_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OWNED_TEMPLATE_SIGNATURE = STRUCTURED_ACTIVITY_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__NAME = STRUCTURED_ACTIVITY_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__QUALIFIED_NAME = STRUCTURED_ACTIVITY_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__VISIBILITY = STRUCTURED_ACTIVITY_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__CLIENT_DEPENDENCY = STRUCTURED_ACTIVITY_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__NAME_EXPRESSION = STRUCTURED_ACTIVITY_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__REDEFINITION_CONTEXT = STRUCTURED_ACTIVITY_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IS_LEAF = STRUCTURED_ACTIVITY_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OUTGOING = STRUCTURED_ACTIVITY_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__INCOMING = STRUCTURED_ACTIVITY_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IN_GROUP = STRUCTURED_ACTIVITY_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__REDEFINED_ELEMENT = STRUCTURED_ACTIVITY_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IN_STRUCTURED_NODE = STRUCTURED_ACTIVITY_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IN_PARTITION = STRUCTURED_ACTIVITY_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IN_INTERRUPTIBLE_REGION = STRUCTURED_ACTIVITY_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Handler</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__HANDLER = STRUCTURED_ACTIVITY_NODE__HANDLER;
+
+	/**
+	 * The feature id for the '<em><b>Effect</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__EFFECT = STRUCTURED_ACTIVITY_NODE__EFFECT;
+
+	/**
+	 * The feature id for the '<em><b>Output</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OUTPUT = STRUCTURED_ACTIVITY_NODE__OUTPUT;
+
+	/**
+	 * The feature id for the '<em><b>Input</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__INPUT = STRUCTURED_ACTIVITY_NODE__INPUT;
+
+	/**
+	 * The feature id for the '<em><b>Context</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__CONTEXT = STRUCTURED_ACTIVITY_NODE__CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Local Precondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__LOCAL_PRECONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_PRECONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Local Postcondition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__LOCAL_POSTCONDITION = STRUCTURED_ACTIVITY_NODE__LOCAL_POSTCONDITION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__MEMBER = STRUCTURED_ACTIVITY_NODE__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__OWNED_RULE = STRUCTURED_ACTIVITY_NODE__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IMPORTED_MEMBER = STRUCTURED_ACTIVITY_NODE__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__ELEMENT_IMPORT = STRUCTURED_ACTIVITY_NODE__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__PACKAGE_IMPORT = STRUCTURED_ACTIVITY_NODE__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__SUPER_GROUP = STRUCTURED_ACTIVITY_NODE__SUPER_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__ACTIVITY_GROUP_ACTIVITY = STRUCTURED_ACTIVITY_NODE__ACTIVITY_GROUP_ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Variable</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__VARIABLE = STRUCTURED_ACTIVITY_NODE__VARIABLE;
+
+	/**
+	 * The feature id for the '<em><b>Contained Node</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__CONTAINED_NODE = STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>Contained Edge</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__CONTAINED_EDGE = STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE;
+
+	/**
+	 * The feature id for the '<em><b>Must Isolate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__MUST_ISOLATE = STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE;
+
+	/**
+	 * The feature id for the '<em><b>Is Tested First</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__IS_TESTED_FIRST = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Body Part</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__BODY_PART = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Setup Part</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__SETUP_PART = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Decider</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__DECIDER = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Test</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__TEST = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Result</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__RESULT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Loop Variable</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__LOOP_VARIABLE = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Body Output</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__BODY_OUTPUT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Loop Variable Input</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE__LOOP_VARIABLE_INPUT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of structural features of the the '<em>Loop Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOOP_NODE_FEATURE_COUNT = STRUCTURED_ACTIVITY_NODE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__PARAMETER = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parameter</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__OWNED_PARAMETER = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Nested Signature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__NESTED_SIGNATURE = ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Nesting Signature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__NESTING_SIGNATURE = ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Template</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE__TEMPLATE = ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Template Signature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_SIGNATURE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Signature</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__SIGNATURE = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__DEFAULT = ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER__OWNED_DEFAULT = ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Template Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__EANNOTATIONS = TEMPLATEABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__OWNED_ELEMENT = TEMPLATEABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__OWNER = TEMPLATEABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__OWNED_COMMENT = TEMPLATEABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__TEMPLATE_BINDING = TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__OWNED_TEMPLATE_SIGNATURE = TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Sub Expression</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__SUB_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owning Expression</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION__OWNING_EXPRESSION = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>String Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STRING_EXPRESSION_FEATURE_COUNT = TEMPLATEABLE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__TEMPLATE_PARAMETER = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT__OWNING_PARAMETER = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Parameterable Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_ELEMENT_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__EANNOTATIONS = DIRECTED_RELATIONSHIP__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__OWNED_ELEMENT = DIRECTED_RELATIONSHIP__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__OWNER = DIRECTED_RELATIONSHIP__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__OWNED_COMMENT = DIRECTED_RELATIONSHIP__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Related Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__RELATED_ELEMENT = DIRECTED_RELATIONSHIP__RELATED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__SOURCE = DIRECTED_RELATIONSHIP__SOURCE;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__TARGET = DIRECTED_RELATIONSHIP__TARGET;
+
+	/**
+	 * The feature id for the '<em><b>Bound Element</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__BOUND_ELEMENT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Signature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__SIGNATURE = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Parameter Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING__PARAMETER_SUBSTITUTION = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the the '<em>Template Binding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_BINDING_FEATURE_COUNT = DIRECTED_RELATIONSHIP_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__EANNOTATIONS = ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ELEMENT = ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNER = ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_COMMENT = ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Formal</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__FORMAL = ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING = ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Actual</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL = ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Owned Actual</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL = ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the the '<em>Template Parameter Substitution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATE_PARAMETER_SUBSTITUTION_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Signature</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
+
+	/**
+	 * The number of structural features of the the '<em>Operation Template Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OPERATION_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Signature</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
+
+	/**
+	 * The feature id for the '<em><b>Allow Substitutable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER__ALLOW_SUBSTITUTABLE = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Classifier Template Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CLASSIFIER_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The number of structural features of the the '<em>Parameterable Classifier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETERABLE_CLASSIFIER_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__EANNOTATIONS = REDEFINABLE_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_ELEMENT = REDEFINABLE_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNER = REDEFINABLE_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_COMMENT = REDEFINABLE_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE_BINDING = REDEFINABLE_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_TEMPLATE_SIGNATURE = REDEFINABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__NAME = REDEFINABLE_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__QUALIFIED_NAME = REDEFINABLE_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__VISIBILITY = REDEFINABLE_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__CLIENT_DEPENDENCY = REDEFINABLE_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__NAME_EXPRESSION = REDEFINABLE_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__REDEFINITION_CONTEXT = REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__IS_LEAF = REDEFINABLE_ELEMENT__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__PARAMETER = REDEFINABLE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parameter</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__OWNED_PARAMETER = REDEFINABLE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Nested Signature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__NESTED_SIGNATURE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Nesting Signature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__NESTING_SIGNATURE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Template</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE__TEMPLATE = REDEFINABLE_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Redefinable Template Signature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REDEFINABLE_TEMPLATE_SIGNATURE_FEATURE_COUNT = REDEFINABLE_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__EANNOTATIONS = CLASSIFIER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNED_ELEMENT = CLASSIFIER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNER = CLASSIFIER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNED_COMMENT = CLASSIFIER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__TEMPLATE_BINDING = CLASSIFIER__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNED_TEMPLATE_SIGNATURE = CLASSIFIER__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__NAME = CLASSIFIER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__QUALIFIED_NAME = CLASSIFIER__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__VISIBILITY = CLASSIFIER__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__CLIENT_DEPENDENCY = CLASSIFIER__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__NAME_EXPRESSION = CLASSIFIER__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__MEMBER = CLASSIFIER__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNED_RULE = CLASSIFIER__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__IMPORTED_MEMBER = CLASSIFIER__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__ELEMENT_IMPORT = CLASSIFIER__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__PACKAGE_IMPORT = CLASSIFIER__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__TEMPLATE_PARAMETER = CLASSIFIER__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNING_PARAMETER = CLASSIFIER__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY = CLASSIFIER__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__PACKAGE = CLASSIFIER__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__REDEFINITION_CONTEXT = CLASSIFIER__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__IS_LEAF = CLASSIFIER__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__FEATURE = CLASSIFIER__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__IS_ABSTRACT = CLASSIFIER__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__INHERITED_MEMBER = CLASSIFIER__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__GENERAL = CLASSIFIER__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__GENERALIZATION = CLASSIFIER__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__ATTRIBUTE = CLASSIFIER__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__REDEFINED_CLASSIFIER = CLASSIFIER__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__SUBSTITUTION = CLASSIFIER__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT = CLASSIFIER__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE = CLASSIFIER__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__REPRESENTATION = CLASSIFIER__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER__OCCURRENCE = CLASSIFIER__OCCURRENCE;
+
+	/**
+	 * The number of structural features of the the '<em>Templateable Classifier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TEMPLATEABLE_CLASSIFIER_FEATURE_COUNT = CLASSIFIER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__EANNOTATIONS = TEMPLATE_PARAMETER__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_ELEMENT = TEMPLATE_PARAMETER__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNER = TEMPLATE_PARAMETER__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_COMMENT = TEMPLATE_PARAMETER__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Signature</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__SIGNATURE = TEMPLATE_PARAMETER__SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Parametered Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Parametered Element</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT = TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__DEFAULT = TEMPLATE_PARAMETER__DEFAULT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Default</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER__OWNED_DEFAULT = TEMPLATE_PARAMETER__OWNED_DEFAULT;
+
+	/**
+	 * The number of structural features of the the '<em>Connectable Element Template Parameter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER_FEATURE_COUNT = TEMPLATE_PARAMETER_FEATURE_COUNT + 0;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadExtentActionImpl <em>Read Extent Action</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -30559,7 +30559,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadExtentAction()
 	 * @generated
 	 */
-	int READ_EXTENT_ACTION = 206;
+	int READ_EXTENT_ACTION = 204;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReclassifyObjectActionImpl <em>Reclassify Object Action</em>}' class.
@@ -30569,7 +30569,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReclassifyObjectAction()
 	 * @generated
 	 */
-	int RECLASSIFY_OBJECT_ACTION = 207;
+	int RECLASSIFY_OBJECT_ACTION = 205;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadIsClassifiedObjectActionImpl <em>Read Is Classified Object Action</em>}' class.
@@ -30579,7 +30579,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadIsClassifiedObjectAction()
 	 * @generated
 	 */
-	int READ_IS_CLASSIFIED_OBJECT_ACTION = 208;
+	int READ_IS_CLASSIFIED_OBJECT_ACTION = 206;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.StartOwnedBehaviorActionImpl <em>Start Owned Behavior Action</em>}' class.
@@ -30589,7 +30589,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getStartOwnedBehaviorAction()
 	 * @generated
 	 */
-	int START_OWNED_BEHAVIOR_ACTION = 209;
+	int START_OWNED_BEHAVIOR_ACTION = 207;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.QualifierValueImpl <em>Qualifier Value</em>}' class.
@@ -30599,7 +30599,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getQualifierValue()
 	 * @generated
 	 */
-	int QUALIFIER_VALUE = 210;
+	int QUALIFIER_VALUE = 208;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadLinkObjectEndActionImpl <em>Read Link Object End Action</em>}' class.
@@ -30609,7 +30609,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadLinkObjectEndAction()
 	 * @generated
 	 */
-	int READ_LINK_OBJECT_END_ACTION = 211;
+	int READ_LINK_OBJECT_END_ACTION = 209;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReadLinkObjectEndQualifierActionImpl <em>Read Link Object End Qualifier Action</em>}' class.
@@ -30619,7 +30619,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReadLinkObjectEndQualifierAction()
 	 * @generated
 	 */
-	int READ_LINK_OBJECT_END_QUALIFIER_ACTION = 212;
+	int READ_LINK_OBJECT_END_QUALIFIER_ACTION = 210;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CreateLinkObjectActionImpl <em>Create Link Object Action</em>}' class.
@@ -30629,7 +30629,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCreateLinkObjectAction()
 	 * @generated
 	 */
-	int CREATE_LINK_OBJECT_ACTION = 213;
+	int CREATE_LINK_OBJECT_ACTION = 211;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AcceptEventActionImpl <em>Accept Event Action</em>}' class.
@@ -30639,7 +30639,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAcceptEventAction()
 	 * @generated
 	 */
-	int ACCEPT_EVENT_ACTION = 214;
+	int ACCEPT_EVENT_ACTION = 212;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.AcceptCallActionImpl <em>Accept Call Action</em>}' class.
@@ -30649,7 +30649,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getAcceptCallAction()
 	 * @generated
 	 */
-	int ACCEPT_CALL_ACTION = 215;
+	int ACCEPT_CALL_ACTION = 213;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ReplyActionImpl <em>Reply Action</em>}' class.
@@ -30659,7 +30659,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getReplyAction()
 	 * @generated
 	 */
-	int REPLY_ACTION = 216;
+	int REPLY_ACTION = 214;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.RaiseExceptionActionImpl <em>Raise Exception Action</em>}' class.
@@ -30669,7 +30669,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getRaiseExceptionAction()
 	 * @generated
 	 */
-	int RAISE_EXCEPTION_ACTION = 217;
+	int RAISE_EXCEPTION_ACTION = 215;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DataStoreNodeImpl <em>Data Store Node</em>}' class.
@@ -30679,7 +30679,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDataStoreNode()
 	 * @generated
 	 */
-	int DATA_STORE_NODE = 203;
+	int DATA_STORE_NODE = 223;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InterruptibleActivityRegionImpl <em>Interruptible Activity Region</em>}' class.
@@ -30689,7 +30689,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInterruptibleActivityRegion()
 	 * @generated
 	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION = 204;
+	int INTERRUPTIBLE_ACTIVITY_REGION = 224;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ParameterSetImpl <em>Parameter Set</em>}' class.
@@ -30699,7 +30699,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getParameterSet()
 	 * @generated
 	 */
-	int PARAMETER_SET = 205;
+	int PARAMETER_SET = 225;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InteractionOccurrenceImpl <em>Interaction Occurrence</em>}' class.
@@ -30709,7 +30709,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteractionOccurrence()
 	 * @generated
 	 */
-	int INTERACTION_OCCURRENCE = 134;
+	int INTERACTION_OCCURRENCE = 180;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.GateImpl <em>Gate</em>}' class.
@@ -30719,7 +30719,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getGate()
 	 * @generated
 	 */
-	int GATE = 135;
+	int GATE = 181;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.PartDecompositionImpl <em>Part Decomposition</em>}' class.
@@ -30729,7 +30729,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPartDecomposition()
 	 * @generated
 	 */
-	int PART_DECOMPOSITION = 136;
+	int PART_DECOMPOSITION = 182;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InteractionOperandImpl <em>Interaction Operand</em>}' class.
@@ -30739,7 +30739,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteractionOperand()
 	 * @generated
 	 */
-	int INTERACTION_OPERAND = 137;
+	int INTERACTION_OPERAND = 183;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.InteractionConstraintImpl <em>Interaction Constraint</em>}' class.
@@ -30749,7 +30749,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteractionConstraint()
 	 * @generated
 	 */
-	int INTERACTION_CONSTRAINT = 138;
+	int INTERACTION_CONSTRAINT = 184;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CombinedFragmentImpl <em>Combined Fragment</em>}' class.
@@ -30759,7 +30759,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCombinedFragment()
 	 * @generated
 	 */
-	int COMBINED_FRAGMENT = 139;
+	int COMBINED_FRAGMENT = 185;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ContinuationImpl <em>Continuation</em>}' class.
@@ -30769,7 +30769,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getContinuation()
 	 * @generated
 	 */
-	int CONTINUATION = 140;
+	int CONTINUATION = 186;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TimeExpressionImpl <em>Time Expression</em>}' class.
@@ -30779,7 +30779,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTimeExpression()
 	 * @generated
 	 */
-	int TIME_EXPRESSION = 193;
+	int TIME_EXPRESSION = 194;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DurationImpl <em>Duration</em>}' class.
@@ -30789,7 +30789,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDuration()
 	 * @generated
 	 */
-	int DURATION = 194;
+	int DURATION = 195;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TimeObservationActionImpl <em>Time Observation Action</em>}' class.
@@ -30799,7 +30799,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTimeObservationAction()
 	 * @generated
 	 */
-	int TIME_OBSERVATION_ACTION = 195;
+	int TIME_OBSERVATION_ACTION = 196;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.IntervalImpl <em>Interval</em>}' class.
@@ -30809,7 +30809,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInterval()
 	 * @generated
 	 */
-	int INTERVAL = 197;
+	int INTERVAL = 198;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DurationIntervalImpl <em>Duration Interval</em>}' class.
@@ -30819,7 +30819,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDurationInterval()
 	 * @generated
 	 */
-	int DURATION_INTERVAL = 196;
+	int DURATION_INTERVAL = 197;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.IntervalConstraintImpl <em>Interval Constraint</em>}' class.
@@ -30829,7 +30829,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getIntervalConstraint()
 	 * @generated
 	 */
-	int INTERVAL_CONSTRAINT = 199;
+	int INTERVAL_CONSTRAINT = 200;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TimeConstraintImpl <em>Time Constraint</em>}' class.
@@ -30839,7 +30839,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTimeConstraint()
 	 * @generated
 	 */
-	int TIME_CONSTRAINT = 198;
+	int TIME_CONSTRAINT = 199;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.TimeIntervalImpl <em>Time Interval</em>}' class.
@@ -30849,7 +30849,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTimeInterval()
 	 * @generated
 	 */
-	int TIME_INTERVAL = 200;
+	int TIME_INTERVAL = 201;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DurationObservationActionImpl <em>Duration Observation Action</em>}' class.
@@ -30859,7 +30859,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDurationObservationAction()
 	 * @generated
 	 */
-	int DURATION_OBSERVATION_ACTION = 201;
+	int DURATION_OBSERVATION_ACTION = 202;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DurationConstraintImpl <em>Duration Constraint</em>}' class.
@@ -30869,7 +30869,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDurationConstraint()
 	 * @generated
 	 */
-	int DURATION_CONSTRAINT = 202;
+	int DURATION_CONSTRAINT = 203;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ProtocolConformanceImpl <em>Protocol Conformance</em>}' class.
@@ -30908,1194 +30908,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_OCCURRENCE__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__OWNER = INTERACTION_FRAGMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__NAME = INTERACTION_FRAGMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Covered</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__COVERED = INTERACTION_FRAGMENT__COVERED;
-
-	/**
-	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
-
-	/**
-	 * The feature id for the '<em><b>Refers To</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__REFERS_TO = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Actual Gate</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__ACTUAL_GATE = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Argument</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE__ARGUMENT = INTERACTION_FRAGMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The number of structural features of the the '<em>Interaction Occurrence</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OCCURRENCE_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__EANNOTATIONS = MESSAGE_END__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__OWNED_ELEMENT = MESSAGE_END__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__OWNER = MESSAGE_END__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__OWNED_COMMENT = MESSAGE_END__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__TEMPLATE_BINDING = MESSAGE_END__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__OWNED_TEMPLATE_SIGNATURE = MESSAGE_END__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__NAME = MESSAGE_END__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__QUALIFIED_NAME = MESSAGE_END__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__VISIBILITY = MESSAGE_END__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__CLIENT_DEPENDENCY = MESSAGE_END__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__NAME_EXPRESSION = MESSAGE_END__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Receive Message</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__RECEIVE_MESSAGE = MESSAGE_END__RECEIVE_MESSAGE;
-
-	/**
-	 * The feature id for the '<em><b>Send Message</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE__SEND_MESSAGE = MESSAGE_END__SEND_MESSAGE;
-
-	/**
-	 * The number of structural features of the the '<em>Gate</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int GATE_FEATURE_COUNT = MESSAGE_END_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__EANNOTATIONS = INTERACTION_OCCURRENCE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__OWNED_ELEMENT = INTERACTION_OCCURRENCE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__OWNER = INTERACTION_OCCURRENCE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__OWNED_COMMENT = INTERACTION_OCCURRENCE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__TEMPLATE_BINDING = INTERACTION_OCCURRENCE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__OWNED_TEMPLATE_SIGNATURE = INTERACTION_OCCURRENCE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__NAME = INTERACTION_OCCURRENCE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__QUALIFIED_NAME = INTERACTION_OCCURRENCE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__VISIBILITY = INTERACTION_OCCURRENCE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__CLIENT_DEPENDENCY = INTERACTION_OCCURRENCE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__NAME_EXPRESSION = INTERACTION_OCCURRENCE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Covered</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__COVERED = INTERACTION_OCCURRENCE__COVERED;
-
-	/**
-	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__GENERAL_ORDERING = INTERACTION_OCCURRENCE__GENERAL_ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__ENCLOSING_INTERACTION = INTERACTION_OCCURRENCE__ENCLOSING_INTERACTION;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__ENCLOSING_OPERAND = INTERACTION_OCCURRENCE__ENCLOSING_OPERAND;
-
-	/**
-	 * The feature id for the '<em><b>Refers To</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__REFERS_TO = INTERACTION_OCCURRENCE__REFERS_TO;
-
-	/**
-	 * The feature id for the '<em><b>Actual Gate</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__ACTUAL_GATE = INTERACTION_OCCURRENCE__ACTUAL_GATE;
-
-	/**
-	 * The feature id for the '<em><b>Argument</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION__ARGUMENT = INTERACTION_OCCURRENCE__ARGUMENT;
-
-	/**
-	 * The number of structural features of the the '<em>Part Decomposition</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PART_DECOMPOSITION_FEATURE_COUNT = INTERACTION_OCCURRENCE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__EANNOTATIONS = NAMESPACE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__OWNED_ELEMENT = NAMESPACE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__OWNER = NAMESPACE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__OWNED_COMMENT = NAMESPACE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__TEMPLATE_BINDING = NAMESPACE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__OWNED_TEMPLATE_SIGNATURE = NAMESPACE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__NAME = NAMESPACE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__QUALIFIED_NAME = NAMESPACE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__VISIBILITY = NAMESPACE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__CLIENT_DEPENDENCY = NAMESPACE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__NAME_EXPRESSION = NAMESPACE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__MEMBER = NAMESPACE__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__OWNED_RULE = NAMESPACE__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__IMPORTED_MEMBER = NAMESPACE__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__ELEMENT_IMPORT = NAMESPACE__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__PACKAGE_IMPORT = NAMESPACE__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Covered</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__COVERED = NAMESPACE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__GENERAL_ORDERING = NAMESPACE_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__ENCLOSING_INTERACTION = NAMESPACE_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__ENCLOSING_OPERAND = NAMESPACE_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Guard</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__GUARD = NAMESPACE_FEATURE_COUNT + 4;
-
-	/**
-	 * The feature id for the '<em><b>Fragment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND__FRAGMENT = NAMESPACE_FEATURE_COUNT + 5;
-
-	/**
-	 * The number of structural features of the the '<em>Interaction Operand</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_OPERAND_FEATURE_COUNT = NAMESPACE_FEATURE_COUNT + 6;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__EANNOTATIONS = CONSTRAINT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__OWNED_ELEMENT = CONSTRAINT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__OWNER = CONSTRAINT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__OWNED_COMMENT = CONSTRAINT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__TEMPLATE_BINDING = CONSTRAINT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__OWNED_TEMPLATE_SIGNATURE = CONSTRAINT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__NAME = CONSTRAINT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__QUALIFIED_NAME = CONSTRAINT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__VISIBILITY = CONSTRAINT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__CLIENT_DEPENDENCY = CONSTRAINT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__NAME_EXPRESSION = CONSTRAINT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__TEMPLATE_PARAMETER = CONSTRAINT__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__OWNING_PARAMETER = CONSTRAINT__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__PACKAGEABLE_ELEMENT_VISIBILITY = CONSTRAINT__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Context</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__CONTEXT = CONSTRAINT__CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Namespace</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__NAMESPACE = CONSTRAINT__NAMESPACE;
-
-	/**
-	 * The feature id for the '<em><b>Specification</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__SPECIFICATION = CONSTRAINT__SPECIFICATION;
-
-	/**
-	 * The feature id for the '<em><b>Constrained Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__CONSTRAINED_ELEMENT = CONSTRAINT__CONSTRAINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Minint</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__MININT = CONSTRAINT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Maxint</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT__MAXINT = CONSTRAINT_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Interaction Constraint</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERACTION_CONSTRAINT_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__OWNER = INTERACTION_FRAGMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__NAME = INTERACTION_FRAGMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Covered</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__COVERED = INTERACTION_FRAGMENT__COVERED;
-
-	/**
-	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
-
-	/**
-	 * The feature id for the '<em><b>Interaction Operator</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__INTERACTION_OPERATOR = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Operand</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__OPERAND = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Cfragment Gate</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT__CFRAGMENT_GATE = INTERACTION_FRAGMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The number of structural features of the the '<em>Combined Fragment</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMBINED_FRAGMENT_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__OWNER = INTERACTION_FRAGMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__NAME = INTERACTION_FRAGMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Covered</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__COVERED = INTERACTION_FRAGMENT__COVERED;
-
-	/**
-	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
-
-	/**
-	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
-
-	/**
-	 * The feature id for the '<em><b>Setting</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION__SETTING = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The number of structural features of the the '<em>Continuation</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CONTINUATION_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int STATE_MACHINE__EANNOTATIONS = BEHAVIOR__EANNOTATIONS;
 
 	/**
@@ -32351,15 +31163,6 @@
 	int STATE_MACHINE__REDEFINED_CLASSIFIER = BEHAVIOR__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int STATE_MACHINE__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -32369,6 +31172,15 @@
 	int STATE_MACHINE__SUBSTITUTION = BEHAVIOR__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int STATE_MACHINE__POWERTYPE_EXTENT = BEHAVIOR__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -33986,6 +32798,1050 @@
 	 * @generated
 	 * @ordered
 	 */
+	int FORK_NODE__EANNOTATIONS = CONTROL_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__OWNED_ELEMENT = CONTROL_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__OWNER = CONTROL_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__OWNED_COMMENT = CONTROL_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__TEMPLATE_BINDING = CONTROL_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__OWNED_TEMPLATE_SIGNATURE = CONTROL_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__NAME = CONTROL_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__QUALIFIED_NAME = CONTROL_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__VISIBILITY = CONTROL_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__CLIENT_DEPENDENCY = CONTROL_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__NAME_EXPRESSION = CONTROL_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__REDEFINITION_CONTEXT = CONTROL_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__IS_LEAF = CONTROL_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__OUTGOING = CONTROL_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__INCOMING = CONTROL_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__IN_GROUP = CONTROL_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__ACTIVITY = CONTROL_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__REDEFINED_ELEMENT = CONTROL_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__IN_STRUCTURED_NODE = CONTROL_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__IN_PARTITION = CONTROL_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE__IN_INTERRUPTIBLE_REGION = CONTROL_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The number of structural features of the the '<em>Fork Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FORK_NODE_FEATURE_COUNT = CONTROL_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__EANNOTATIONS = CONTROL_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__OWNED_ELEMENT = CONTROL_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__OWNER = CONTROL_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__OWNED_COMMENT = CONTROL_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__TEMPLATE_BINDING = CONTROL_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__OWNED_TEMPLATE_SIGNATURE = CONTROL_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__NAME = CONTROL_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__QUALIFIED_NAME = CONTROL_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__VISIBILITY = CONTROL_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__CLIENT_DEPENDENCY = CONTROL_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__NAME_EXPRESSION = CONTROL_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__REDEFINITION_CONTEXT = CONTROL_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IS_LEAF = CONTROL_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__OUTGOING = CONTROL_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__INCOMING = CONTROL_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IN_GROUP = CONTROL_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__ACTIVITY = CONTROL_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__REDEFINED_ELEMENT = CONTROL_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IN_STRUCTURED_NODE = CONTROL_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IN_PARTITION = CONTROL_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IN_INTERRUPTIBLE_REGION = CONTROL_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Is Combine Duplicate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__IS_COMBINE_DUPLICATE = CONTROL_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Join Spec</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE__JOIN_SPEC = CONTROL_NODE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Join Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int JOIN_NODE_FEATURE_COUNT = CONTROL_NODE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__EANNOTATIONS = FINAL_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__OWNED_ELEMENT = FINAL_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__OWNER = FINAL_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__OWNED_COMMENT = FINAL_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__TEMPLATE_BINDING = FINAL_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__OWNED_TEMPLATE_SIGNATURE = FINAL_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__NAME = FINAL_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__QUALIFIED_NAME = FINAL_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__VISIBILITY = FINAL_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__CLIENT_DEPENDENCY = FINAL_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__NAME_EXPRESSION = FINAL_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__REDEFINITION_CONTEXT = FINAL_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__IS_LEAF = FINAL_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__OUTGOING = FINAL_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__INCOMING = FINAL_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__IN_GROUP = FINAL_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__ACTIVITY = FINAL_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__REDEFINED_ELEMENT = FINAL_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__IN_STRUCTURED_NODE = FINAL_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__IN_PARTITION = FINAL_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE__IN_INTERRUPTIBLE_REGION = FINAL_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The number of structural features of the the '<em>Flow Final Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FLOW_FINAL_NODE_FEATURE_COUNT = FINAL_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__EANNOTATIONS = OBJECT_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__OWNED_ELEMENT = OBJECT_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__OWNER = OBJECT_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__OWNED_COMMENT = OBJECT_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__TEMPLATE_BINDING = OBJECT_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__OWNED_TEMPLATE_SIGNATURE = OBJECT_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__NAME = OBJECT_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__QUALIFIED_NAME = OBJECT_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__VISIBILITY = OBJECT_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__CLIENT_DEPENDENCY = OBJECT_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__NAME_EXPRESSION = OBJECT_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__REDEFINITION_CONTEXT = OBJECT_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IS_LEAF = OBJECT_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__OUTGOING = OBJECT_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__INCOMING = OBJECT_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IN_GROUP = OBJECT_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__ACTIVITY = OBJECT_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__REDEFINED_ELEMENT = OBJECT_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IN_STRUCTURED_NODE = OBJECT_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IN_PARTITION = OBJECT_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IN_INTERRUPTIBLE_REGION = OBJECT_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__TYPE = OBJECT_NODE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Ordering</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__ORDERING = OBJECT_NODE__ORDERING;
+
+	/**
+	 * The feature id for the '<em><b>Upper Bound</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__UPPER_BOUND = OBJECT_NODE__UPPER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>In State</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__IN_STATE = OBJECT_NODE__IN_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Selection</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE__SELECTION = OBJECT_NODE__SELECTION;
+
+	/**
+	 * The number of structural features of the the '<em>Central Buffer Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CENTRAL_BUFFER_NODE_FEATURE_COUNT = OBJECT_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__OWNER = NAMED_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__SUPER_GROUP = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__ACTIVITY_GROUP_ACTIVITY = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Is Dimension</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__IS_DIMENSION = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Is External</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__IS_EXTERNAL = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Contained Edge</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__CONTAINED_EDGE = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Contained Node</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__CONTAINED_NODE = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Subgroup</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__SUBGROUP = NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Super Partition</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__SUPER_PARTITION = NAMED_ELEMENT_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Represents</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION__REPRESENTS = NAMED_ELEMENT_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of structural features of the the '<em>Activity Partition</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ACTIVITY_PARTITION_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
 	int CREATE_OBJECT_ACTION__EANNOTATIONS = ACTION__EANNOTATIONS;
 
 	/**
@@ -42725,7 +42581,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__EANNOTATIONS = CONTROL_NODE__EANNOTATIONS;
+	int INTERACTION_OCCURRENCE__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
@@ -42734,7 +42590,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__OWNED_ELEMENT = CONTROL_NODE__OWNED_ELEMENT;
+	int INTERACTION_OCCURRENCE__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
 
 	/**
 	 * The feature id for the '<em><b>Owner</b></em>' reference.
@@ -42743,7 +42599,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__OWNER = CONTROL_NODE__OWNER;
+	int INTERACTION_OCCURRENCE__OWNER = INTERACTION_FRAGMENT__OWNER;
 
 	/**
 	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -42752,7 +42608,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__OWNED_COMMENT = CONTROL_NODE__OWNED_COMMENT;
+	int INTERACTION_OCCURRENCE__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
 
 	/**
 	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
@@ -42761,7 +42617,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__TEMPLATE_BINDING = CONTROL_NODE__TEMPLATE_BINDING;
+	int INTERACTION_OCCURRENCE__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
 
 	/**
 	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
@@ -42770,7 +42626,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__OWNED_TEMPLATE_SIGNATURE = CONTROL_NODE__OWNED_TEMPLATE_SIGNATURE;
+	int INTERACTION_OCCURRENCE__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -42779,7 +42635,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__NAME = CONTROL_NODE__NAME;
+	int INTERACTION_OCCURRENCE__NAME = INTERACTION_FRAGMENT__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
@@ -42788,7 +42644,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__QUALIFIED_NAME = CONTROL_NODE__QUALIFIED_NAME;
+	int INTERACTION_OCCURRENCE__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
 
 	/**
 	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
@@ -42797,7 +42653,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__VISIBILITY = CONTROL_NODE__VISIBILITY;
+	int INTERACTION_OCCURRENCE__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
 
 	/**
 	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
@@ -42806,7 +42662,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__CLIENT_DEPENDENCY = CONTROL_NODE__CLIENT_DEPENDENCY;
+	int INTERACTION_OCCURRENCE__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
 
 	/**
 	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
@@ -42815,106 +42671,79 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__NAME_EXPRESSION = CONTROL_NODE__NAME_EXPRESSION;
+	int INTERACTION_OCCURRENCE__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
 
 	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * The feature id for the '<em><b>Covered</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__REDEFINITION_CONTEXT = CONTROL_NODE__REDEFINITION_CONTEXT;
+	int INTERACTION_OCCURRENCE__COVERED = INTERACTION_FRAGMENT__COVERED;
 
 	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__IS_LEAF = CONTROL_NODE__IS_LEAF;
+	int INTERACTION_OCCURRENCE__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
 
 	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__OUTGOING = CONTROL_NODE__OUTGOING;
+	int INTERACTION_OCCURRENCE__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
 
 	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__INCOMING = CONTROL_NODE__INCOMING;
+	int INTERACTION_OCCURRENCE__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
 
 	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * The feature id for the '<em><b>Refers To</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__IN_GROUP = CONTROL_NODE__IN_GROUP;
+	int INTERACTION_OCCURRENCE__REFERS_TO = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * The feature id for the '<em><b>Actual Gate</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__ACTIVITY = CONTROL_NODE__ACTIVITY;
+	int INTERACTION_OCCURRENCE__ACTUAL_GATE = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * The feature id for the '<em><b>Argument</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__REDEFINED_ELEMENT = CONTROL_NODE__REDEFINED_ELEMENT;
+	int INTERACTION_OCCURRENCE__ARGUMENT = INTERACTION_FRAGMENT_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * The number of structural features of the the '<em>Interaction Occurrence</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FORK_NODE__IN_STRUCTURED_NODE = CONTROL_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORK_NODE__IN_PARTITION = CONTROL_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORK_NODE__IN_INTERRUPTIBLE_REGION = CONTROL_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The number of structural features of the the '<em>Fork Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FORK_NODE_FEATURE_COUNT = CONTROL_NODE_FEATURE_COUNT + 0;
+	int INTERACTION_OCCURRENCE_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -42923,7 +42752,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__EANNOTATIONS = CONTROL_NODE__EANNOTATIONS;
+	int GATE__EANNOTATIONS = MESSAGE_END__EANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
@@ -42932,7 +42761,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__OWNED_ELEMENT = CONTROL_NODE__OWNED_ELEMENT;
+	int GATE__OWNED_ELEMENT = MESSAGE_END__OWNED_ELEMENT;
 
 	/**
 	 * The feature id for the '<em><b>Owner</b></em>' reference.
@@ -42941,7 +42770,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__OWNER = CONTROL_NODE__OWNER;
+	int GATE__OWNER = MESSAGE_END__OWNER;
 
 	/**
 	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -42950,7 +42779,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__OWNED_COMMENT = CONTROL_NODE__OWNED_COMMENT;
+	int GATE__OWNED_COMMENT = MESSAGE_END__OWNED_COMMENT;
 
 	/**
 	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
@@ -42959,7 +42788,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__TEMPLATE_BINDING = CONTROL_NODE__TEMPLATE_BINDING;
+	int GATE__TEMPLATE_BINDING = MESSAGE_END__TEMPLATE_BINDING;
 
 	/**
 	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
@@ -42968,7 +42797,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__OWNED_TEMPLATE_SIGNATURE = CONTROL_NODE__OWNED_TEMPLATE_SIGNATURE;
+	int GATE__OWNED_TEMPLATE_SIGNATURE = MESSAGE_END__OWNED_TEMPLATE_SIGNATURE;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -42977,7 +42806,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__NAME = CONTROL_NODE__NAME;
+	int GATE__NAME = MESSAGE_END__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
@@ -42986,7 +42815,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__QUALIFIED_NAME = CONTROL_NODE__QUALIFIED_NAME;
+	int GATE__QUALIFIED_NAME = MESSAGE_END__QUALIFIED_NAME;
 
 	/**
 	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
@@ -42995,7 +42824,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__VISIBILITY = CONTROL_NODE__VISIBILITY;
+	int GATE__VISIBILITY = MESSAGE_END__VISIBILITY;
 
 	/**
 	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
@@ -43004,7 +42833,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__CLIENT_DEPENDENCY = CONTROL_NODE__CLIENT_DEPENDENCY;
+	int GATE__CLIENT_DEPENDENCY = MESSAGE_END__CLIENT_DEPENDENCY;
 
 	/**
 	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
@@ -43013,124 +42842,34 @@
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__NAME_EXPRESSION = CONTROL_NODE__NAME_EXPRESSION;
+	int GATE__NAME_EXPRESSION = MESSAGE_END__NAME_EXPRESSION;
 
 	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * The feature id for the '<em><b>Receive Message</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__REDEFINITION_CONTEXT = CONTROL_NODE__REDEFINITION_CONTEXT;
+	int GATE__RECEIVE_MESSAGE = MESSAGE_END__RECEIVE_MESSAGE;
 
 	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * The feature id for the '<em><b>Send Message</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__IS_LEAF = CONTROL_NODE__IS_LEAF;
+	int GATE__SEND_MESSAGE = MESSAGE_END__SEND_MESSAGE;
 
 	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * The number of structural features of the the '<em>Gate</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int JOIN_NODE__OUTGOING = CONTROL_NODE__OUTGOING;
-
-	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__INCOMING = CONTROL_NODE__INCOMING;
-
-	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__IN_GROUP = CONTROL_NODE__IN_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__ACTIVITY = CONTROL_NODE__ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__REDEFINED_ELEMENT = CONTROL_NODE__REDEFINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__IN_STRUCTURED_NODE = CONTROL_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__IN_PARTITION = CONTROL_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__IN_INTERRUPTIBLE_REGION = CONTROL_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The feature id for the '<em><b>Is Combine Duplicate</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__IS_COMBINE_DUPLICATE = CONTROL_NODE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Join Spec</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE__JOIN_SPEC = CONTROL_NODE_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Join Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int JOIN_NODE_FEATURE_COUNT = CONTROL_NODE_FEATURE_COUNT + 2;
+	int GATE_FEATURE_COUNT = MESSAGE_END_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -43139,7 +42878,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__EANNOTATIONS = FINAL_NODE__EANNOTATIONS;
+	int PART_DECOMPOSITION__EANNOTATIONS = INTERACTION_OCCURRENCE__EANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
@@ -43148,7 +42887,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__OWNED_ELEMENT = FINAL_NODE__OWNED_ELEMENT;
+	int PART_DECOMPOSITION__OWNED_ELEMENT = INTERACTION_OCCURRENCE__OWNED_ELEMENT;
 
 	/**
 	 * The feature id for the '<em><b>Owner</b></em>' reference.
@@ -43157,7 +42896,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__OWNER = FINAL_NODE__OWNER;
+	int PART_DECOMPOSITION__OWNER = INTERACTION_OCCURRENCE__OWNER;
 
 	/**
 	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -43166,7 +42905,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__OWNED_COMMENT = FINAL_NODE__OWNED_COMMENT;
+	int PART_DECOMPOSITION__OWNED_COMMENT = INTERACTION_OCCURRENCE__OWNED_COMMENT;
 
 	/**
 	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
@@ -43175,7 +42914,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__TEMPLATE_BINDING = FINAL_NODE__TEMPLATE_BINDING;
+	int PART_DECOMPOSITION__TEMPLATE_BINDING = INTERACTION_OCCURRENCE__TEMPLATE_BINDING;
 
 	/**
 	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
@@ -43184,7 +42923,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__OWNED_TEMPLATE_SIGNATURE = FINAL_NODE__OWNED_TEMPLATE_SIGNATURE;
+	int PART_DECOMPOSITION__OWNED_TEMPLATE_SIGNATURE = INTERACTION_OCCURRENCE__OWNED_TEMPLATE_SIGNATURE;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -43193,7 +42932,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__NAME = FINAL_NODE__NAME;
+	int PART_DECOMPOSITION__NAME = INTERACTION_OCCURRENCE__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
@@ -43202,7 +42941,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__QUALIFIED_NAME = FINAL_NODE__QUALIFIED_NAME;
+	int PART_DECOMPOSITION__QUALIFIED_NAME = INTERACTION_OCCURRENCE__QUALIFIED_NAME;
 
 	/**
 	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
@@ -43211,7 +42950,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__VISIBILITY = FINAL_NODE__VISIBILITY;
+	int PART_DECOMPOSITION__VISIBILITY = INTERACTION_OCCURRENCE__VISIBILITY;
 
 	/**
 	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
@@ -43220,7 +42959,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__CLIENT_DEPENDENCY = FINAL_NODE__CLIENT_DEPENDENCY;
+	int PART_DECOMPOSITION__CLIENT_DEPENDENCY = INTERACTION_OCCURRENCE__CLIENT_DEPENDENCY;
 
 	/**
 	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
@@ -43229,106 +42968,79 @@
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__NAME_EXPRESSION = FINAL_NODE__NAME_EXPRESSION;
+	int PART_DECOMPOSITION__NAME_EXPRESSION = INTERACTION_OCCURRENCE__NAME_EXPRESSION;
 
 	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * The feature id for the '<em><b>Covered</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__REDEFINITION_CONTEXT = FINAL_NODE__REDEFINITION_CONTEXT;
+	int PART_DECOMPOSITION__COVERED = INTERACTION_OCCURRENCE__COVERED;
 
 	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__IS_LEAF = FINAL_NODE__IS_LEAF;
+	int PART_DECOMPOSITION__GENERAL_ORDERING = INTERACTION_OCCURRENCE__GENERAL_ORDERING;
 
 	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__OUTGOING = FINAL_NODE__OUTGOING;
+	int PART_DECOMPOSITION__ENCLOSING_INTERACTION = INTERACTION_OCCURRENCE__ENCLOSING_INTERACTION;
 
 	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__INCOMING = FINAL_NODE__INCOMING;
+	int PART_DECOMPOSITION__ENCLOSING_OPERAND = INTERACTION_OCCURRENCE__ENCLOSING_OPERAND;
 
 	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * The feature id for the '<em><b>Refers To</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__IN_GROUP = FINAL_NODE__IN_GROUP;
+	int PART_DECOMPOSITION__REFERS_TO = INTERACTION_OCCURRENCE__REFERS_TO;
 
 	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * The feature id for the '<em><b>Actual Gate</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__ACTIVITY = FINAL_NODE__ACTIVITY;
+	int PART_DECOMPOSITION__ACTUAL_GATE = INTERACTION_OCCURRENCE__ACTUAL_GATE;
 
 	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * The feature id for the '<em><b>Argument</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__REDEFINED_ELEMENT = FINAL_NODE__REDEFINED_ELEMENT;
+	int PART_DECOMPOSITION__ARGUMENT = INTERACTION_OCCURRENCE__ARGUMENT;
 
 	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * The number of structural features of the the '<em>Part Decomposition</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FLOW_FINAL_NODE__IN_STRUCTURED_NODE = FINAL_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FLOW_FINAL_NODE__IN_PARTITION = FINAL_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FLOW_FINAL_NODE__IN_INTERRUPTIBLE_REGION = FINAL_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The number of structural features of the the '<em>Flow Final Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int FLOW_FINAL_NODE_FEATURE_COUNT = FINAL_NODE_FEATURE_COUNT + 0;
+	int PART_DECOMPOSITION_FEATURE_COUNT = INTERACTION_OCCURRENCE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -43337,7 +43049,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__EANNOTATIONS = OBJECT_NODE__EANNOTATIONS;
+	int INTERACTION_OPERAND__EANNOTATIONS = NAMESPACE__EANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
@@ -43346,7 +43058,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__OWNED_ELEMENT = OBJECT_NODE__OWNED_ELEMENT;
+	int INTERACTION_OPERAND__OWNED_ELEMENT = NAMESPACE__OWNED_ELEMENT;
 
 	/**
 	 * The feature id for the '<em><b>Owner</b></em>' reference.
@@ -43355,7 +43067,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__OWNER = OBJECT_NODE__OWNER;
+	int INTERACTION_OPERAND__OWNER = NAMESPACE__OWNER;
 
 	/**
 	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -43364,7 +43076,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__OWNED_COMMENT = OBJECT_NODE__OWNED_COMMENT;
+	int INTERACTION_OPERAND__OWNED_COMMENT = NAMESPACE__OWNED_COMMENT;
 
 	/**
 	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
@@ -43373,7 +43085,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__TEMPLATE_BINDING = OBJECT_NODE__TEMPLATE_BINDING;
+	int INTERACTION_OPERAND__TEMPLATE_BINDING = NAMESPACE__TEMPLATE_BINDING;
 
 	/**
 	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
@@ -43382,7 +43094,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__OWNED_TEMPLATE_SIGNATURE = OBJECT_NODE__OWNED_TEMPLATE_SIGNATURE;
+	int INTERACTION_OPERAND__OWNED_TEMPLATE_SIGNATURE = NAMESPACE__OWNED_TEMPLATE_SIGNATURE;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -43391,7 +43103,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__NAME = OBJECT_NODE__NAME;
+	int INTERACTION_OPERAND__NAME = NAMESPACE__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
@@ -43400,7 +43112,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__QUALIFIED_NAME = OBJECT_NODE__QUALIFIED_NAME;
+	int INTERACTION_OPERAND__QUALIFIED_NAME = NAMESPACE__QUALIFIED_NAME;
 
 	/**
 	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
@@ -43409,7 +43121,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__VISIBILITY = OBJECT_NODE__VISIBILITY;
+	int INTERACTION_OPERAND__VISIBILITY = NAMESPACE__VISIBILITY;
 
 	/**
 	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
@@ -43418,7 +43130,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__CLIENT_DEPENDENCY = OBJECT_NODE__CLIENT_DEPENDENCY;
+	int INTERACTION_OPERAND__CLIENT_DEPENDENCY = NAMESPACE__CLIENT_DEPENDENCY;
 
 	/**
 	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
@@ -43427,151 +43139,115 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__NAME_EXPRESSION = OBJECT_NODE__NAME_EXPRESSION;
+	int INTERACTION_OPERAND__NAME_EXPRESSION = NAMESPACE__NAME_EXPRESSION;
 
 	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__REDEFINITION_CONTEXT = OBJECT_NODE__REDEFINITION_CONTEXT;
+	int INTERACTION_OPERAND__MEMBER = NAMESPACE__MEMBER;
 
 	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__IS_LEAF = OBJECT_NODE__IS_LEAF;
+	int INTERACTION_OPERAND__OWNED_RULE = NAMESPACE__OWNED_RULE;
 
 	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__OUTGOING = OBJECT_NODE__OUTGOING;
+	int INTERACTION_OPERAND__IMPORTED_MEMBER = NAMESPACE__IMPORTED_MEMBER;
 
 	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__INCOMING = OBJECT_NODE__INCOMING;
+	int INTERACTION_OPERAND__ELEMENT_IMPORT = NAMESPACE__ELEMENT_IMPORT;
 
 	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__IN_GROUP = OBJECT_NODE__IN_GROUP;
+	int INTERACTION_OPERAND__PACKAGE_IMPORT = NAMESPACE__PACKAGE_IMPORT;
 
 	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * The feature id for the '<em><b>Covered</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__ACTIVITY = OBJECT_NODE__ACTIVITY;
+	int INTERACTION_OPERAND__COVERED = NAMESPACE_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__REDEFINED_ELEMENT = OBJECT_NODE__REDEFINED_ELEMENT;
+	int INTERACTION_OPERAND__GENERAL_ORDERING = NAMESPACE_FEATURE_COUNT + 1;
 
 	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__IN_STRUCTURED_NODE = OBJECT_NODE__IN_STRUCTURED_NODE;
+	int INTERACTION_OPERAND__ENCLOSING_INTERACTION = NAMESPACE_FEATURE_COUNT + 2;
 
 	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__IN_PARTITION = OBJECT_NODE__IN_PARTITION;
+	int INTERACTION_OPERAND__ENCLOSING_OPERAND = NAMESPACE_FEATURE_COUNT + 3;
 
 	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * The feature id for the '<em><b>Guard</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__IN_INTERRUPTIBLE_REGION = OBJECT_NODE__IN_INTERRUPTIBLE_REGION;
+	int INTERACTION_OPERAND__GUARD = NAMESPACE_FEATURE_COUNT + 4;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * The feature id for the '<em><b>Fragment</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__TYPE = OBJECT_NODE__TYPE;
+	int INTERACTION_OPERAND__FRAGMENT = NAMESPACE_FEATURE_COUNT + 5;
 
 	/**
-	 * The feature id for the '<em><b>Ordering</b></em>' attribute.
+	 * The number of structural features of the the '<em>Interaction Operand</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CENTRAL_BUFFER_NODE__ORDERING = OBJECT_NODE__ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Upper Bound</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CENTRAL_BUFFER_NODE__UPPER_BOUND = OBJECT_NODE__UPPER_BOUND;
-
-	/**
-	 * The feature id for the '<em><b>In State</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CENTRAL_BUFFER_NODE__IN_STATE = OBJECT_NODE__IN_STATE;
-
-	/**
-	 * The feature id for the '<em><b>Selection</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CENTRAL_BUFFER_NODE__SELECTION = OBJECT_NODE__SELECTION;
-
-	/**
-	 * The number of structural features of the the '<em>Central Buffer Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CENTRAL_BUFFER_NODE_FEATURE_COUNT = OBJECT_NODE_FEATURE_COUNT + 0;
+	int INTERACTION_OPERAND_FEATURE_COUNT = NAMESPACE_FEATURE_COUNT + 6;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -43580,7 +43256,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+	int INTERACTION_CONSTRAINT__EANNOTATIONS = CONSTRAINT__EANNOTATIONS;
 
 	/**
 	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
@@ -43589,7 +43265,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+	int INTERACTION_CONSTRAINT__OWNED_ELEMENT = CONSTRAINT__OWNED_ELEMENT;
 
 	/**
 	 * The feature id for the '<em><b>Owner</b></em>' reference.
@@ -43598,7 +43274,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__OWNER = NAMED_ELEMENT__OWNER;
+	int INTERACTION_CONSTRAINT__OWNER = CONSTRAINT__OWNER;
 
 	/**
 	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
@@ -43607,7 +43283,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+	int INTERACTION_CONSTRAINT__OWNED_COMMENT = CONSTRAINT__OWNED_COMMENT;
 
 	/**
 	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
@@ -43616,7 +43292,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+	int INTERACTION_CONSTRAINT__TEMPLATE_BINDING = CONSTRAINT__TEMPLATE_BINDING;
 
 	/**
 	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
@@ -43625,7 +43301,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+	int INTERACTION_CONSTRAINT__OWNED_TEMPLATE_SIGNATURE = CONSTRAINT__OWNED_TEMPLATE_SIGNATURE;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -43634,7 +43310,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__NAME = NAMED_ELEMENT__NAME;
+	int INTERACTION_CONSTRAINT__NAME = CONSTRAINT__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
@@ -43643,7 +43319,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+	int INTERACTION_CONSTRAINT__QUALIFIED_NAME = CONSTRAINT__QUALIFIED_NAME;
 
 	/**
 	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
@@ -43652,7 +43328,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+	int INTERACTION_CONSTRAINT__VISIBILITY = CONSTRAINT__VISIBILITY;
 
 	/**
 	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
@@ -43661,7 +43337,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+	int INTERACTION_CONSTRAINT__CLIENT_DEPENDENCY = CONSTRAINT__CLIENT_DEPENDENCY;
 
 	/**
 	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
@@ -43670,97 +43346,421 @@
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+	int INTERACTION_CONSTRAINT__NAME_EXPRESSION = CONSTRAINT__NAME_EXPRESSION;
 
 	/**
-	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__SUPER_GROUP = NAMED_ELEMENT_FEATURE_COUNT + 0;
+	int INTERACTION_CONSTRAINT__TEMPLATE_PARAMETER = CONSTRAINT__TEMPLATE_PARAMETER;
 
 	/**
-	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__ACTIVITY_GROUP_ACTIVITY = NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int INTERACTION_CONSTRAINT__OWNING_PARAMETER = CONSTRAINT__OWNING_PARAMETER;
 
 	/**
-	 * The feature id for the '<em><b>Is Dimension</b></em>' attribute.
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__IS_DIMENSION = NAMED_ELEMENT_FEATURE_COUNT + 2;
+	int INTERACTION_CONSTRAINT__PACKAGEABLE_ELEMENT_VISIBILITY = CONSTRAINT__PACKAGEABLE_ELEMENT_VISIBILITY;
 
 	/**
-	 * The feature id for the '<em><b>Is External</b></em>' attribute.
+	 * The feature id for the '<em><b>Context</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__IS_EXTERNAL = NAMED_ELEMENT_FEATURE_COUNT + 3;
+	int INTERACTION_CONSTRAINT__CONTEXT = CONSTRAINT__CONTEXT;
 
 	/**
-	 * The feature id for the '<em><b>Contained Edge</b></em>' reference list.
+	 * The feature id for the '<em><b>Namespace</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__CONTAINED_EDGE = NAMED_ELEMENT_FEATURE_COUNT + 4;
+	int INTERACTION_CONSTRAINT__NAMESPACE = CONSTRAINT__NAMESPACE;
 
 	/**
-	 * The feature id for the '<em><b>Contained Node</b></em>' reference list.
+	 * The feature id for the '<em><b>Specification</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__CONTAINED_NODE = NAMED_ELEMENT_FEATURE_COUNT + 5;
+	int INTERACTION_CONSTRAINT__SPECIFICATION = CONSTRAINT__SPECIFICATION;
 
 	/**
-	 * The feature id for the '<em><b>Subgroup</b></em>' containment reference list.
+	 * The feature id for the '<em><b>Constrained Element</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__SUBGROUP = NAMED_ELEMENT_FEATURE_COUNT + 6;
+	int INTERACTION_CONSTRAINT__CONSTRAINED_ELEMENT = CONSTRAINT__CONSTRAINED_ELEMENT;
 
 	/**
-	 * The feature id for the '<em><b>Super Partition</b></em>' container reference.
+	 * The feature id for the '<em><b>Minint</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__SUPER_PARTITION = NAMED_ELEMENT_FEATURE_COUNT + 7;
+	int INTERACTION_CONSTRAINT__MININT = CONSTRAINT_FEATURE_COUNT + 0;
 
 	/**
-	 * The feature id for the '<em><b>Represents</b></em>' reference.
+	 * The feature id for the '<em><b>Maxint</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION__REPRESENTS = NAMED_ELEMENT_FEATURE_COUNT + 8;
+	int INTERACTION_CONSTRAINT__MAXINT = CONSTRAINT_FEATURE_COUNT + 1;
 
 	/**
-	 * The number of structural features of the the '<em>Activity Partition</em>' class.
+	 * The number of structural features of the the '<em>Interaction Constraint</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int ACTIVITY_PARTITION_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 9;
+	int INTERACTION_CONSTRAINT_FEATURE_COUNT = CONSTRAINT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__OWNER = INTERACTION_FRAGMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__NAME = INTERACTION_FRAGMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Covered</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__COVERED = INTERACTION_FRAGMENT__COVERED;
+
+	/**
+	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
+
+	/**
+	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
+
+	/**
+	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
+
+	/**
+	 * The feature id for the '<em><b>Interaction Operator</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__INTERACTION_OPERATOR = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Operand</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__OPERAND = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Cfragment Gate</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT__CFRAGMENT_GATE = INTERACTION_FRAGMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the the '<em>Combined Fragment</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMBINED_FRAGMENT_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__EANNOTATIONS = INTERACTION_FRAGMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__OWNED_ELEMENT = INTERACTION_FRAGMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__OWNER = INTERACTION_FRAGMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__OWNED_COMMENT = INTERACTION_FRAGMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__TEMPLATE_BINDING = INTERACTION_FRAGMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__OWNED_TEMPLATE_SIGNATURE = INTERACTION_FRAGMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__NAME = INTERACTION_FRAGMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__QUALIFIED_NAME = INTERACTION_FRAGMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__VISIBILITY = INTERACTION_FRAGMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__CLIENT_DEPENDENCY = INTERACTION_FRAGMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__NAME_EXPRESSION = INTERACTION_FRAGMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Covered</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__COVERED = INTERACTION_FRAGMENT__COVERED;
+
+	/**
+	 * The feature id for the '<em><b>General Ordering</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__GENERAL_ORDERING = INTERACTION_FRAGMENT__GENERAL_ORDERING;
+
+	/**
+	 * The feature id for the '<em><b>Enclosing Interaction</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__ENCLOSING_INTERACTION = INTERACTION_FRAGMENT__ENCLOSING_INTERACTION;
+
+	/**
+	 * The feature id for the '<em><b>Enclosing Operand</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__ENCLOSING_OPERAND = INTERACTION_FRAGMENT__ENCLOSING_OPERAND;
+
+	/**
+	 * The feature id for the '<em><b>Setting</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION__SETTING = INTERACTION_FRAGMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the the '<em>Continuation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONTINUATION_FEATURE_COUNT = INTERACTION_FRAGMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -44499,7 +44499,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getComponent()
 	 * @generated
 	 */
-	int COMPONENT = 218;
+	int COMPONENT = 193;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DeploymentImpl <em>Deployment</em>}' class.
@@ -44509,7 +44509,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDeployment()
 	 * @generated
 	 */
-	int DEPLOYMENT = 219;
+	int DEPLOYMENT = 216;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DeployedArtifactImpl <em>Deployed Artifact</em>}' class.
@@ -44519,7 +44519,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDeployedArtifact()
 	 * @generated
 	 */
-	int DEPLOYED_ARTIFACT = 220;
+	int DEPLOYED_ARTIFACT = 217;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DeploymentTargetImpl <em>Deployment Target</em>}' class.
@@ -44529,7 +44529,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDeploymentTarget()
 	 * @generated
 	 */
-	int DEPLOYMENT_TARGET = 221;
+	int DEPLOYMENT_TARGET = 218;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.NodeImpl <em>Node</em>}' class.
@@ -44539,7 +44539,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getNode()
 	 * @generated
 	 */
-	int NODE = 222;
+	int NODE = 219;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DeviceImpl <em>Device</em>}' class.
@@ -44549,7 +44549,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getDevice()
 	 * @generated
 	 */
-	int DEVICE = 223;
+	int DEVICE = 220;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.ExecutionEnvironmentImpl <em>Execution Environment</em>}' class.
@@ -44559,7 +44559,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getExecutionEnvironment()
 	 * @generated
 	 */
-	int EXECUTION_ENVIRONMENT = 224;
+	int EXECUTION_ENVIRONMENT = 221;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.CommunicationPathImpl <em>Communication Path</em>}' class.
@@ -44569,7 +44569,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getCommunicationPath()
 	 * @generated
 	 */
-	int COMMUNICATION_PATH = 225;
+	int COMMUNICATION_PATH = 222;
 
 	/**
 	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
@@ -44923,15 +44923,6 @@
 	int PROTOCOL_STATE_MACHINE__REDEFINED_CLASSIFIER = STATE_MACHINE__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT = STATE_MACHINE__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -44941,6 +44932,15 @@
 	int PROTOCOL_STATE_MACHINE__SUBSTITUTION = STATE_MACHINE__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT = STATE_MACHINE__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -45469,6 +45469,501 @@
 	 * @generated
 	 * @ordered
 	 */
+	int COMPONENT__EANNOTATIONS = CLASS__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_ELEMENT = CLASS__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNER = CLASS__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_COMMENT = CLASS__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__TEMPLATE_BINDING = CLASS__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_TEMPLATE_SIGNATURE = CLASS__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__NAME = CLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__QUALIFIED_NAME = CLASS__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__VISIBILITY = CLASS__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__CLIENT_DEPENDENCY = CLASS__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__NAME_EXPRESSION = CLASS__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__MEMBER = CLASS__MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_RULE = CLASS__OWNED_RULE;
+
+	/**
+	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IMPORTED_MEMBER = CLASS__IMPORTED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ELEMENT_IMPORT = CLASS__ELEMENT_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PACKAGE_IMPORT = CLASS__PACKAGE_IMPORT;
+
+	/**
+	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__TEMPLATE_PARAMETER = CLASS__TEMPLATE_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNING_PARAMETER = CLASS__OWNING_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PACKAGEABLE_ELEMENT_VISIBILITY = CLASS__PACKAGEABLE_ELEMENT_VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Package</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PACKAGE = CLASS__PACKAGE;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REDEFINITION_CONTEXT = CLASS__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IS_LEAF = CLASS__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Feature</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__FEATURE = CLASS__FEATURE;
+
+	/**
+	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IS_ABSTRACT = CLASS__IS_ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__INHERITED_MEMBER = CLASS__INHERITED_MEMBER;
+
+	/**
+	 * The feature id for the '<em><b>General</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__GENERAL = CLASS__GENERAL;
+
+	/**
+	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__GENERALIZATION = CLASS__GENERALIZATION;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ATTRIBUTE = CLASS__ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__SUBSTITUTION = CLASS__SUBSTITUTION;
+
+	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_USE_CASE = CLASS__OWNED_USE_CASE;
+
+	/**
+	 * The feature id for the '<em><b>Representation</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REPRESENTATION = CLASS__REPRESENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OCCURRENCE = CLASS__OCCURRENCE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_ATTRIBUTE = CLASS__OWNED_ATTRIBUTE;
+
+	/**
+	 * The feature id for the '<em><b>Part</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PART = CLASS__PART;
+
+	/**
+	 * The feature id for the '<em><b>Role</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ROLE = CLASS__ROLE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Connector</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_CONNECTOR = CLASS__OWNED_CONNECTOR;
+
+	/**
+	 * The feature id for the '<em><b>Owned Port</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_PORT = CLASS__OWNED_PORT;
+
+	/**
+	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_BEHAVIOR = CLASS__OWNED_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__CLASSIFIER_BEHAVIOR = CLASS__CLASSIFIER_BEHAVIOR;
+
+	/**
+	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IMPLEMENTATION = CLASS__IMPLEMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_STATE_MACHINE = CLASS__OWNED_STATE_MACHINE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_OPERATION = CLASS__OWNED_OPERATION;
+
+	/**
+	 * The feature id for the '<em><b>Super Class</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__SUPER_CLASS = CLASS__SUPER_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Extension</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__EXTENSION = CLASS__EXTENSION;
+
+	/**
+	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__NESTED_CLASSIFIER = CLASS__NESTED_CLASSIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IS_ACTIVE = CLASS__IS_ACTIVE;
+
+	/**
+	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_RECEPTION = CLASS__OWNED_RECEPTION;
+
+	/**
+	 * The feature id for the '<em><b>Is Indirectly Instantiated</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__IS_INDIRECTLY_INSTANTIATED = CLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Required</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REQUIRED = CLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Provided</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__PROVIDED = CLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Realization</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__REALIZATION = CLASS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Owned Member</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OWNED_MEMBER = CLASS_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_FEATURE_COUNT = CLASS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
 	int TIME_EXPRESSION__EANNOTATIONS = VALUE_SPECIFICATION__EANNOTATIONS;
 
 	/**
@@ -47341,456 +47836,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int DATA_STORE_NODE__EANNOTATIONS = CENTRAL_BUFFER_NODE__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__OWNED_ELEMENT = CENTRAL_BUFFER_NODE__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__OWNER = CENTRAL_BUFFER_NODE__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__OWNED_COMMENT = CENTRAL_BUFFER_NODE__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__TEMPLATE_BINDING = CENTRAL_BUFFER_NODE__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__OWNED_TEMPLATE_SIGNATURE = CENTRAL_BUFFER_NODE__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__NAME = CENTRAL_BUFFER_NODE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__QUALIFIED_NAME = CENTRAL_BUFFER_NODE__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__VISIBILITY = CENTRAL_BUFFER_NODE__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__CLIENT_DEPENDENCY = CENTRAL_BUFFER_NODE__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__NAME_EXPRESSION = CENTRAL_BUFFER_NODE__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__REDEFINITION_CONTEXT = CENTRAL_BUFFER_NODE__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IS_LEAF = CENTRAL_BUFFER_NODE__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__OUTGOING = CENTRAL_BUFFER_NODE__OUTGOING;
-
-	/**
-	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__INCOMING = CENTRAL_BUFFER_NODE__INCOMING;
-
-	/**
-	 * The feature id for the '<em><b>In Group</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IN_GROUP = CENTRAL_BUFFER_NODE__IN_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__ACTIVITY = CENTRAL_BUFFER_NODE__ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__REDEFINED_ELEMENT = CENTRAL_BUFFER_NODE__REDEFINED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IN_STRUCTURED_NODE = CENTRAL_BUFFER_NODE__IN_STRUCTURED_NODE;
-
-	/**
-	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IN_PARTITION = CENTRAL_BUFFER_NODE__IN_PARTITION;
-
-	/**
-	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IN_INTERRUPTIBLE_REGION = CENTRAL_BUFFER_NODE__IN_INTERRUPTIBLE_REGION;
-
-	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__TYPE = CENTRAL_BUFFER_NODE__TYPE;
-
-	/**
-	 * The feature id for the '<em><b>Ordering</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__ORDERING = CENTRAL_BUFFER_NODE__ORDERING;
-
-	/**
-	 * The feature id for the '<em><b>Upper Bound</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__UPPER_BOUND = CENTRAL_BUFFER_NODE__UPPER_BOUND;
-
-	/**
-	 * The feature id for the '<em><b>In State</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__IN_STATE = CENTRAL_BUFFER_NODE__IN_STATE;
-
-	/**
-	 * The feature id for the '<em><b>Selection</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE__SELECTION = CENTRAL_BUFFER_NODE__SELECTION;
-
-	/**
-	 * The number of structural features of the the '<em>Data Store Node</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DATA_STORE_NODE_FEATURE_COUNT = CENTRAL_BUFFER_NODE_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS = ACTIVITY_GROUP__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__OWNED_ELEMENT = ACTIVITY_GROUP__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__OWNER = ACTIVITY_GROUP__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__OWNED_COMMENT = ACTIVITY_GROUP__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Super Group</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__SUPER_GROUP = ACTIVITY_GROUP__SUPER_GROUP;
-
-	/**
-	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__ACTIVITY_GROUP_ACTIVITY = ACTIVITY_GROUP__ACTIVITY_GROUP_ACTIVITY;
-
-	/**
-	 * The feature id for the '<em><b>Interrupting Edge</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE = ACTIVITY_GROUP_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Contained Node</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE = ACTIVITY_GROUP_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Interruptible Activity Region</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int INTERRUPTIBLE_ACTIVITY_REGION_FEATURE_COUNT = ACTIVITY_GROUP_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__OWNER = NAMED_ELEMENT__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__NAME = NAMED_ELEMENT__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__PARAMETER = NAMED_ELEMENT_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Condition</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET__CONDITION = NAMED_ELEMENT_FEATURE_COUNT + 1;
-
-	/**
-	 * The number of structural features of the the '<em>Parameter Set</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PARAMETER_SET_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int READ_EXTENT_ACTION__EANNOTATIONS = ACTION__EANNOTATIONS;
 
 	/**
@@ -50977,501 +51022,6 @@
 	 * @generated
 	 * @ordered
 	 */
-	int COMPONENT__EANNOTATIONS = CLASS__EANNOTATIONS;
-
-	/**
-	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_ELEMENT = CLASS__OWNED_ELEMENT;
-
-	/**
-	 * The feature id for the '<em><b>Owner</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNER = CLASS__OWNER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_COMMENT = CLASS__OWNED_COMMENT;
-
-	/**
-	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__TEMPLATE_BINDING = CLASS__TEMPLATE_BINDING;
-
-	/**
-	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_TEMPLATE_SIGNATURE = CLASS__OWNED_TEMPLATE_SIGNATURE;
-
-	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__NAME = CLASS__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__QUALIFIED_NAME = CLASS__QUALIFIED_NAME;
-
-	/**
-	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__VISIBILITY = CLASS__VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__CLIENT_DEPENDENCY = CLASS__CLIENT_DEPENDENCY;
-
-	/**
-	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__NAME_EXPRESSION = CLASS__NAME_EXPRESSION;
-
-	/**
-	 * The feature id for the '<em><b>Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__MEMBER = CLASS__MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Owned Rule</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_RULE = CLASS__OWNED_RULE;
-
-	/**
-	 * The feature id for the '<em><b>Imported Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IMPORTED_MEMBER = CLASS__IMPORTED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>Element Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__ELEMENT_IMPORT = CLASS__ELEMENT_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Package Import</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__PACKAGE_IMPORT = CLASS__PACKAGE_IMPORT;
-
-	/**
-	 * The feature id for the '<em><b>Template Parameter</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__TEMPLATE_PARAMETER = CLASS__TEMPLATE_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Owning Parameter</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNING_PARAMETER = CLASS__OWNING_PARAMETER;
-
-	/**
-	 * The feature id for the '<em><b>Packageable Element visibility</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__PACKAGEABLE_ELEMENT_VISIBILITY = CLASS__PACKAGEABLE_ELEMENT_VISIBILITY;
-
-	/**
-	 * The feature id for the '<em><b>Package</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__PACKAGE = CLASS__PACKAGE;
-
-	/**
-	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__REDEFINITION_CONTEXT = CLASS__REDEFINITION_CONTEXT;
-
-	/**
-	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IS_LEAF = CLASS__IS_LEAF;
-
-	/**
-	 * The feature id for the '<em><b>Feature</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__FEATURE = CLASS__FEATURE;
-
-	/**
-	 * The feature id for the '<em><b>Is Abstract</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IS_ABSTRACT = CLASS__IS_ABSTRACT;
-
-	/**
-	 * The feature id for the '<em><b>Inherited Member</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__INHERITED_MEMBER = CLASS__INHERITED_MEMBER;
-
-	/**
-	 * The feature id for the '<em><b>General</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__GENERAL = CLASS__GENERAL;
-
-	/**
-	 * The feature id for the '<em><b>Generalization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__GENERALIZATION = CLASS__GENERALIZATION;
-
-	/**
-	 * The feature id for the '<em><b>Attribute</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__ATTRIBUTE = CLASS__ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Redefined Classifier</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
-
-	/**
-	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__SUBSTITUTION = CLASS__SUBSTITUTION;
-
-	/**
-	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_USE_CASE = CLASS__OWNED_USE_CASE;
-
-	/**
-	 * The feature id for the '<em><b>Representation</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__REPRESENTATION = CLASS__REPRESENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Occurrence</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OCCURRENCE = CLASS__OCCURRENCE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Attribute</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_ATTRIBUTE = CLASS__OWNED_ATTRIBUTE;
-
-	/**
-	 * The feature id for the '<em><b>Part</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__PART = CLASS__PART;
-
-	/**
-	 * The feature id for the '<em><b>Role</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__ROLE = CLASS__ROLE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Connector</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_CONNECTOR = CLASS__OWNED_CONNECTOR;
-
-	/**
-	 * The feature id for the '<em><b>Owned Port</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_PORT = CLASS__OWNED_PORT;
-
-	/**
-	 * The feature id for the '<em><b>Owned Behavior</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_BEHAVIOR = CLASS__OWNED_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Classifier Behavior</b></em>' reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__CLASSIFIER_BEHAVIOR = CLASS__CLASSIFIER_BEHAVIOR;
-
-	/**
-	 * The feature id for the '<em><b>Implementation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IMPLEMENTATION = CLASS__IMPLEMENTATION;
-
-	/**
-	 * The feature id for the '<em><b>Owned State Machine</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_STATE_MACHINE = CLASS__OWNED_STATE_MACHINE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Operation</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_OPERATION = CLASS__OWNED_OPERATION;
-
-	/**
-	 * The feature id for the '<em><b>Super Class</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__SUPER_CLASS = CLASS__SUPER_CLASS;
-
-	/**
-	 * The feature id for the '<em><b>Extension</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__EXTENSION = CLASS__EXTENSION;
-
-	/**
-	 * The feature id for the '<em><b>Nested Classifier</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__NESTED_CLASSIFIER = CLASS__NESTED_CLASSIFIER;
-
-	/**
-	 * The feature id for the '<em><b>Is Active</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IS_ACTIVE = CLASS__IS_ACTIVE;
-
-	/**
-	 * The feature id for the '<em><b>Owned Reception</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_RECEPTION = CLASS__OWNED_RECEPTION;
-
-	/**
-	 * The feature id for the '<em><b>Is Indirectly Instantiated</b></em>' attribute.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__IS_INDIRECTLY_INSTANTIATED = CLASS_FEATURE_COUNT + 0;
-
-	/**
-	 * The feature id for the '<em><b>Required</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__REQUIRED = CLASS_FEATURE_COUNT + 1;
-
-	/**
-	 * The feature id for the '<em><b>Provided</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__PROVIDED = CLASS_FEATURE_COUNT + 2;
-
-	/**
-	 * The feature id for the '<em><b>Realization</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__REALIZATION = CLASS_FEATURE_COUNT + 3;
-
-	/**
-	 * The feature id for the '<em><b>Owned Member</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT__OWNED_MEMBER = CLASS_FEATURE_COUNT + 4;
-
-	/**
-	 * The number of structural features of the the '<em>Component</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMPONENT_FEATURE_COUNT = CLASS_FEATURE_COUNT + 5;
-
-	/**
-	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
 	int DEPLOYMENT__EANNOTATIONS = DEPENDENCY__EANNOTATIONS;
 
 	/**
@@ -52168,15 +51718,6 @@
 	int NODE__REDEFINED_CLASSIFIER = CLASS__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int NODE__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -52186,6 +51727,15 @@
 	int NODE__SUBSTITUTION = CLASS__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NODE__POWERTYPE_EXTENT = CLASS__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -52645,15 +52195,6 @@
 	int DEVICE__REDEFINED_CLASSIFIER = NODE__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEVICE__POWERTYPE_EXTENT = NODE__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -52663,6 +52204,15 @@
 	int DEVICE__SUBSTITUTION = NODE__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__POWERTYPE_EXTENT = NODE__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53122,15 +52672,6 @@
 	int EXECUTION_ENVIRONMENT__REDEFINED_CLASSIFIER = NODE__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT = NODE__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53140,6 +52681,15 @@
 	int EXECUTION_ENVIRONMENT__SUBSTITUTION = NODE__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT = NODE__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53599,15 +53149,6 @@
 	int COMMUNICATION_PATH__REDEFINED_CLASSIFIER = ASSOCIATION__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int COMMUNICATION_PATH__POWERTYPE_EXTENT = ASSOCIATION__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53617,6 +53158,15 @@
 	int COMMUNICATION_PATH__SUBSTITUTION = ASSOCIATION__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMMUNICATION_PATH__POWERTYPE_EXTENT = ASSOCIATION__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53698,6 +53248,456 @@
 	int COMMUNICATION_PATH_FEATURE_COUNT = ASSOCIATION_FEATURE_COUNT + 0;
 
 	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__EANNOTATIONS = CENTRAL_BUFFER_NODE__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__OWNED_ELEMENT = CENTRAL_BUFFER_NODE__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__OWNER = CENTRAL_BUFFER_NODE__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__OWNED_COMMENT = CENTRAL_BUFFER_NODE__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__TEMPLATE_BINDING = CENTRAL_BUFFER_NODE__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__OWNED_TEMPLATE_SIGNATURE = CENTRAL_BUFFER_NODE__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__NAME = CENTRAL_BUFFER_NODE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__QUALIFIED_NAME = CENTRAL_BUFFER_NODE__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__VISIBILITY = CENTRAL_BUFFER_NODE__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__CLIENT_DEPENDENCY = CENTRAL_BUFFER_NODE__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__NAME_EXPRESSION = CENTRAL_BUFFER_NODE__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Redefinition Context</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__REDEFINITION_CONTEXT = CENTRAL_BUFFER_NODE__REDEFINITION_CONTEXT;
+
+	/**
+	 * The feature id for the '<em><b>Is Leaf</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IS_LEAF = CENTRAL_BUFFER_NODE__IS_LEAF;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__OUTGOING = CENTRAL_BUFFER_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__INCOMING = CENTRAL_BUFFER_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>In Group</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IN_GROUP = CENTRAL_BUFFER_NODE__IN_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__ACTIVITY = CENTRAL_BUFFER_NODE__ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Redefined Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__REDEFINED_ELEMENT = CENTRAL_BUFFER_NODE__REDEFINED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>In Structured Node</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IN_STRUCTURED_NODE = CENTRAL_BUFFER_NODE__IN_STRUCTURED_NODE;
+
+	/**
+	 * The feature id for the '<em><b>In Partition</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IN_PARTITION = CENTRAL_BUFFER_NODE__IN_PARTITION;
+
+	/**
+	 * The feature id for the '<em><b>In Interruptible Region</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IN_INTERRUPTIBLE_REGION = CENTRAL_BUFFER_NODE__IN_INTERRUPTIBLE_REGION;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__TYPE = CENTRAL_BUFFER_NODE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Ordering</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__ORDERING = CENTRAL_BUFFER_NODE__ORDERING;
+
+	/**
+	 * The feature id for the '<em><b>Upper Bound</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__UPPER_BOUND = CENTRAL_BUFFER_NODE__UPPER_BOUND;
+
+	/**
+	 * The feature id for the '<em><b>In State</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__IN_STATE = CENTRAL_BUFFER_NODE__IN_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Selection</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE__SELECTION = CENTRAL_BUFFER_NODE__SELECTION;
+
+	/**
+	 * The number of structural features of the the '<em>Data Store Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_STORE_NODE_FEATURE_COUNT = CENTRAL_BUFFER_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__EANNOTATIONS = ACTIVITY_GROUP__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__OWNED_ELEMENT = ACTIVITY_GROUP__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__OWNER = ACTIVITY_GROUP__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__OWNED_COMMENT = ACTIVITY_GROUP__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Super Group</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__SUPER_GROUP = ACTIVITY_GROUP__SUPER_GROUP;
+
+	/**
+	 * The feature id for the '<em><b>Activity Group activity</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__ACTIVITY_GROUP_ACTIVITY = ACTIVITY_GROUP__ACTIVITY_GROUP_ACTIVITY;
+
+	/**
+	 * The feature id for the '<em><b>Interrupting Edge</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE = ACTIVITY_GROUP_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Contained Node</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE = ACTIVITY_GROUP_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Interruptible Activity Region</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERRUPTIBLE_ACTIVITY_REGION_FEATURE_COUNT = ACTIVITY_GROUP_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>EAnnotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__EANNOTATIONS = NAMED_ELEMENT__EANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Owned Element</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__OWNED_ELEMENT = NAMED_ELEMENT__OWNED_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__OWNER = NAMED_ELEMENT__OWNER;
+
+	/**
+	 * The feature id for the '<em><b>Owned Comment</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__OWNED_COMMENT = NAMED_ELEMENT__OWNED_COMMENT;
+
+	/**
+	 * The feature id for the '<em><b>Template Binding</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__TEMPLATE_BINDING = NAMED_ELEMENT__TEMPLATE_BINDING;
+
+	/**
+	 * The feature id for the '<em><b>Owned Template Signature</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__OWNED_TEMPLATE_SIGNATURE = NAMED_ELEMENT__OWNED_TEMPLATE_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Qualified Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__QUALIFIED_NAME = NAMED_ELEMENT__QUALIFIED_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__VISIBILITY = NAMED_ELEMENT__VISIBILITY;
+
+	/**
+	 * The feature id for the '<em><b>Client Dependency</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__CLIENT_DEPENDENCY = NAMED_ELEMENT__CLIENT_DEPENDENCY;
+
+	/**
+	 * The feature id for the '<em><b>Name Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__NAME_EXPRESSION = NAMED_ELEMENT__NAME_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Parameter</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__PARAMETER = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Condition</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET__CONDITION = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the the '<em>Parameter Set</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER_SET_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.impl.DeploymentSpecificationImpl <em>Deployment Specification</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53969,15 +53969,6 @@
 	int DEPLOYMENT_SPECIFICATION__REDEFINED_CLASSIFIER = ARTIFACT__REDEFINED_CLASSIFIER;
 
 	/**
-	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT = ARTIFACT__POWERTYPE_EXTENT;
-
-	/**
 	 * The feature id for the '<em><b>Substitution</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -53987,6 +53978,15 @@
 	int DEPLOYMENT_SPECIFICATION__SUBSTITUTION = ARTIFACT__SUBSTITUTION;
 
 	/**
+	 * The feature id for the '<em><b>Powertype Extent</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT = ARTIFACT__POWERTYPE_EXTENT;
+
+	/**
 	 * The feature id for the '<em><b>Owned Use Case</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -54163,7 +54163,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getTransitionKind()
 	 * @generated
 	 */
-	int TRANSITION_KIND = 234;
+	int TRANSITION_KIND = 233;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.PseudostateKind <em>Pseudostate Kind</em>}' enum.
@@ -54173,7 +54173,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getPseudostateKind()
 	 * @generated
 	 */
-	int PSEUDOSTATE_KIND = 235;
+	int PSEUDOSTATE_KIND = 234;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.ObjectNodeOrderingKind <em>Object Node Ordering Kind</em>}' enum.
@@ -54183,7 +54183,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getObjectNodeOrderingKind()
 	 * @generated
 	 */
-	int OBJECT_NODE_ORDERING_KIND = 238;
+	int OBJECT_NODE_ORDERING_KIND = 239;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.InteractionOperator <em>Interaction Operator</em>}' enum.
@@ -54193,7 +54193,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getInteractionOperator()
 	 * @generated
 	 */
-	int INTERACTION_OPERATOR = 233;
+	int INTERACTION_OPERATOR = 235;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.ConnectorKind <em>Connector Kind</em>}' enum.
@@ -54203,7 +54203,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getConnectorKind()
 	 * @generated
 	 */
-	int CONNECTOR_KIND = 239;
+	int CONNECTOR_KIND = 237;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.uml2.ParameterEffectKind <em>Parameter Effect Kind</em>}' enum.
@@ -54213,7 +54213,7 @@
 	 * @see org.eclipse.uml2.impl.UML2PackageImpl#getParameterEffectKind()
 	 * @generated
 	 */
-	int PARAMETER_EFFECT_KIND = 237;
+	int PARAMETER_EFFECT_KIND = 238;
 
 	/**
 	 * The meta object id for the '<em>Integer</em>' data type.
@@ -58835,11 +58835,11 @@
 	EReference getTemplateParameterSubstitution_Actual();
 
 	/**
-	 * Returns the meta object for the containment reference '{@link org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActual <em>Owned Actual</em>}'.
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActuals <em>Owned Actual</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference '<em>Owned Actual</em>'.
-	 * @see org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActual()
+	 * @return the meta object for the containment reference list '<em>Owned Actual</em>'.
+	 * @see org.eclipse.uml2.TemplateParameterSubstitution#getOwnedActuals()
 	 * @see #getTemplateParameterSubstitution()
 	 * @generated
 	 */
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActivityImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActivityImpl.java
index 8a26559..f1510a3 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActivityImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActivityImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActivityImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ActivityImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -630,10 +630,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ACTIVITY__OWNING_PARAMETER, msgs);
 				case UML2Package.ACTIVITY__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ACTIVITY__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ACTIVITY__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.ACTIVITY__IMPLEMENTATION:
@@ -709,10 +709,10 @@
 					return eBasicSetContainer(null, UML2Package.ACTIVITY__OWNING_PARAMETER, msgs);
 				case UML2Package.ACTIVITY__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTIVITY__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTIVITY__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTIVITY__OCCURRENCE:
@@ -853,10 +853,10 @@
 				return getAttributes();
 			case UML2Package.ACTIVITY__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ACTIVITY__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ACTIVITY__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ACTIVITY__REPRESENTATION:
@@ -1004,14 +1004,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ACTIVITY__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ACTIVITY__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -1183,12 +1183,12 @@
 			case UML2Package.ACTIVITY__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ACTIVITY__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ACTIVITY__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1345,10 +1345,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ACTIVITY__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ACTIVITY__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ACTIVITY__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ACTIVITY__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ACTIVITY__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActorImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActorImpl.java
index 16dbb6a..5ba3138 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActorImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ActorImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ActorImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ActorImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -96,10 +96,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ACTOR__OWNING_PARAMETER, msgs);
 				case UML2Package.ACTOR__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ACTOR__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ACTOR__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ACTOR__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -141,10 +141,10 @@
 					return eBasicSetContainer(null, UML2Package.ACTOR__OWNING_PARAMETER, msgs);
 				case UML2Package.ACTOR__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ACTOR__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTOR__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ACTOR__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTOR__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ACTOR__OCCURRENCE:
@@ -241,10 +241,10 @@
 				return getAttributes();
 			case UML2Package.ACTOR__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ACTOR__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ACTOR__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ACTOR__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ACTOR__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ACTOR__REPRESENTATION:
@@ -325,14 +325,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ACTOR__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ACTOR__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ACTOR__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ACTOR__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -409,12 +409,12 @@
 			case UML2Package.ACTOR__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ACTOR__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ACTOR__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ACTOR__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ACTOR__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -493,10 +493,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ACTOR__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ACTOR__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ACTOR__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ACTOR__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ACTOR__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ACTOR__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ArtifactImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ArtifactImpl.java
index e84c3c7..1d1e752 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ArtifactImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ArtifactImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ArtifactImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ArtifactImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -514,10 +514,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ARTIFACT__OWNING_PARAMETER, msgs);
 				case UML2Package.ARTIFACT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ARTIFACT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -559,10 +559,10 @@
 					return eBasicSetContainer(null, UML2Package.ARTIFACT__OWNING_PARAMETER, msgs);
 				case UML2Package.ARTIFACT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ARTIFACT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ARTIFACT__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ARTIFACT__OCCURRENCE:
@@ -667,10 +667,10 @@
 				return getAttributes();
 			case UML2Package.ARTIFACT__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ARTIFACT__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ARTIFACT__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ARTIFACT__REPRESENTATION:
@@ -761,14 +761,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ARTIFACT__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ARTIFACT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -864,12 +864,12 @@
 			case UML2Package.ARTIFACT__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ARTIFACT__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ARTIFACT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -963,10 +963,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ARTIFACT__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ARTIFACT__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ARTIFACT__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ARTIFACT__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ARTIFACT__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationClassImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationClassImpl.java
index 49e10d6..0d46776 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationClassImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationClassImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AssociationClassImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: AssociationClassImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -425,10 +425,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ASSOCIATION_CLASS__OWNING_PARAMETER, msgs);
 				case UML2Package.ASSOCIATION_CLASS__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__IMPLEMENTATION:
@@ -482,10 +482,10 @@
 					return eBasicSetContainer(null, UML2Package.ASSOCIATION_CLASS__OWNING_PARAMETER, msgs);
 				case UML2Package.ASSOCIATION_CLASS__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION_CLASS__OCCURRENCE:
@@ -604,10 +604,10 @@
 				return getAttributes();
 			case UML2Package.ASSOCIATION_CLASS__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ASSOCIATION_CLASS__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ASSOCIATION_CLASS__REPRESENTATION:
@@ -728,14 +728,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ASSOCIATION_CLASS__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -865,12 +865,12 @@
 			case UML2Package.ASSOCIATION_CLASS__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ASSOCIATION_CLASS__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -991,10 +991,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ASSOCIATION_CLASS__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ASSOCIATION_CLASS__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ASSOCIATION_CLASS__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ASSOCIATION_CLASS__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ASSOCIATION_CLASS__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationImpl.java
index 72a15ab..8b77872 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/AssociationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AssociationImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: AssociationImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -418,10 +418,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ASSOCIATION__OWNING_PARAMETER, msgs);
 				case UML2Package.ASSOCIATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__OWNED_END:
 					return ((InternalEList)getOwnedEnds()).basicAdd(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__MEMBER_END:
@@ -467,10 +467,10 @@
 					return eBasicSetContainer(null, UML2Package.ASSOCIATION__OWNING_PARAMETER, msgs);
 				case UML2Package.ASSOCIATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ASSOCIATION__OCCURRENCE:
@@ -571,10 +571,10 @@
 				return getAttributes();
 			case UML2Package.ASSOCIATION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ASSOCIATION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ASSOCIATION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ASSOCIATION__REPRESENTATION:
@@ -665,14 +665,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ASSOCIATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ASSOCIATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -760,12 +760,12 @@
 			case UML2Package.ASSOCIATION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ASSOCIATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ASSOCIATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -853,10 +853,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ASSOCIATION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ASSOCIATION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ASSOCIATION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ASSOCIATION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ASSOCIATION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehaviorImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehaviorImpl.java
index da1cfc3..4ce3361 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehaviorImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehaviorImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BehaviorImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: BehaviorImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -644,10 +644,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.BEHAVIOR__OWNING_PARAMETER, msgs);
 				case UML2Package.BEHAVIOR__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__IMPLEMENTATION:
@@ -705,10 +705,10 @@
 					return eBasicSetContainer(null, UML2Package.BEHAVIOR__OWNING_PARAMETER, msgs);
 				case UML2Package.BEHAVIOR__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIOR__OCCURRENCE:
@@ -831,10 +831,10 @@
 				return getAttributes();
 			case UML2Package.BEHAVIOR__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.BEHAVIOR__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.BEHAVIOR__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.BEHAVIOR__REPRESENTATION:
@@ -964,14 +964,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.BEHAVIOR__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.BEHAVIOR__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -1115,12 +1115,12 @@
 			case UML2Package.BEHAVIOR__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.BEHAVIOR__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.BEHAVIOR__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1253,10 +1253,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.BEHAVIOR__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.BEHAVIOR__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.BEHAVIOR__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.BEHAVIOR__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.BEHAVIOR__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehavioredClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehavioredClassifierImpl.java
index a21e3e1..0b334d4 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehavioredClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/BehavioredClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: BehavioredClassifierImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: BehavioredClassifierImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -412,10 +412,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.BEHAVIORED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__IMPLEMENTATION:
@@ -463,10 +463,10 @@
 					return eBasicSetContainer(null, UML2Package.BEHAVIORED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.BEHAVIORED_CLASSIFIER__OCCURRENCE:
@@ -569,10 +569,10 @@
 				return getAttributes();
 			case UML2Package.BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.BEHAVIORED_CLASSIFIER__REPRESENTATION:
@@ -661,14 +661,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -760,12 +760,12 @@
 			case UML2Package.BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -856,10 +856,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.BEHAVIORED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.BEHAVIORED_CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.BEHAVIORED_CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.BEHAVIORED_CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.BEHAVIORED_CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassImpl.java
index 9620150..66d3f8e 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClassImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ClassImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -894,10 +894,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.CLASS__OWNING_PARAMETER, msgs);
 				case UML2Package.CLASS__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.CLASS__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.CLASS__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.CLASS__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.CLASS__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.CLASS__IMPLEMENTATION:
@@ -947,10 +947,10 @@
 					return eBasicSetContainer(null, UML2Package.CLASS__OWNING_PARAMETER, msgs);
 				case UML2Package.CLASS__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.CLASS__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASS__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.CLASS__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASS__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASS__OCCURRENCE:
@@ -1065,10 +1065,10 @@
 				return getAttributes();
 			case UML2Package.CLASS__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.CLASS__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.CLASS__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.CLASS__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.CLASS__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.CLASS__REPRESENTATION:
@@ -1179,14 +1179,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.CLASS__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.CLASS__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.CLASS__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.CLASS__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -1305,12 +1305,12 @@
 			case UML2Package.CLASS__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.CLASS__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.CLASS__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.CLASS__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.CLASS__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1422,10 +1422,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.CLASS__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.CLASS__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.CLASS__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.CLASS__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.CLASS__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.CLASS__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassifierImpl.java
index 93d66c8..654658c 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ClassifierImpl.java,v 1.5 2004/04/27 16:43:13 khussey Exp $
+ * $Id: ClassifierImpl.java,v 1.6 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -84,8 +84,8 @@
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getGeneralizations <em>Generalization</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getAttributes <em>Attribute</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getRedefinedClassifiers <em>Redefined Classifier</em>}</li>
- *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getPowertypeExtents <em>Powertype Extent</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getSubstitutions <em>Substitution</em>}</li>
+ *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getPowertypeExtents <em>Powertype Extent</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getOwnedUseCases <em>Owned Use Case</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getRepresentation <em>Representation</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.ClassifierImpl#getOccurrences <em>Occurrence</em>}</li>
@@ -193,16 +193,6 @@
 	protected EList redefinedClassifier = null;
 
 	/**
-	 * The cached value of the '{@link #getPowertypeExtents() <em>Powertype Extent</em>}' reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see #getPowertypeExtents()
-	 * @generated
-	 * @ordered
-	 */
-	protected EList powertypeExtent = null;
-
-	/**
 	 * The cached value of the '{@link #getSubstitutions() <em>Substitution</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -213,6 +203,16 @@
 	protected EList substitution = null;
 
 	/**
+	 * The cached value of the '{@link #getPowertypeExtents() <em>Powertype Extent</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPowertypeExtents()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList powertypeExtent = null;
+
+	/**
 	 * The cached value of the '{@link #getOwnedUseCases() <em>Owned Use Case</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1450,10 +1450,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -1495,10 +1495,10 @@
 					return eBasicSetContainer(null, UML2Package.CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.CLASSIFIER__OCCURRENCE:
@@ -1595,10 +1595,10 @@
 				return getAttributes();
 			case UML2Package.CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.CLASSIFIER__REPRESENTATION:
@@ -1679,14 +1679,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -1763,12 +1763,12 @@
 			case UML2Package.CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1847,10 +1847,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CollaborationImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CollaborationImpl.java
index 9eb4fd7..5ec515a 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CollaborationImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CollaborationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CollaborationImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: CollaborationImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -471,10 +471,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.COLLABORATION__OWNING_PARAMETER, msgs);
 				case UML2Package.COLLABORATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COLLABORATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COLLABORATION__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.COLLABORATION__IMPLEMENTATION:
@@ -522,10 +522,10 @@
 					return eBasicSetContainer(null, UML2Package.COLLABORATION__OWNING_PARAMETER, msgs);
 				case UML2Package.COLLABORATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COLLABORATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COLLABORATION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.COLLABORATION__OCCURRENCE:
@@ -632,10 +632,10 @@
 				return getAttributes();
 			case UML2Package.COLLABORATION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.COLLABORATION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.COLLABORATION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.COLLABORATION__REPRESENTATION:
@@ -734,14 +734,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.COLLABORATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.COLLABORATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -845,12 +845,12 @@
 			case UML2Package.COLLABORATION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.COLLABORATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.COLLABORATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -950,10 +950,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.COLLABORATION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COLLABORATION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.COLLABORATION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COLLABORATION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.COLLABORATION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CommunicationPathImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CommunicationPathImpl.java
index 223d422..e13e9de 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CommunicationPathImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/CommunicationPathImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: CommunicationPathImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: CommunicationPathImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -96,10 +96,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.COMMUNICATION_PATH__OWNING_PARAMETER, msgs);
 				case UML2Package.COMMUNICATION_PATH__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__OWNED_END:
 					return ((InternalEList)getOwnedEnds()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__MEMBER_END:
@@ -145,10 +145,10 @@
 					return eBasicSetContainer(null, UML2Package.COMMUNICATION_PATH__OWNING_PARAMETER, msgs);
 				case UML2Package.COMMUNICATION_PATH__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMMUNICATION_PATH__OCCURRENCE:
@@ -249,10 +249,10 @@
 				return getAttributes();
 			case UML2Package.COMMUNICATION_PATH__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.COMMUNICATION_PATH__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.COMMUNICATION_PATH__REPRESENTATION:
@@ -343,14 +343,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.COMMUNICATION_PATH__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -438,12 +438,12 @@
 			case UML2Package.COMMUNICATION_PATH__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.COMMUNICATION_PATH__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -531,10 +531,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.COMMUNICATION_PATH__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COMMUNICATION_PATH__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.COMMUNICATION_PATH__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COMMUNICATION_PATH__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.COMMUNICATION_PATH__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ComponentImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ComponentImpl.java
index 4435869..27b4ea4 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ComponentImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ComponentImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ComponentImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ComponentImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -485,10 +485,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.COMPONENT__OWNING_PARAMETER, msgs);
 				case UML2Package.COMPONENT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMPONENT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMPONENT__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.COMPONENT__IMPLEMENTATION:
@@ -540,10 +540,10 @@
 					return eBasicSetContainer(null, UML2Package.COMPONENT__OWNING_PARAMETER, msgs);
 				case UML2Package.COMPONENT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMPONENT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMPONENT__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.COMPONENT__OCCURRENCE:
@@ -662,10 +662,10 @@
 				return getAttributes();
 			case UML2Package.COMPONENT__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.COMPONENT__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.COMPONENT__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.COMPONENT__REPRESENTATION:
@@ -786,14 +786,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.COMPONENT__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.COMPONENT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -923,12 +923,12 @@
 			case UML2Package.COMPONENT__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.COMPONENT__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.COMPONENT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1049,10 +1049,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.COMPONENT__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COMPONENT__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.COMPONENT__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.COMPONENT__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.COMPONENT__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DataTypeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DataTypeImpl.java
index c568ff5..7477be2 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DataTypeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DataTypeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DataTypeImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: DataTypeImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -317,10 +317,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.DATA_TYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.DATA_TYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__OWNED_ATTRIBUTE:
 					return ((InternalEList)getOwnedAttributes()).basicAdd(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__OWNED_OPERATION:
@@ -366,10 +366,10 @@
 					return eBasicSetContainer(null, UML2Package.DATA_TYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.DATA_TYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.DATA_TYPE__OCCURRENCE:
@@ -470,10 +470,10 @@
 				return getAttributes();
 			case UML2Package.DATA_TYPE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.DATA_TYPE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.DATA_TYPE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.DATA_TYPE__REPRESENTATION:
@@ -558,14 +558,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.DATA_TYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.DATA_TYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -650,12 +650,12 @@
 			case UML2Package.DATA_TYPE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.DATA_TYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.DATA_TYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -740,10 +740,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.DATA_TYPE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DATA_TYPE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.DATA_TYPE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DATA_TYPE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.DATA_TYPE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeploymentSpecificationImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeploymentSpecificationImpl.java
index b855bbd..b1b4dce 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeploymentSpecificationImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeploymentSpecificationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeploymentSpecificationImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: DeploymentSpecificationImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -187,10 +187,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.DEPLOYMENT_SPECIFICATION__OWNING_PARAMETER, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -232,10 +232,10 @@
 					return eBasicSetContainer(null, UML2Package.DEPLOYMENT_SPECIFICATION__OWNING_PARAMETER, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEPLOYMENT_SPECIFICATION__OCCURRENCE:
@@ -340,10 +340,10 @@
 				return getAttributes();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__REPRESENTATION:
@@ -438,14 +438,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -547,12 +547,12 @@
 			case UML2Package.DEPLOYMENT_SPECIFICATION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -652,10 +652,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.DEPLOYMENT_SPECIFICATION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.DEPLOYMENT_SPECIFICATION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeviceImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeviceImpl.java
index 4c2b96a..8e12221 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeviceImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/DeviceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: DeviceImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: DeviceImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -97,10 +97,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.DEVICE__OWNING_PARAMETER, msgs);
 				case UML2Package.DEVICE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.DEVICE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.DEVICE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.DEVICE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.DEVICE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.DEVICE__IMPLEMENTATION:
@@ -152,10 +152,10 @@
 					return eBasicSetContainer(null, UML2Package.DEVICE__OWNING_PARAMETER, msgs);
 				case UML2Package.DEVICE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.DEVICE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEVICE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.DEVICE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEVICE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.DEVICE__OCCURRENCE:
@@ -274,10 +274,10 @@
 				return getAttributes();
 			case UML2Package.DEVICE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.DEVICE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.DEVICE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.DEVICE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.DEVICE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.DEVICE__REPRESENTATION:
@@ -394,14 +394,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.DEVICE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.DEVICE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.DEVICE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.DEVICE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -528,12 +528,12 @@
 			case UML2Package.DEVICE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.DEVICE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.DEVICE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.DEVICE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.DEVICE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -651,10 +651,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.DEVICE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.DEVICE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DEVICE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.DEVICE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.DEVICE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.DEVICE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EncapsulatedClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EncapsulatedClassifierImpl.java
index fc17a50..3a23a23 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EncapsulatedClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EncapsulatedClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EncapsulatedClassifierImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: EncapsulatedClassifierImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -219,10 +219,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ENCAPSULATED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -264,10 +264,10 @@
 					return eBasicSetContainer(null, UML2Package.ENCAPSULATED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENCAPSULATED_CLASSIFIER__OCCURRENCE:
@@ -370,10 +370,10 @@
 				return getAttributes();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__REPRESENTATION:
@@ -464,14 +464,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -560,12 +560,12 @@
 			case UML2Package.ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -653,10 +653,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ENCAPSULATED_CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ENCAPSULATED_CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EnumerationImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EnumerationImpl.java
index 8481a30..d3fa970 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EnumerationImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/EnumerationImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: EnumerationImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: EnumerationImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -192,10 +192,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.ENUMERATION__OWNING_PARAMETER, msgs);
 				case UML2Package.ENUMERATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ENUMERATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.ENUMERATION__OWNED_ATTRIBUTE:
 					return ((InternalEList)getOwnedAttributes()).basicAdd(otherEnd, msgs);
 				case UML2Package.ENUMERATION__OWNED_OPERATION:
@@ -243,10 +243,10 @@
 					return eBasicSetContainer(null, UML2Package.ENUMERATION__OWNING_PARAMETER, msgs);
 				case UML2Package.ENUMERATION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENUMERATION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENUMERATION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.ENUMERATION__OCCURRENCE:
@@ -349,10 +349,10 @@
 				return getAttributes();
 			case UML2Package.ENUMERATION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.ENUMERATION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.ENUMERATION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.ENUMERATION__REPRESENTATION:
@@ -439,14 +439,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.ENUMERATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.ENUMERATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -535,12 +535,12 @@
 			case UML2Package.ENUMERATION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.ENUMERATION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.ENUMERATION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -628,10 +628,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.ENUMERATION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ENUMERATION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.ENUMERATION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.ENUMERATION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.ENUMERATION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExecutionEnvironmentImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExecutionEnvironmentImpl.java
index 702101b..1bf9613 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExecutionEnvironmentImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExecutionEnvironmentImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExecutionEnvironmentImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ExecutionEnvironmentImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -97,10 +97,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.EXECUTION_ENVIRONMENT__OWNING_PARAMETER, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__IMPLEMENTATION:
@@ -152,10 +152,10 @@
 					return eBasicSetContainer(null, UML2Package.EXECUTION_ENVIRONMENT__OWNING_PARAMETER, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXECUTION_ENVIRONMENT__OCCURRENCE:
@@ -274,10 +274,10 @@
 				return getAttributes();
 			case UML2Package.EXECUTION_ENVIRONMENT__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.EXECUTION_ENVIRONMENT__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.EXECUTION_ENVIRONMENT__REPRESENTATION:
@@ -394,14 +394,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.EXECUTION_ENVIRONMENT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -528,12 +528,12 @@
 			case UML2Package.EXECUTION_ENVIRONMENT__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.EXECUTION_ENVIRONMENT__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -651,10 +651,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.EXECUTION_ENVIRONMENT__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.EXECUTION_ENVIRONMENT__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.EXECUTION_ENVIRONMENT__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.EXECUTION_ENVIRONMENT__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.EXECUTION_ENVIRONMENT__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExtensionImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExtensionImpl.java
index 637e7a4..51c6f29 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExtensionImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ExtensionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ExtensionImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ExtensionImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -203,10 +203,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.EXTENSION__OWNING_PARAMETER, msgs);
 				case UML2Package.EXTENSION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXTENSION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXTENSION__OWNED_END:
 					return ((InternalEList)getOwnedEnds()).basicAdd(otherEnd, msgs);
 				case UML2Package.EXTENSION__MEMBER_END:
@@ -252,10 +252,10 @@
 					return eBasicSetContainer(null, UML2Package.EXTENSION__OWNING_PARAMETER, msgs);
 				case UML2Package.EXTENSION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXTENSION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXTENSION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.EXTENSION__OCCURRENCE:
@@ -356,10 +356,10 @@
 				return getAttributes();
 			case UML2Package.EXTENSION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.EXTENSION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.EXTENSION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.EXTENSION__REPRESENTATION:
@@ -455,14 +455,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.EXTENSION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.EXTENSION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -550,12 +550,12 @@
 			case UML2Package.EXTENSION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.EXTENSION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.EXTENSION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -643,10 +643,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.EXTENSION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.EXTENSION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.EXTENSION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.EXTENSION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.EXTENSION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InformationItemImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InformationItemImpl.java
index 7421967..e7dd8c7 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InformationItemImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InformationItemImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InformationItemImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: InformationItemImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -145,10 +145,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.INFORMATION_ITEM__OWNING_PARAMETER, msgs);
 				case UML2Package.INFORMATION_ITEM__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -190,10 +190,10 @@
 					return eBasicSetContainer(null, UML2Package.INFORMATION_ITEM__OWNING_PARAMETER, msgs);
 				case UML2Package.INFORMATION_ITEM__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INFORMATION_ITEM__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.INFORMATION_ITEM__OCCURRENCE:
@@ -290,10 +290,10 @@
 				return getAttributes();
 			case UML2Package.INFORMATION_ITEM__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.INFORMATION_ITEM__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.INFORMATION_ITEM__REPRESENTATION:
@@ -376,14 +376,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.INFORMATION_ITEM__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -464,12 +464,12 @@
 			case UML2Package.INFORMATION_ITEM__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.INFORMATION_ITEM__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -551,10 +551,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.INFORMATION_ITEM__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INFORMATION_ITEM__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.INFORMATION_ITEM__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INFORMATION_ITEM__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.INFORMATION_ITEM__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InteractionImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InteractionImpl.java
index 25c3f73..1f2c6d3 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InteractionImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InteractionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InteractionImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: InteractionImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -619,10 +619,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.INTERACTION__OWNING_PARAMETER, msgs);
 				case UML2Package.INTERACTION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.INTERACTION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.INTERACTION__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.INTERACTION__IMPLEMENTATION:
@@ -696,10 +696,10 @@
 					return eBasicSetContainer(null, UML2Package.INTERACTION__OWNING_PARAMETER, msgs);
 				case UML2Package.INTERACTION__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERACTION__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERACTION__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERACTION__OCCURRENCE:
@@ -842,10 +842,10 @@
 				return getAttributes();
 			case UML2Package.INTERACTION__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.INTERACTION__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.INTERACTION__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.INTERACTION__REPRESENTATION:
@@ -991,14 +991,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.INTERACTION__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.INTERACTION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -1172,12 +1172,12 @@
 			case UML2Package.INTERACTION__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.INTERACTION__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.INTERACTION__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1334,10 +1334,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.INTERACTION__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INTERACTION__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.INTERACTION__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INTERACTION__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.INTERACTION__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InterfaceImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InterfaceImpl.java
index 7fb1d36..5653f01 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InterfaceImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/InterfaceImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: InterfaceImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: InterfaceImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -582,10 +582,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.INTERFACE__OWNING_PARAMETER, msgs);
 				case UML2Package.INTERFACE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.INTERFACE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -627,10 +627,10 @@
 					return eBasicSetContainer(null, UML2Package.INTERFACE__OWNING_PARAMETER, msgs);
 				case UML2Package.INTERFACE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERFACE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERFACE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.INTERFACE__OCCURRENCE:
@@ -737,10 +737,10 @@
 				return getAttributes();
 			case UML2Package.INTERFACE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.INTERFACE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.INTERFACE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.INTERFACE__REPRESENTATION:
@@ -833,14 +833,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.INTERFACE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.INTERFACE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -940,12 +940,12 @@
 			case UML2Package.INTERFACE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.INTERFACE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.INTERFACE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1042,10 +1042,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.INTERFACE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INTERFACE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.INTERFACE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.INTERFACE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.INTERFACE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/NodeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/NodeImpl.java
index 56d384a..161e20d 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/NodeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/NodeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: NodeImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: NodeImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -357,10 +357,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.NODE__OWNING_PARAMETER, msgs);
 				case UML2Package.NODE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.NODE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.NODE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.NODE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.NODE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.NODE__IMPLEMENTATION:
@@ -412,10 +412,10 @@
 					return eBasicSetContainer(null, UML2Package.NODE__OWNING_PARAMETER, msgs);
 				case UML2Package.NODE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.NODE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.NODE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.NODE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.NODE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.NODE__OCCURRENCE:
@@ -534,10 +534,10 @@
 				return getAttributes();
 			case UML2Package.NODE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.NODE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.NODE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.NODE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.NODE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.NODE__REPRESENTATION:
@@ -654,14 +654,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.NODE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.NODE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.NODE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.NODE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -788,12 +788,12 @@
 			case UML2Package.NODE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.NODE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.NODE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.NODE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.NODE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -911,10 +911,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.NODE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.NODE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.NODE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.NODE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.NODE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.NODE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ParameterableClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ParameterableClassifierImpl.java
index 6a89f41..70345ad 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ParameterableClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ParameterableClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ParameterableClassifierImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ParameterableClassifierImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -96,10 +96,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.PARAMETERABLE_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -141,10 +141,10 @@
 					return eBasicSetContainer(null, UML2Package.PARAMETERABLE_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.PARAMETERABLE_CLASSIFIER__OCCURRENCE:
@@ -241,10 +241,10 @@
 				return getAttributes();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__REPRESENTATION:
@@ -325,14 +325,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -409,12 +409,12 @@
 			case UML2Package.PARAMETERABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -493,10 +493,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.PARAMETERABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.PARAMETERABLE_CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/PrimitiveTypeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/PrimitiveTypeImpl.java
index 93bd2bf..f977571 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/PrimitiveTypeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/PrimitiveTypeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: PrimitiveTypeImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: PrimitiveTypeImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -96,10 +96,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.PRIMITIVE_TYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.PRIMITIVE_TYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__OWNED_ATTRIBUTE:
 					return ((InternalEList)getOwnedAttributes()).basicAdd(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__OWNED_OPERATION:
@@ -145,10 +145,10 @@
 					return eBasicSetContainer(null, UML2Package.PRIMITIVE_TYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.PRIMITIVE_TYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.PRIMITIVE_TYPE__OCCURRENCE:
@@ -249,10 +249,10 @@
 				return getAttributes();
 			case UML2Package.PRIMITIVE_TYPE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.PRIMITIVE_TYPE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.PRIMITIVE_TYPE__REPRESENTATION:
@@ -337,14 +337,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.PRIMITIVE_TYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -429,12 +429,12 @@
 			case UML2Package.PRIMITIVE_TYPE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.PRIMITIVE_TYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -519,10 +519,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.PRIMITIVE_TYPE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PRIMITIVE_TYPE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.PRIMITIVE_TYPE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PRIMITIVE_TYPE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.PRIMITIVE_TYPE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ProtocolStateMachineImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ProtocolStateMachineImpl.java
index f517ab6..c5eaabf 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ProtocolStateMachineImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/ProtocolStateMachineImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProtocolStateMachineImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: ProtocolStateMachineImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -181,10 +181,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.PROTOCOL_STATE_MACHINE__OWNING_PARAMETER, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__IMPLEMENTATION:
@@ -248,10 +248,10 @@
 					return eBasicSetContainer(null, UML2Package.PROTOCOL_STATE_MACHINE__OWNING_PARAMETER, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.PROTOCOL_STATE_MACHINE__OCCURRENCE:
@@ -384,10 +384,10 @@
 				return getAttributes();
 			case UML2Package.PROTOCOL_STATE_MACHINE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.PROTOCOL_STATE_MACHINE__REPRESENTATION:
@@ -528,14 +528,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -697,12 +697,12 @@
 			case UML2Package.PROTOCOL_STATE_MACHINE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -850,10 +850,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.PROTOCOL_STATE_MACHINE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PROTOCOL_STATE_MACHINE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.PROTOCOL_STATE_MACHINE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.PROTOCOL_STATE_MACHINE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.PROTOCOL_STATE_MACHINE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/SignalImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/SignalImpl.java
index bcd74db..c123b1c 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/SignalImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/SignalImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: SignalImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: SignalImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -219,10 +219,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.SIGNAL__OWNING_PARAMETER, msgs);
 				case UML2Package.SIGNAL__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.SIGNAL__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.SIGNAL__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.SIGNAL__IMPLEMENTATION:
@@ -270,10 +270,10 @@
 					return eBasicSetContainer(null, UML2Package.SIGNAL__OWNING_PARAMETER, msgs);
 				case UML2Package.SIGNAL__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.SIGNAL__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.SIGNAL__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.SIGNAL__OCCURRENCE:
@@ -378,10 +378,10 @@
 				return getAttributes();
 			case UML2Package.SIGNAL__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.SIGNAL__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.SIGNAL__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.SIGNAL__REPRESENTATION:
@@ -472,14 +472,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.SIGNAL__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.SIGNAL__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -575,12 +575,12 @@
 			case UML2Package.SIGNAL__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.SIGNAL__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.SIGNAL__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -674,10 +674,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.SIGNAL__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.SIGNAL__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.SIGNAL__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.SIGNAL__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.SIGNAL__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StateMachineImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StateMachineImpl.java
index 01ea0dd..5db4e2f 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StateMachineImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StateMachineImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StateMachineImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: StateMachineImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -393,10 +393,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.STATE_MACHINE__OWNING_PARAMETER, msgs);
 				case UML2Package.STATE_MACHINE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__IMPLEMENTATION:
@@ -458,10 +458,10 @@
 					return eBasicSetContainer(null, UML2Package.STATE_MACHINE__OWNING_PARAMETER, msgs);
 				case UML2Package.STATE_MACHINE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.STATE_MACHINE__OCCURRENCE:
@@ -592,10 +592,10 @@
 				return getAttributes();
 			case UML2Package.STATE_MACHINE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.STATE_MACHINE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.STATE_MACHINE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.STATE_MACHINE__REPRESENTATION:
@@ -734,14 +734,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.STATE_MACHINE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.STATE_MACHINE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -899,12 +899,12 @@
 			case UML2Package.STATE_MACHINE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.STATE_MACHINE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.STATE_MACHINE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -1049,10 +1049,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.STATE_MACHINE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STATE_MACHINE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.STATE_MACHINE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STATE_MACHINE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.STATE_MACHINE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
index 5ecf925..37c6134 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StereotypeImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StereotypeImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: StereotypeImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -101,10 +101,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.STEREOTYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.STEREOTYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__IMPLEMENTATION:
@@ -154,10 +154,10 @@
 					return eBasicSetContainer(null, UML2Package.STEREOTYPE__OWNING_PARAMETER, msgs);
 				case UML2Package.STEREOTYPE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.STEREOTYPE__OCCURRENCE:
@@ -272,10 +272,10 @@
 				return getAttributes();
 			case UML2Package.STEREOTYPE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.STEREOTYPE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.STEREOTYPE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.STEREOTYPE__REPRESENTATION:
@@ -386,14 +386,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.STEREOTYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.STEREOTYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -512,12 +512,12 @@
 			case UML2Package.STEREOTYPE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.STEREOTYPE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.STEREOTYPE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -629,10 +629,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.STEREOTYPE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STEREOTYPE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.STEREOTYPE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STEREOTYPE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.STEREOTYPE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StructuredClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StructuredClassifierImpl.java
index 8fb5a91..38e8709 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StructuredClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/StructuredClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: StructuredClassifierImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: StructuredClassifierImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -431,10 +431,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.STRUCTURED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -476,10 +476,10 @@
 					return eBasicSetContainer(null, UML2Package.STRUCTURED_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.STRUCTURED_CLASSIFIER__OCCURRENCE:
@@ -580,10 +580,10 @@
 				return getAttributes();
 			case UML2Package.STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.STRUCTURED_CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.STRUCTURED_CLASSIFIER__REPRESENTATION:
@@ -672,14 +672,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.STRUCTURED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -764,12 +764,12 @@
 			case UML2Package.STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.STRUCTURED_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -854,10 +854,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.STRUCTURED_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STRUCTURED_CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.STRUCTURED_CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.STRUCTURED_CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.STRUCTURED_CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateParameterSubstitutionImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateParameterSubstitutionImpl.java
index 1e2aa91..16152ad 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateParameterSubstitutionImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateParameterSubstitutionImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionImpl.java,v 1.2 2004/04/10 04:09:49 khussey Exp $
+ * $Id: TemplateParameterSubstitutionImpl.java,v 1.3 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -33,6 +33,7 @@
 import org.eclipse.uml2.TemplateParameterSubstitution;
 import org.eclipse.uml2.UML2Package;
 
+import org.eclipse.uml2.internal.util.SubsetEObjectContainmentEList;
 import org.eclipse.uml2.internal.util.SupersetEObjectResolvingEList;
 
 /**
@@ -45,7 +46,7 @@
  *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getFormal <em>Formal</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getTemplateBinding <em>Template Binding</em>}</li>
  *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getActuals <em>Actual</em>}</li>
- *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActual <em>Owned Actual</em>}</li>
+ *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActuals <em>Owned Actual</em>}</li>
  * </ul>
  * </p>
  *
@@ -80,14 +81,14 @@
 	protected EList actual = null;
 
 	/**
-	 * The cached value of the '{@link #getOwnedActual() <em>Owned Actual</em>}' containment reference.
+	 * The cached value of the '{@link #getOwnedActuals() <em>Owned Actual</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getOwnedActual()
+	 * @see #getOwnedActuals()
 	 * @generated
 	 * @ordered
 	 */
-	protected ParameterableElement ownedActual = null;
+	protected EList ownedActual = null;
 
 	/**
 	 * <!-- begin-user-doc -->
@@ -203,7 +204,7 @@
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * Returns the value of the '<em><b>Owned Actual</b></em>' containment reference.
+	 * Returns the value of the '<em><b>Owned Actual</b></em>' containment reference list.
 	 * <p>
 	 * Subsets the following features:
 	 * <ul>
@@ -213,51 +214,12 @@
 	 * </p>
 	 * @generated
 	 */
-	public ParameterableElement getOwnedActual() {
+	public EList getOwnedActuals() {
+		// TODO: test this subset getter
+		if (ownedActual == null) {
+			ownedActual = new SubsetEObjectContainmentEList(ParameterableElement.class, this, UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, new int[] {UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL});
+		}
 		return ownedActual;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetOwnedActual(ParameterableElement newOwnedActual, NotificationChain msgs) {
-		// TODO: test this subset basic setter
-		if (null != newOwnedActual && !getActuals().contains(newOwnedActual)) {
-			getActuals().add(newOwnedActual);
-		}
-		ParameterableElement oldOwnedActual = ownedActual;
-		ownedActual = newOwnedActual;
-		if (eNotificationRequired()) {
-			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, oldOwnedActual, newOwnedActual);
-			if (msgs == null) msgs = notification; else msgs.add(notification);
-		}
-		return msgs;
-
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setOwnedActual(ParameterableElement newOwnedActual) {
-		if (newOwnedActual != ownedActual) {
-			NotificationChain msgs = null;
-			if (null != ownedActual) {
-				msgs = ((InternalEObject) ownedActual).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, null, msgs);
-			}
-			if (null != newOwnedActual) {
-				msgs = ((InternalEObject) newOwnedActual).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, null, msgs);
-			}
-			msgs = basicSetOwnedActual(newOwnedActual, msgs);
-			if (null != msgs) {
-				msgs.dispatch();
-			}
-		} else if (eNotificationRequired()) {
-			eNotify(new ENotificationImpl(this, Notification.SET, UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, newOwnedActual, newOwnedActual));
-		}
 
 	}
 
@@ -271,7 +233,7 @@
 		if (eNotificationRequired()) {
 			eNotify(new ENotificationImpl(this, Notification.CREATE, UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL, null, newOwnedActual));
 		}
-        setOwnedActual(newOwnedActual);
+		getOwnedActuals().add(newOwnedActual);
 		return newOwnedActual;
 	}
 
@@ -303,9 +265,7 @@
 		if (!getCacheAdapter().containsKey(this, UML2Package.eINSTANCE.getElement_OwnedElement())) {
 			Set union = new LinkedHashSet();
 			union.addAll(super.getOwnedElements());
-			if (null != getOwnedActual()) {
-				union.add(getOwnedActual());
-			}
+			union.addAll(getOwnedActuals());
 			getCacheAdapter().put(
 				this,
 				UML2Package.eINSTANCE.getElement_OwnedElement(),
@@ -355,7 +315,7 @@
 				case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING:
 					return eBasicSetContainer(null, UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING, msgs);
 				case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL:
-					return basicSetOwnedActual(null, msgs);
+					return ((InternalEList)getOwnedActuals()).basicRemove(otherEnd, msgs);
 				default:
 					return eDynamicInverseRemove(otherEnd, featureID, baseClass, msgs);
 			}
@@ -404,7 +364,7 @@
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL:
 				return getActuals();
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL:
-				return getOwnedActual();
+				return getOwnedActuals();
 		}
 		return eDynamicGet(eFeature, resolve);
 	}
@@ -435,7 +395,8 @@
 				getActuals().addAll((Collection)newValue);
 				return;
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL:
-				setOwnedActual((ParameterableElement)newValue);
+				getOwnedActuals().clear();
+				getOwnedActuals().addAll((Collection)newValue);
 				return;
 		}
 		eDynamicSet(eFeature, newValue);
@@ -464,7 +425,7 @@
 				getActuals().clear();
 				return;
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL:
-				setOwnedActual((ParameterableElement)null);
+				getOwnedActuals().clear();
 				return;
 		}
 		eDynamicUnset(eFeature);
@@ -492,7 +453,7 @@
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL:
 				return actual != null && !actual.isEmpty();
 			case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL:
-				return ownedActual != null;
+				return ownedActual != null && !ownedActual.isEmpty();
 		}
 		return eDynamicIsSet(eFeature);
 	}
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateableClassifierImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateableClassifierImpl.java
index 8cad70e..b315c26 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateableClassifierImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/TemplateableClassifierImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateableClassifierImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: TemplateableClassifierImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -96,10 +96,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.TEMPLATEABLE_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				default:
 					return eDynamicInverseAdd(otherEnd, featureID, baseClass, msgs);
 			}
@@ -141,10 +141,10 @@
 					return eBasicSetContainer(null, UML2Package.TEMPLATEABLE_CLASSIFIER__OWNING_PARAMETER, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.TEMPLATEABLE_CLASSIFIER__OCCURRENCE:
@@ -241,10 +241,10 @@
 				return getAttributes();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__REPRESENTATION:
@@ -325,14 +325,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -409,12 +409,12 @@
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -493,10 +493,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.TEMPLATEABLE_CLASSIFIER__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.TEMPLATEABLE_CLASSIFIER__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2FactoryImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2FactoryImpl.java
index 3c170a5..91ad19b 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2FactoryImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2FactoryImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2FactoryImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: UML2FactoryImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -244,9 +244,9 @@
 	 */
 	public EObject create(EClass eClass) {
 		switch (eClass.getClassifierID()) {
+			case UML2Package.COMMENT: return createComment();
 			case UML2Package.OPAQUE_EXPRESSION: return createOpaqueExpression();
 			case UML2Package.EXPRESSION: return createExpression();
-			case UML2Package.COMMENT: return createComment();
 			case UML2Package.CLASS: return createClass();
 			case UML2Package.PROPERTY: return createProperty();
 			case UML2Package.OPERATION: return createOperation();
@@ -275,11 +275,6 @@
 			case UML2Package.PROFILE_APPLICATION: return createProfileApplication();
 			case UML2Package.EXTENSION: return createExtension();
 			case UML2Package.EXTENSION_END: return createExtensionEnd();
-			case UML2Package.ASSOCIATION_CLASS: return createAssociationClass();
-			case UML2Package.GENERALIZATION_SET: return createGeneralizationSet();
-			case UML2Package.INFORMATION_ITEM: return createInformationItem();
-			case UML2Package.INFORMATION_FLOW: return createInformationFlow();
-			case UML2Package.MODEL: return createModel();
 			case UML2Package.PERMISSION: return createPermission();
 			case UML2Package.DEPENDENCY: return createDependency();
 			case UML2Package.USAGE: return createUsage();
@@ -287,6 +282,22 @@
 			case UML2Package.REALIZATION: return createRealization();
 			case UML2Package.SUBSTITUTION: return createSubstitution();
 			case UML2Package.ACTIVITY: return createActivity();
+			case UML2Package.ASSOCIATION_CLASS: return createAssociationClass();
+			case UML2Package.MODEL: return createModel();
+			case UML2Package.INFORMATION_ITEM: return createInformationItem();
+			case UML2Package.INFORMATION_FLOW: return createInformationFlow();
+			case UML2Package.GENERALIZATION_SET: return createGeneralizationSet();
+			case UML2Package.CONNECTOR_END: return createConnectorEnd();
+			case UML2Package.CONNECTOR: return createConnector();
+			case UML2Package.INTERFACE: return createInterface();
+			case UML2Package.IMPLEMENTATION: return createImplementation();
+			case UML2Package.ACTOR: return createActor();
+			case UML2Package.EXTEND: return createExtend();
+			case UML2Package.USE_CASE: return createUseCase();
+			case UML2Package.EXTENSION_POINT: return createExtensionPoint();
+			case UML2Package.INCLUDE: return createInclude();
+			case UML2Package.ARTIFACT: return createArtifact();
+			case UML2Package.MANIFESTATION: return createManifestation();
 			case UML2Package.ACTION: return createAction();
 			case UML2Package.CONTROL_FLOW: return createControlFlow();
 			case UML2Package.OBJECT_FLOW: return createObjectFlow();
@@ -298,19 +309,29 @@
 			case UML2Package.INPUT_PIN: return createInputPin();
 			case UML2Package.ACTIVITY_PARAMETER_NODE: return createActivityParameterNode();
 			case UML2Package.VALUE_PIN: return createValuePin();
-			case UML2Package.INTERFACE: return createInterface();
-			case UML2Package.IMPLEMENTATION: return createImplementation();
-			case UML2Package.ACTOR: return createActor();
-			case UML2Package.EXTEND: return createExtend();
-			case UML2Package.USE_CASE: return createUseCase();
-			case UML2Package.EXTENSION_POINT: return createExtensionPoint();
-			case UML2Package.INCLUDE: return createInclude();
-			case UML2Package.ARTIFACT: return createArtifact();
-			case UML2Package.MANIFESTATION: return createManifestation();
-			case UML2Package.CONNECTOR_END: return createConnectorEnd();
-			case UML2Package.CONNECTOR: return createConnector();
 			case UML2Package.COLLABORATION_OCCURRENCE: return createCollaborationOccurrence();
 			case UML2Package.COLLABORATION: return createCollaboration();
+			case UML2Package.INTERACTION: return createInteraction();
+			case UML2Package.LIFELINE: return createLifeline();
+			case UML2Package.MESSAGE: return createMessage();
+			case UML2Package.GENERAL_ORDERING: return createGeneralOrdering();
+			case UML2Package.EVENT_OCCURRENCE: return createEventOccurrence();
+			case UML2Package.EXECUTION_OCCURRENCE: return createExecutionOccurrence();
+			case UML2Package.STATE_INVARIANT: return createStateInvariant();
+			case UML2Package.STOP: return createStop();
+			case UML2Package.PORT: return createPort();
+			case UML2Package.CALL_TRIGGER: return createCallTrigger();
+			case UML2Package.CHANGE_TRIGGER: return createChangeTrigger();
+			case UML2Package.RECEPTION: return createReception();
+			case UML2Package.SIGNAL: return createSignal();
+			case UML2Package.SIGNAL_TRIGGER: return createSignalTrigger();
+			case UML2Package.TIME_TRIGGER: return createTimeTrigger();
+			case UML2Package.ANY_TRIGGER: return createAnyTrigger();
+			case UML2Package.VARIABLE: return createVariable();
+			case UML2Package.STRUCTURED_ACTIVITY_NODE: return createStructuredActivityNode();
+			case UML2Package.CONDITIONAL_NODE: return createConditionalNode();
+			case UML2Package.CLAUSE: return createClause();
+			case UML2Package.LOOP_NODE: return createLoopNode();
 			case UML2Package.TEMPLATE_SIGNATURE: return createTemplateSignature();
 			case UML2Package.TEMPLATE_PARAMETER: return createTemplateParameter();
 			case UML2Package.STRING_EXPRESSION: return createStringExpression();
@@ -320,34 +341,6 @@
 			case UML2Package.CLASSIFIER_TEMPLATE_PARAMETER: return createClassifierTemplateParameter();
 			case UML2Package.REDEFINABLE_TEMPLATE_SIGNATURE: return createRedefinableTemplateSignature();
 			case UML2Package.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER: return createConnectableElementTemplateParameter();
-			case UML2Package.INTERACTION: return createInteraction();
-			case UML2Package.LIFELINE: return createLifeline();
-			case UML2Package.MESSAGE: return createMessage();
-			case UML2Package.GENERAL_ORDERING: return createGeneralOrdering();
-			case UML2Package.EVENT_OCCURRENCE: return createEventOccurrence();
-			case UML2Package.EXECUTION_OCCURRENCE: return createExecutionOccurrence();
-			case UML2Package.STATE_INVARIANT: return createStateInvariant();
-			case UML2Package.STOP: return createStop();
-			case UML2Package.VARIABLE: return createVariable();
-			case UML2Package.STRUCTURED_ACTIVITY_NODE: return createStructuredActivityNode();
-			case UML2Package.CONDITIONAL_NODE: return createConditionalNode();
-			case UML2Package.CLAUSE: return createClause();
-			case UML2Package.LOOP_NODE: return createLoopNode();
-			case UML2Package.PORT: return createPort();
-			case UML2Package.CALL_TRIGGER: return createCallTrigger();
-			case UML2Package.CHANGE_TRIGGER: return createChangeTrigger();
-			case UML2Package.RECEPTION: return createReception();
-			case UML2Package.SIGNAL: return createSignal();
-			case UML2Package.SIGNAL_TRIGGER: return createSignalTrigger();
-			case UML2Package.TIME_TRIGGER: return createTimeTrigger();
-			case UML2Package.ANY_TRIGGER: return createAnyTrigger();
-			case UML2Package.INTERACTION_OCCURRENCE: return createInteractionOccurrence();
-			case UML2Package.GATE: return createGate();
-			case UML2Package.PART_DECOMPOSITION: return createPartDecomposition();
-			case UML2Package.INTERACTION_OPERAND: return createInteractionOperand();
-			case UML2Package.INTERACTION_CONSTRAINT: return createInteractionConstraint();
-			case UML2Package.COMBINED_FRAGMENT: return createCombinedFragment();
-			case UML2Package.CONTINUATION: return createContinuation();
 			case UML2Package.STATE_MACHINE: return createStateMachine();
 			case UML2Package.REGION: return createRegion();
 			case UML2Package.PSEUDOSTATE: return createPseudostate();
@@ -355,6 +348,11 @@
 			case UML2Package.CONNECTION_POINT_REFERENCE: return createConnectionPointReference();
 			case UML2Package.TRANSITION: return createTransition();
 			case UML2Package.FINAL_STATE: return createFinalState();
+			case UML2Package.FORK_NODE: return createForkNode();
+			case UML2Package.JOIN_NODE: return createJoinNode();
+			case UML2Package.FLOW_FINAL_NODE: return createFlowFinalNode();
+			case UML2Package.CENTRAL_BUFFER_NODE: return createCentralBufferNode();
+			case UML2Package.ACTIVITY_PARTITION: return createActivityPartition();
 			case UML2Package.CREATE_OBJECT_ACTION: return createCreateObjectAction();
 			case UML2Package.DESTROY_OBJECT_ACTION: return createDestroyObjectAction();
 			case UML2Package.TEST_IDENTITY_ACTION: return createTestIdentityAction();
@@ -380,17 +378,20 @@
 			case UML2Package.SEND_OBJECT_ACTION: return createSendObjectAction();
 			case UML2Package.CALL_OPERATION_ACTION: return createCallOperationAction();
 			case UML2Package.CALL_BEHAVIOR_ACTION: return createCallBehaviorAction();
-			case UML2Package.FORK_NODE: return createForkNode();
-			case UML2Package.JOIN_NODE: return createJoinNode();
-			case UML2Package.FLOW_FINAL_NODE: return createFlowFinalNode();
-			case UML2Package.CENTRAL_BUFFER_NODE: return createCentralBufferNode();
-			case UML2Package.ACTIVITY_PARTITION: return createActivityPartition();
+			case UML2Package.INTERACTION_OCCURRENCE: return createInteractionOccurrence();
+			case UML2Package.GATE: return createGate();
+			case UML2Package.PART_DECOMPOSITION: return createPartDecomposition();
+			case UML2Package.INTERACTION_OPERAND: return createInteractionOperand();
+			case UML2Package.INTERACTION_CONSTRAINT: return createInteractionConstraint();
+			case UML2Package.COMBINED_FRAGMENT: return createCombinedFragment();
+			case UML2Package.CONTINUATION: return createContinuation();
 			case UML2Package.EXPANSION_NODE: return createExpansionNode();
 			case UML2Package.EXPANSION_REGION: return createExpansionRegion();
 			case UML2Package.EXCEPTION_HANDLER: return createExceptionHandler();
 			case UML2Package.PROTOCOL_CONFORMANCE: return createProtocolConformance();
 			case UML2Package.PROTOCOL_STATE_MACHINE: return createProtocolStateMachine();
 			case UML2Package.PROTOCOL_TRANSITION: return createProtocolTransition();
+			case UML2Package.COMPONENT: return createComponent();
 			case UML2Package.TIME_EXPRESSION: return createTimeExpression();
 			case UML2Package.DURATION: return createDuration();
 			case UML2Package.TIME_OBSERVATION_ACTION: return createTimeObservationAction();
@@ -401,9 +402,6 @@
 			case UML2Package.TIME_INTERVAL: return createTimeInterval();
 			case UML2Package.DURATION_OBSERVATION_ACTION: return createDurationObservationAction();
 			case UML2Package.DURATION_CONSTRAINT: return createDurationConstraint();
-			case UML2Package.DATA_STORE_NODE: return createDataStoreNode();
-			case UML2Package.INTERRUPTIBLE_ACTIVITY_REGION: return createInterruptibleActivityRegion();
-			case UML2Package.PARAMETER_SET: return createParameterSet();
 			case UML2Package.READ_EXTENT_ACTION: return createReadExtentAction();
 			case UML2Package.RECLASSIFY_OBJECT_ACTION: return createReclassifyObjectAction();
 			case UML2Package.READ_IS_CLASSIFIED_OBJECT_ACTION: return createReadIsClassifiedObjectAction();
@@ -416,12 +414,14 @@
 			case UML2Package.ACCEPT_CALL_ACTION: return createAcceptCallAction();
 			case UML2Package.REPLY_ACTION: return createReplyAction();
 			case UML2Package.RAISE_EXCEPTION_ACTION: return createRaiseExceptionAction();
-			case UML2Package.COMPONENT: return createComponent();
 			case UML2Package.DEPLOYMENT: return createDeployment();
 			case UML2Package.NODE: return createNode();
 			case UML2Package.DEVICE: return createDevice();
 			case UML2Package.EXECUTION_ENVIRONMENT: return createExecutionEnvironment();
 			case UML2Package.COMMUNICATION_PATH: return createCommunicationPath();
+			case UML2Package.DATA_STORE_NODE: return createDataStoreNode();
+			case UML2Package.INTERRUPTIBLE_ACTIVITY_REGION: return createInterruptibleActivityRegion();
+			case UML2Package.PARAMETER_SET: return createParameterSet();
 			case UML2Package.DEPLOYMENT_SPECIFICATION: return createDeploymentSpecification();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -435,32 +435,71 @@
 	 */
 	public Object createFromString(EDataType eDataType, String initialValue) {
 		switch (eDataType.getClassifierID()) {
-			case UML2Package.VISIBILITY_KIND:
-				return VisibilityKind.get(initialValue);
-			case UML2Package.PARAMETER_DIRECTION_KIND:
-				return ParameterDirectionKind.get(initialValue);
-			case UML2Package.AGGREGATION_KIND:
-				return AggregationKind.get(initialValue);
-			case UML2Package.MESSAGE_KIND:
-				return MessageKind.get(initialValue);
-			case UML2Package.MESSAGE_SORT:
-				return MessageSort.get(initialValue);
-			case UML2Package.CALL_CONCURRENCY_KIND:
-				return CallConcurrencyKind.get(initialValue);
-			case UML2Package.INTERACTION_OPERATOR:
-				return InteractionOperator.get(initialValue);
-			case UML2Package.TRANSITION_KIND:
-				return TransitionKind.get(initialValue);
-			case UML2Package.PSEUDOSTATE_KIND:
-				return PseudostateKind.get(initialValue);
-			case UML2Package.EXPANSION_KIND:
-				return ExpansionKind.get(initialValue);
-			case UML2Package.PARAMETER_EFFECT_KIND:
-				return ParameterEffectKind.get(initialValue);
-			case UML2Package.OBJECT_NODE_ORDERING_KIND:
-				return ObjectNodeOrderingKind.get(initialValue);
-			case UML2Package.CONNECTOR_KIND:
-				return ConnectorKind.get(initialValue);
+			case UML2Package.VISIBILITY_KIND: {
+					VisibilityKind result = VisibilityKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.PARAMETER_DIRECTION_KIND: {
+					ParameterDirectionKind result = ParameterDirectionKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.AGGREGATION_KIND: {
+					AggregationKind result = AggregationKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.MESSAGE_KIND: {
+					MessageKind result = MessageKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.MESSAGE_SORT: {
+					MessageSort result = MessageSort.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.CALL_CONCURRENCY_KIND: {
+					CallConcurrencyKind result = CallConcurrencyKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.TRANSITION_KIND: {
+					TransitionKind result = TransitionKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.PSEUDOSTATE_KIND: {
+					PseudostateKind result = PseudostateKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.INTERACTION_OPERATOR: {
+					InteractionOperator result = InteractionOperator.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.EXPANSION_KIND: {
+					ExpansionKind result = ExpansionKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.CONNECTOR_KIND: {
+					ConnectorKind result = ConnectorKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.PARAMETER_EFFECT_KIND: {
+					ParameterEffectKind result = ParameterEffectKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
+			case UML2Package.OBJECT_NODE_ORDERING_KIND: {
+					ObjectNodeOrderingKind result = ObjectNodeOrderingKind.get(initialValue);
+					if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+					return result;
+				}
 			case UML2Package.INTEGER:
 				return createIntegerFromString(eDataType, initialValue);
 			case UML2Package.BOOLEAN:
@@ -497,20 +536,20 @@
 				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.CALL_CONCURRENCY_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
-			case UML2Package.INTERACTION_OPERATOR:
-				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.TRANSITION_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.PSEUDOSTATE_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
+			case UML2Package.INTERACTION_OPERATOR:
+				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.EXPANSION_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
+			case UML2Package.CONNECTOR_KIND:
+				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.PARAMETER_EFFECT_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.OBJECT_NODE_ORDERING_KIND:
 				return instanceValue == null ? null : instanceValue.toString();
-			case UML2Package.CONNECTOR_KIND:
-				return instanceValue == null ? null : instanceValue.toString();
 			case UML2Package.INTEGER:
 				return convertIntegerToString(eDataType, instanceValue);
 			case UML2Package.BOOLEAN:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2PackageImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2PackageImpl.java
index 137d293..5bffe20 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2PackageImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UML2PackageImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2PackageImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: UML2PackageImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -3205,7 +3205,7 @@
 	 * @generated
 	 */
 	public EReference getClassifier_PowertypeExtent() {
-		return (EReference)classifierEClass.getEStructuralFeatures().get(7);
+		return (EReference)classifierEClass.getEStructuralFeatures().get(8);
 	}
 
 	/**
@@ -3214,7 +3214,7 @@
 	 * @generated
 	 */
 	public EReference getClassifier_Substitution() {
-		return (EReference)classifierEClass.getEStructuralFeatures().get(8);
+		return (EReference)classifierEClass.getEStructuralFeatures().get(7);
 	}
 
 	/**
@@ -9018,6 +9018,32 @@
 		createEReference(multiplicityElementEClass, MULTIPLICITY_ELEMENT__UPPER_VALUE);
 		createEReference(multiplicityElementEClass, MULTIPLICITY_ELEMENT__LOWER_VALUE);
 
+		namedElementEClass = createEClass(NAMED_ELEMENT);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__QUALIFIED_NAME);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__VISIBILITY);
+		createEReference(namedElementEClass, NAMED_ELEMENT__CLIENT_DEPENDENCY);
+		createEReference(namedElementEClass, NAMED_ELEMENT__NAME_EXPRESSION);
+
+		namespaceEClass = createEClass(NAMESPACE);
+		createEReference(namespaceEClass, NAMESPACE__MEMBER);
+		createEReference(namespaceEClass, NAMESPACE__OWNED_RULE);
+		createEReference(namespaceEClass, NAMESPACE__IMPORTED_MEMBER);
+		createEReference(namespaceEClass, NAMESPACE__ELEMENT_IMPORT);
+		createEReference(namespaceEClass, NAMESPACE__PACKAGE_IMPORT);
+
+		commentEClass = createEClass(COMMENT);
+		createEAttribute(commentEClass, COMMENT__BODY);
+		createEReference(commentEClass, COMMENT__ANNOTATED_ELEMENT);
+		createEReference(commentEClass, COMMENT__BODY_EXPRESSION);
+
+		directedRelationshipEClass = createEClass(DIRECTED_RELATIONSHIP);
+		createEReference(directedRelationshipEClass, DIRECTED_RELATIONSHIP__SOURCE);
+		createEReference(directedRelationshipEClass, DIRECTED_RELATIONSHIP__TARGET);
+
+		relationshipEClass = createEClass(RELATIONSHIP);
+		createEReference(relationshipEClass, RELATIONSHIP__RELATED_ELEMENT);
+
 		opaqueExpressionEClass = createEClass(OPAQUE_EXPRESSION);
 		createEAttribute(opaqueExpressionEClass, OPAQUE_EXPRESSION__BODY);
 		createEAttribute(opaqueExpressionEClass, OPAQUE_EXPRESSION__LANGUAGE);
@@ -9030,11 +9056,6 @@
 		createEAttribute(expressionEClass, EXPRESSION__SYMBOL);
 		createEReference(expressionEClass, EXPRESSION__OPERAND);
 
-		commentEClass = createEClass(COMMENT);
-		createEAttribute(commentEClass, COMMENT__BODY);
-		createEReference(commentEClass, COMMENT__ANNOTATED_ELEMENT);
-		createEReference(commentEClass, COMMENT__BODY_EXPRESSION);
-
 		classEClass = createEClass(CLASS);
 		createEReference(classEClass, CLASS__OWNED_OPERATION);
 		createEReference(classEClass, CLASS__SUPER_CLASS);
@@ -9086,13 +9107,6 @@
 		createEAttribute(parameterEClass, PARAMETER__EFFECT);
 		createEReference(parameterEClass, PARAMETER__PARAMETER_SET);
 
-		namedElementEClass = createEClass(NAMED_ELEMENT);
-		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
-		createEAttribute(namedElementEClass, NAMED_ELEMENT__QUALIFIED_NAME);
-		createEAttribute(namedElementEClass, NAMED_ELEMENT__VISIBILITY);
-		createEReference(namedElementEClass, NAMED_ELEMENT__CLIENT_DEPENDENCY);
-		createEReference(namedElementEClass, NAMED_ELEMENT__NAME_EXPRESSION);
-
 		packageEClass = createEClass(PACKAGE);
 		createEReference(packageEClass, PACKAGE__NESTED_PACKAGE);
 		createEReference(packageEClass, PACKAGE__NESTING_PACKAGE);
@@ -9114,20 +9128,6 @@
 
 		primitiveTypeEClass = createEClass(PRIMITIVE_TYPE);
 
-		namespaceEClass = createEClass(NAMESPACE);
-		createEReference(namespaceEClass, NAMESPACE__MEMBER);
-		createEReference(namespaceEClass, NAMESPACE__OWNED_RULE);
-		createEReference(namespaceEClass, NAMESPACE__IMPORTED_MEMBER);
-		createEReference(namespaceEClass, NAMESPACE__ELEMENT_IMPORT);
-		createEReference(namespaceEClass, NAMESPACE__PACKAGE_IMPORT);
-
-		directedRelationshipEClass = createEClass(DIRECTED_RELATIONSHIP);
-		createEReference(directedRelationshipEClass, DIRECTED_RELATIONSHIP__SOURCE);
-		createEReference(directedRelationshipEClass, DIRECTED_RELATIONSHIP__TARGET);
-
-		relationshipEClass = createEClass(RELATIONSHIP);
-		createEReference(relationshipEClass, RELATIONSHIP__RELATED_ELEMENT);
-
 		constraintEClass = createEClass(CONSTRAINT);
 		createEReference(constraintEClass, CONSTRAINT__CONTEXT);
 		createEReference(constraintEClass, CONSTRAINT__NAMESPACE);
@@ -9158,8 +9158,8 @@
 		createEReference(classifierEClass, CLASSIFIER__GENERALIZATION);
 		createEReference(classifierEClass, CLASSIFIER__ATTRIBUTE);
 		createEReference(classifierEClass, CLASSIFIER__REDEFINED_CLASSIFIER);
-		createEReference(classifierEClass, CLASSIFIER__POWERTYPE_EXTENT);
 		createEReference(classifierEClass, CLASSIFIER__SUBSTITUTION);
+		createEReference(classifierEClass, CLASSIFIER__POWERTYPE_EXTENT);
 		createEReference(classifierEClass, CLASSIFIER__OWNED_USE_CASE);
 		createEReference(classifierEClass, CLASSIFIER__REPRESENTATION);
 		createEReference(classifierEClass, CLASSIFIER__OCCURRENCE);
@@ -9186,6 +9186,10 @@
 		createEAttribute(generalizationEClass, GENERALIZATION__IS_SUBSTITUTABLE);
 		createEReference(generalizationEClass, GENERALIZATION__GENERALIZATION_SET);
 
+		redefinableElementEClass = createEClass(REDEFINABLE_ELEMENT);
+		createEReference(redefinableElementEClass, REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
+		createEAttribute(redefinableElementEClass, REDEFINABLE_ELEMENT__IS_LEAF);
+
 		instanceSpecificationEClass = createEClass(INSTANCE_SPECIFICATION);
 		createEReference(instanceSpecificationEClass, INSTANCE_SPECIFICATION__SLOT);
 		createEReference(instanceSpecificationEClass, INSTANCE_SPECIFICATION__CLASSIFIER);
@@ -9199,10 +9203,6 @@
 		instanceValueEClass = createEClass(INSTANCE_VALUE);
 		createEReference(instanceValueEClass, INSTANCE_VALUE__INSTANCE);
 
-		redefinableElementEClass = createEClass(REDEFINABLE_ELEMENT);
-		createEReference(redefinableElementEClass, REDEFINABLE_ELEMENT__REDEFINITION_CONTEXT);
-		createEAttribute(redefinableElementEClass, REDEFINABLE_ELEMENT__IS_LEAF);
-
 		packageableElementEClass = createEClass(PACKAGEABLE_ELEMENT);
 		createEAttribute(packageableElementEClass, PACKAGEABLE_ELEMENT__PACKAGEABLE_ELEMENT_VISIBILITY);
 
@@ -9243,24 +9243,6 @@
 
 		extensionEndEClass = createEClass(EXTENSION_END);
 
-		associationClassEClass = createEClass(ASSOCIATION_CLASS);
-
-		generalizationSetEClass = createEClass(GENERALIZATION_SET);
-		createEAttribute(generalizationSetEClass, GENERALIZATION_SET__IS_COVERING);
-		createEAttribute(generalizationSetEClass, GENERALIZATION_SET__IS_DISJOINT);
-		createEReference(generalizationSetEClass, GENERALIZATION_SET__POWERTYPE);
-		createEReference(generalizationSetEClass, GENERALIZATION_SET__GENERALIZATION);
-
-		informationItemEClass = createEClass(INFORMATION_ITEM);
-		createEReference(informationItemEClass, INFORMATION_ITEM__REPRESENTED);
-
-		informationFlowEClass = createEClass(INFORMATION_FLOW);
-		createEReference(informationFlowEClass, INFORMATION_FLOW__REALIZATION);
-		createEReference(informationFlowEClass, INFORMATION_FLOW__CONVEYED);
-
-		modelEClass = createEClass(MODEL);
-		createEAttribute(modelEClass, MODEL__VIEWPOINT);
-
 		permissionEClass = createEClass(PERMISSION);
 
 		dependencyEClass = createEClass(DEPENDENCY);
@@ -9308,6 +9290,88 @@
 		createEAttribute(activityEClass, ACTIVITY__IS_SINGLE_EXECUTION);
 		createEAttribute(activityEClass, ACTIVITY__IS_READ_ONLY);
 
+		associationClassEClass = createEClass(ASSOCIATION_CLASS);
+
+		modelEClass = createEClass(MODEL);
+		createEAttribute(modelEClass, MODEL__VIEWPOINT);
+
+		informationItemEClass = createEClass(INFORMATION_ITEM);
+		createEReference(informationItemEClass, INFORMATION_ITEM__REPRESENTED);
+
+		informationFlowEClass = createEClass(INFORMATION_FLOW);
+		createEReference(informationFlowEClass, INFORMATION_FLOW__REALIZATION);
+		createEReference(informationFlowEClass, INFORMATION_FLOW__CONVEYED);
+
+		generalizationSetEClass = createEClass(GENERALIZATION_SET);
+		createEAttribute(generalizationSetEClass, GENERALIZATION_SET__IS_COVERING);
+		createEAttribute(generalizationSetEClass, GENERALIZATION_SET__IS_DISJOINT);
+		createEReference(generalizationSetEClass, GENERALIZATION_SET__POWERTYPE);
+		createEReference(generalizationSetEClass, GENERALIZATION_SET__GENERALIZATION);
+
+		connectorEndEClass = createEClass(CONNECTOR_END);
+		createEReference(connectorEndEClass, CONNECTOR_END__DEFINING_END);
+		createEReference(connectorEndEClass, CONNECTOR_END__ROLE);
+		createEReference(connectorEndEClass, CONNECTOR_END__PART_WITH_PORT);
+
+		connectableElementEClass = createEClass(CONNECTABLE_ELEMENT);
+		createEReference(connectableElementEClass, CONNECTABLE_ELEMENT__END);
+
+		connectorEClass = createEClass(CONNECTOR);
+		createEReference(connectorEClass, CONNECTOR__TYPE);
+		createEReference(connectorEClass, CONNECTOR__REDEFINED_CONNECTOR);
+		createEReference(connectorEClass, CONNECTOR__END);
+		createEAttribute(connectorEClass, CONNECTOR__KIND);
+		createEReference(connectorEClass, CONNECTOR__CONTRACT);
+
+		structuredClassifierEClass = createEClass(STRUCTURED_CLASSIFIER);
+		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE);
+		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__PART);
+		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__ROLE);
+		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__OWNED_CONNECTOR);
+
+		interfaceEClass = createEClass(INTERFACE);
+		createEReference(interfaceEClass, INTERFACE__OWNED_ATTRIBUTE);
+		createEReference(interfaceEClass, INTERFACE__OWNED_OPERATION);
+		createEReference(interfaceEClass, INTERFACE__REDEFINED_INTERFACE);
+		createEReference(interfaceEClass, INTERFACE__NESTED_CLASSIFIER);
+		createEReference(interfaceEClass, INTERFACE__OWNED_RECEPTION);
+		createEReference(interfaceEClass, INTERFACE__PROTOCOL);
+
+		implementationEClass = createEClass(IMPLEMENTATION);
+		createEReference(implementationEClass, IMPLEMENTATION__CONTRACT);
+		createEReference(implementationEClass, IMPLEMENTATION__IMPLEMENTING_CLASSIFIER);
+
+		actorEClass = createEClass(ACTOR);
+
+		extendEClass = createEClass(EXTEND);
+		createEReference(extendEClass, EXTEND__EXTENDED_CASE);
+		createEReference(extendEClass, EXTEND__EXTENSION);
+		createEReference(extendEClass, EXTEND__CONDITION);
+		createEReference(extendEClass, EXTEND__EXTENSION_LOCATION);
+
+		useCaseEClass = createEClass(USE_CASE);
+		createEReference(useCaseEClass, USE_CASE__INCLUDE);
+		createEReference(useCaseEClass, USE_CASE__EXTEND);
+		createEReference(useCaseEClass, USE_CASE__EXTENSION_POINT);
+		createEReference(useCaseEClass, USE_CASE__SUBJECT);
+
+		extensionPointEClass = createEClass(EXTENSION_POINT);
+		createEReference(extensionPointEClass, EXTENSION_POINT__USE_CASE);
+
+		includeEClass = createEClass(INCLUDE);
+		createEReference(includeEClass, INCLUDE__INCLUDING_CASE);
+		createEReference(includeEClass, INCLUDE__ADDITION);
+
+		artifactEClass = createEClass(ARTIFACT);
+		createEAttribute(artifactEClass, ARTIFACT__FILE_NAME);
+		createEReference(artifactEClass, ARTIFACT__NESTED_ARTIFACT);
+		createEReference(artifactEClass, ARTIFACT__MANIFESTATION);
+		createEReference(artifactEClass, ARTIFACT__OWNED_OPERATION);
+		createEReference(artifactEClass, ARTIFACT__OWNED_ATTRIBUTE);
+
+		manifestationEClass = createEClass(MANIFESTATION);
+		createEReference(manifestationEClass, MANIFESTATION__UTILIZED_ELEMENT);
+
 		activityEdgeEClass = createEClass(ACTIVITY_EDGE);
 		createEReference(activityEdgeEClass, ACTIVITY_EDGE__ACTIVITY);
 		createEReference(activityEdgeEClass, ACTIVITY_EDGE__SOURCE);
@@ -9384,70 +9448,6 @@
 		valuePinEClass = createEClass(VALUE_PIN);
 		createEReference(valuePinEClass, VALUE_PIN__VALUE);
 
-		interfaceEClass = createEClass(INTERFACE);
-		createEReference(interfaceEClass, INTERFACE__OWNED_ATTRIBUTE);
-		createEReference(interfaceEClass, INTERFACE__OWNED_OPERATION);
-		createEReference(interfaceEClass, INTERFACE__REDEFINED_INTERFACE);
-		createEReference(interfaceEClass, INTERFACE__NESTED_CLASSIFIER);
-		createEReference(interfaceEClass, INTERFACE__OWNED_RECEPTION);
-		createEReference(interfaceEClass, INTERFACE__PROTOCOL);
-
-		implementationEClass = createEClass(IMPLEMENTATION);
-		createEReference(implementationEClass, IMPLEMENTATION__CONTRACT);
-		createEReference(implementationEClass, IMPLEMENTATION__IMPLEMENTING_CLASSIFIER);
-
-		actorEClass = createEClass(ACTOR);
-
-		extendEClass = createEClass(EXTEND);
-		createEReference(extendEClass, EXTEND__EXTENDED_CASE);
-		createEReference(extendEClass, EXTEND__EXTENSION);
-		createEReference(extendEClass, EXTEND__CONDITION);
-		createEReference(extendEClass, EXTEND__EXTENSION_LOCATION);
-
-		useCaseEClass = createEClass(USE_CASE);
-		createEReference(useCaseEClass, USE_CASE__INCLUDE);
-		createEReference(useCaseEClass, USE_CASE__EXTEND);
-		createEReference(useCaseEClass, USE_CASE__EXTENSION_POINT);
-		createEReference(useCaseEClass, USE_CASE__SUBJECT);
-
-		extensionPointEClass = createEClass(EXTENSION_POINT);
-		createEReference(extensionPointEClass, EXTENSION_POINT__USE_CASE);
-
-		includeEClass = createEClass(INCLUDE);
-		createEReference(includeEClass, INCLUDE__INCLUDING_CASE);
-		createEReference(includeEClass, INCLUDE__ADDITION);
-
-		artifactEClass = createEClass(ARTIFACT);
-		createEAttribute(artifactEClass, ARTIFACT__FILE_NAME);
-		createEReference(artifactEClass, ARTIFACT__NESTED_ARTIFACT);
-		createEReference(artifactEClass, ARTIFACT__MANIFESTATION);
-		createEReference(artifactEClass, ARTIFACT__OWNED_OPERATION);
-		createEReference(artifactEClass, ARTIFACT__OWNED_ATTRIBUTE);
-
-		manifestationEClass = createEClass(MANIFESTATION);
-		createEReference(manifestationEClass, MANIFESTATION__UTILIZED_ELEMENT);
-
-		connectorEndEClass = createEClass(CONNECTOR_END);
-		createEReference(connectorEndEClass, CONNECTOR_END__DEFINING_END);
-		createEReference(connectorEndEClass, CONNECTOR_END__ROLE);
-		createEReference(connectorEndEClass, CONNECTOR_END__PART_WITH_PORT);
-
-		connectableElementEClass = createEClass(CONNECTABLE_ELEMENT);
-		createEReference(connectableElementEClass, CONNECTABLE_ELEMENT__END);
-
-		connectorEClass = createEClass(CONNECTOR);
-		createEReference(connectorEClass, CONNECTOR__TYPE);
-		createEReference(connectorEClass, CONNECTOR__REDEFINED_CONNECTOR);
-		createEReference(connectorEClass, CONNECTOR__END);
-		createEAttribute(connectorEClass, CONNECTOR__KIND);
-		createEReference(connectorEClass, CONNECTOR__CONTRACT);
-
-		structuredClassifierEClass = createEClass(STRUCTURED_CLASSIFIER);
-		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__OWNED_ATTRIBUTE);
-		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__PART);
-		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__ROLE);
-		createEReference(structuredClassifierEClass, STRUCTURED_CLASSIFIER__OWNED_CONNECTOR);
-
 		collaborationOccurrenceEClass = createEClass(COLLABORATION_OCCURRENCE);
 		createEReference(collaborationOccurrenceEClass, COLLABORATION_OCCURRENCE__TYPE);
 		createEReference(collaborationOccurrenceEClass, COLLABORATION_OCCURRENCE__ROLE_BINDING);
@@ -9455,56 +9455,6 @@
 		collaborationEClass = createEClass(COLLABORATION);
 		createEReference(collaborationEClass, COLLABORATION__COLLABORATION_ROLE);
 
-		templateSignatureEClass = createEClass(TEMPLATE_SIGNATURE);
-		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__PARAMETER);
-		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__OWNED_PARAMETER);
-		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__NESTED_SIGNATURE);
-		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__NESTING_SIGNATURE);
-		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__TEMPLATE);
-
-		templateParameterEClass = createEClass(TEMPLATE_PARAMETER);
-		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__SIGNATURE);
-		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__PARAMETERED_ELEMENT);
-		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT);
-		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__DEFAULT);
-		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__OWNED_DEFAULT);
-
-		templateableElementEClass = createEClass(TEMPLATEABLE_ELEMENT);
-		createEReference(templateableElementEClass, TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING);
-		createEReference(templateableElementEClass, TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE);
-
-		stringExpressionEClass = createEClass(STRING_EXPRESSION);
-		createEReference(stringExpressionEClass, STRING_EXPRESSION__SUB_EXPRESSION);
-		createEReference(stringExpressionEClass, STRING_EXPRESSION__OWNING_EXPRESSION);
-
-		parameterableElementEClass = createEClass(PARAMETERABLE_ELEMENT);
-		createEReference(parameterableElementEClass, PARAMETERABLE_ELEMENT__TEMPLATE_PARAMETER);
-		createEReference(parameterableElementEClass, PARAMETERABLE_ELEMENT__OWNING_PARAMETER);
-
-		templateBindingEClass = createEClass(TEMPLATE_BINDING);
-		createEReference(templateBindingEClass, TEMPLATE_BINDING__BOUND_ELEMENT);
-		createEReference(templateBindingEClass, TEMPLATE_BINDING__SIGNATURE);
-		createEReference(templateBindingEClass, TEMPLATE_BINDING__PARAMETER_SUBSTITUTION);
-
-		templateParameterSubstitutionEClass = createEClass(TEMPLATE_PARAMETER_SUBSTITUTION);
-		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__FORMAL);
-		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING);
-		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL);
-		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL);
-
-		operationTemplateParameterEClass = createEClass(OPERATION_TEMPLATE_PARAMETER);
-
-		classifierTemplateParameterEClass = createEClass(CLASSIFIER_TEMPLATE_PARAMETER);
-		createEAttribute(classifierTemplateParameterEClass, CLASSIFIER_TEMPLATE_PARAMETER__ALLOW_SUBSTITUTABLE);
-
-		parameterableClassifierEClass = createEClass(PARAMETERABLE_CLASSIFIER);
-
-		redefinableTemplateSignatureEClass = createEClass(REDEFINABLE_TEMPLATE_SIGNATURE);
-
-		templateableClassifierEClass = createEClass(TEMPLATEABLE_CLASSIFIER);
-
-		connectableElementTemplateParameterEClass = createEClass(CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER);
-
 		interactionEClass = createEClass(INTERACTION);
 		createEReference(interactionEClass, INTERACTION__LIFELINE);
 		createEReference(interactionEClass, INTERACTION__MESSAGE);
@@ -9558,40 +9508,6 @@
 
 		stopEClass = createEClass(STOP);
 
-		variableEClass = createEClass(VARIABLE);
-		createEReference(variableEClass, VARIABLE__SCOPE);
-
-		structuredActivityNodeEClass = createEClass(STRUCTURED_ACTIVITY_NODE);
-		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__VARIABLE);
-		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE);
-		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE);
-		createEAttribute(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE);
-
-		conditionalNodeEClass = createEClass(CONDITIONAL_NODE);
-		createEAttribute(conditionalNodeEClass, CONDITIONAL_NODE__IS_DETERMINATE);
-		createEAttribute(conditionalNodeEClass, CONDITIONAL_NODE__IS_ASSURED);
-		createEReference(conditionalNodeEClass, CONDITIONAL_NODE__CLAUSE);
-		createEReference(conditionalNodeEClass, CONDITIONAL_NODE__RESULT);
-
-		clauseEClass = createEClass(CLAUSE);
-		createEReference(clauseEClass, CLAUSE__TEST);
-		createEReference(clauseEClass, CLAUSE__BODY);
-		createEReference(clauseEClass, CLAUSE__PREDECESSOR_CLAUSE);
-		createEReference(clauseEClass, CLAUSE__SUCCESSOR_CLAUSE);
-		createEReference(clauseEClass, CLAUSE__DECIDER);
-		createEReference(clauseEClass, CLAUSE__BODY_OUTPUT);
-
-		loopNodeEClass = createEClass(LOOP_NODE);
-		createEAttribute(loopNodeEClass, LOOP_NODE__IS_TESTED_FIRST);
-		createEReference(loopNodeEClass, LOOP_NODE__BODY_PART);
-		createEReference(loopNodeEClass, LOOP_NODE__SETUP_PART);
-		createEReference(loopNodeEClass, LOOP_NODE__DECIDER);
-		createEReference(loopNodeEClass, LOOP_NODE__TEST);
-		createEReference(loopNodeEClass, LOOP_NODE__RESULT);
-		createEReference(loopNodeEClass, LOOP_NODE__LOOP_VARIABLE);
-		createEReference(loopNodeEClass, LOOP_NODE__BODY_OUTPUT);
-		createEReference(loopNodeEClass, LOOP_NODE__LOOP_VARIABLE_INPUT);
-
 		portEClass = createEClass(PORT);
 		createEAttribute(portEClass, PORT__IS_BEHAVIOR);
 		createEAttribute(portEClass, PORT__IS_SERVICE);
@@ -9629,30 +9545,89 @@
 
 		anyTriggerEClass = createEClass(ANY_TRIGGER);
 
-		interactionOccurrenceEClass = createEClass(INTERACTION_OCCURRENCE);
-		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__REFERS_TO);
-		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__ACTUAL_GATE);
-		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__ARGUMENT);
+		variableEClass = createEClass(VARIABLE);
+		createEReference(variableEClass, VARIABLE__SCOPE);
 
-		gateEClass = createEClass(GATE);
+		structuredActivityNodeEClass = createEClass(STRUCTURED_ACTIVITY_NODE);
+		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__VARIABLE);
+		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__CONTAINED_NODE);
+		createEReference(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__CONTAINED_EDGE);
+		createEAttribute(structuredActivityNodeEClass, STRUCTURED_ACTIVITY_NODE__MUST_ISOLATE);
 
-		partDecompositionEClass = createEClass(PART_DECOMPOSITION);
+		conditionalNodeEClass = createEClass(CONDITIONAL_NODE);
+		createEAttribute(conditionalNodeEClass, CONDITIONAL_NODE__IS_DETERMINATE);
+		createEAttribute(conditionalNodeEClass, CONDITIONAL_NODE__IS_ASSURED);
+		createEReference(conditionalNodeEClass, CONDITIONAL_NODE__CLAUSE);
+		createEReference(conditionalNodeEClass, CONDITIONAL_NODE__RESULT);
 
-		interactionOperandEClass = createEClass(INTERACTION_OPERAND);
-		createEReference(interactionOperandEClass, INTERACTION_OPERAND__GUARD);
-		createEReference(interactionOperandEClass, INTERACTION_OPERAND__FRAGMENT);
+		clauseEClass = createEClass(CLAUSE);
+		createEReference(clauseEClass, CLAUSE__TEST);
+		createEReference(clauseEClass, CLAUSE__BODY);
+		createEReference(clauseEClass, CLAUSE__PREDECESSOR_CLAUSE);
+		createEReference(clauseEClass, CLAUSE__SUCCESSOR_CLAUSE);
+		createEReference(clauseEClass, CLAUSE__DECIDER);
+		createEReference(clauseEClass, CLAUSE__BODY_OUTPUT);
 
-		interactionConstraintEClass = createEClass(INTERACTION_CONSTRAINT);
-		createEReference(interactionConstraintEClass, INTERACTION_CONSTRAINT__MININT);
-		createEReference(interactionConstraintEClass, INTERACTION_CONSTRAINT__MAXINT);
+		loopNodeEClass = createEClass(LOOP_NODE);
+		createEAttribute(loopNodeEClass, LOOP_NODE__IS_TESTED_FIRST);
+		createEReference(loopNodeEClass, LOOP_NODE__BODY_PART);
+		createEReference(loopNodeEClass, LOOP_NODE__SETUP_PART);
+		createEReference(loopNodeEClass, LOOP_NODE__DECIDER);
+		createEReference(loopNodeEClass, LOOP_NODE__TEST);
+		createEReference(loopNodeEClass, LOOP_NODE__RESULT);
+		createEReference(loopNodeEClass, LOOP_NODE__LOOP_VARIABLE);
+		createEReference(loopNodeEClass, LOOP_NODE__BODY_OUTPUT);
+		createEReference(loopNodeEClass, LOOP_NODE__LOOP_VARIABLE_INPUT);
 
-		combinedFragmentEClass = createEClass(COMBINED_FRAGMENT);
-		createEAttribute(combinedFragmentEClass, COMBINED_FRAGMENT__INTERACTION_OPERATOR);
-		createEReference(combinedFragmentEClass, COMBINED_FRAGMENT__OPERAND);
-		createEReference(combinedFragmentEClass, COMBINED_FRAGMENT__CFRAGMENT_GATE);
+		templateSignatureEClass = createEClass(TEMPLATE_SIGNATURE);
+		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__PARAMETER);
+		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__OWNED_PARAMETER);
+		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__NESTED_SIGNATURE);
+		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__NESTING_SIGNATURE);
+		createEReference(templateSignatureEClass, TEMPLATE_SIGNATURE__TEMPLATE);
 
-		continuationEClass = createEClass(CONTINUATION);
-		createEAttribute(continuationEClass, CONTINUATION__SETTING);
+		templateParameterEClass = createEClass(TEMPLATE_PARAMETER);
+		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__SIGNATURE);
+		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__PARAMETERED_ELEMENT);
+		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__OWNED_PARAMETERED_ELEMENT);
+		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__DEFAULT);
+		createEReference(templateParameterEClass, TEMPLATE_PARAMETER__OWNED_DEFAULT);
+
+		templateableElementEClass = createEClass(TEMPLATEABLE_ELEMENT);
+		createEReference(templateableElementEClass, TEMPLATEABLE_ELEMENT__TEMPLATE_BINDING);
+		createEReference(templateableElementEClass, TEMPLATEABLE_ELEMENT__OWNED_TEMPLATE_SIGNATURE);
+
+		stringExpressionEClass = createEClass(STRING_EXPRESSION);
+		createEReference(stringExpressionEClass, STRING_EXPRESSION__SUB_EXPRESSION);
+		createEReference(stringExpressionEClass, STRING_EXPRESSION__OWNING_EXPRESSION);
+
+		parameterableElementEClass = createEClass(PARAMETERABLE_ELEMENT);
+		createEReference(parameterableElementEClass, PARAMETERABLE_ELEMENT__TEMPLATE_PARAMETER);
+		createEReference(parameterableElementEClass, PARAMETERABLE_ELEMENT__OWNING_PARAMETER);
+
+		templateBindingEClass = createEClass(TEMPLATE_BINDING);
+		createEReference(templateBindingEClass, TEMPLATE_BINDING__BOUND_ELEMENT);
+		createEReference(templateBindingEClass, TEMPLATE_BINDING__SIGNATURE);
+		createEReference(templateBindingEClass, TEMPLATE_BINDING__PARAMETER_SUBSTITUTION);
+
+		templateParameterSubstitutionEClass = createEClass(TEMPLATE_PARAMETER_SUBSTITUTION);
+		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__FORMAL);
+		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__TEMPLATE_BINDING);
+		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL);
+		createEReference(templateParameterSubstitutionEClass, TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL);
+
+		operationTemplateParameterEClass = createEClass(OPERATION_TEMPLATE_PARAMETER);
+
+		classifierTemplateParameterEClass = createEClass(CLASSIFIER_TEMPLATE_PARAMETER);
+		createEAttribute(classifierTemplateParameterEClass, CLASSIFIER_TEMPLATE_PARAMETER__ALLOW_SUBSTITUTABLE);
+
+		parameterableClassifierEClass = createEClass(PARAMETERABLE_CLASSIFIER);
+
+		redefinableTemplateSignatureEClass = createEClass(REDEFINABLE_TEMPLATE_SIGNATURE);
+
+		templateableClassifierEClass = createEClass(TEMPLATEABLE_CLASSIFIER);
+
+		connectableElementTemplateParameterEClass = createEClass(CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER);
 
 		stateMachineEClass = createEClass(STATE_MACHINE);
 		createEReference(stateMachineEClass, STATE_MACHINE__REGION);
@@ -9704,6 +9679,25 @@
 
 		finalStateEClass = createEClass(FINAL_STATE);
 
+		forkNodeEClass = createEClass(FORK_NODE);
+
+		joinNodeEClass = createEClass(JOIN_NODE);
+		createEAttribute(joinNodeEClass, JOIN_NODE__IS_COMBINE_DUPLICATE);
+		createEReference(joinNodeEClass, JOIN_NODE__JOIN_SPEC);
+
+		flowFinalNodeEClass = createEClass(FLOW_FINAL_NODE);
+
+		centralBufferNodeEClass = createEClass(CENTRAL_BUFFER_NODE);
+
+		activityPartitionEClass = createEClass(ACTIVITY_PARTITION);
+		createEAttribute(activityPartitionEClass, ACTIVITY_PARTITION__IS_DIMENSION);
+		createEAttribute(activityPartitionEClass, ACTIVITY_PARTITION__IS_EXTERNAL);
+		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__CONTAINED_EDGE);
+		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__CONTAINED_NODE);
+		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__SUBGROUP);
+		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__SUPER_PARTITION);
+		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__REPRESENTS);
+
 		createObjectActionEClass = createEClass(CREATE_OBJECT_ACTION);
 		createEReference(createObjectActionEClass, CREATE_OBJECT_ACTION__CLASSIFIER);
 		createEReference(createObjectActionEClass, CREATE_OBJECT_ACTION__RESULT);
@@ -9814,24 +9808,30 @@
 		callBehaviorActionEClass = createEClass(CALL_BEHAVIOR_ACTION);
 		createEReference(callBehaviorActionEClass, CALL_BEHAVIOR_ACTION__BEHAVIOR);
 
-		forkNodeEClass = createEClass(FORK_NODE);
+		interactionOccurrenceEClass = createEClass(INTERACTION_OCCURRENCE);
+		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__REFERS_TO);
+		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__ACTUAL_GATE);
+		createEReference(interactionOccurrenceEClass, INTERACTION_OCCURRENCE__ARGUMENT);
 
-		joinNodeEClass = createEClass(JOIN_NODE);
-		createEAttribute(joinNodeEClass, JOIN_NODE__IS_COMBINE_DUPLICATE);
-		createEReference(joinNodeEClass, JOIN_NODE__JOIN_SPEC);
+		gateEClass = createEClass(GATE);
 
-		flowFinalNodeEClass = createEClass(FLOW_FINAL_NODE);
+		partDecompositionEClass = createEClass(PART_DECOMPOSITION);
 
-		centralBufferNodeEClass = createEClass(CENTRAL_BUFFER_NODE);
+		interactionOperandEClass = createEClass(INTERACTION_OPERAND);
+		createEReference(interactionOperandEClass, INTERACTION_OPERAND__GUARD);
+		createEReference(interactionOperandEClass, INTERACTION_OPERAND__FRAGMENT);
 
-		activityPartitionEClass = createEClass(ACTIVITY_PARTITION);
-		createEAttribute(activityPartitionEClass, ACTIVITY_PARTITION__IS_DIMENSION);
-		createEAttribute(activityPartitionEClass, ACTIVITY_PARTITION__IS_EXTERNAL);
-		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__CONTAINED_EDGE);
-		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__CONTAINED_NODE);
-		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__SUBGROUP);
-		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__SUPER_PARTITION);
-		createEReference(activityPartitionEClass, ACTIVITY_PARTITION__REPRESENTS);
+		interactionConstraintEClass = createEClass(INTERACTION_CONSTRAINT);
+		createEReference(interactionConstraintEClass, INTERACTION_CONSTRAINT__MININT);
+		createEReference(interactionConstraintEClass, INTERACTION_CONSTRAINT__MAXINT);
+
+		combinedFragmentEClass = createEClass(COMBINED_FRAGMENT);
+		createEAttribute(combinedFragmentEClass, COMBINED_FRAGMENT__INTERACTION_OPERATOR);
+		createEReference(combinedFragmentEClass, COMBINED_FRAGMENT__OPERAND);
+		createEReference(combinedFragmentEClass, COMBINED_FRAGMENT__CFRAGMENT_GATE);
+
+		continuationEClass = createEClass(CONTINUATION);
+		createEAttribute(continuationEClass, CONTINUATION__SETTING);
 
 		expansionNodeEClass = createEClass(EXPANSION_NODE);
 		createEReference(expansionNodeEClass, EXPANSION_NODE__REGION_AS_OUTPUT);
@@ -9860,6 +9860,13 @@
 		createEReference(protocolTransitionEClass, PROTOCOL_TRANSITION__REFERRED);
 		createEReference(protocolTransitionEClass, PROTOCOL_TRANSITION__PRE_CONDITION);
 
+		componentEClass = createEClass(COMPONENT);
+		createEAttribute(componentEClass, COMPONENT__IS_INDIRECTLY_INSTANTIATED);
+		createEReference(componentEClass, COMPONENT__REQUIRED);
+		createEReference(componentEClass, COMPONENT__PROVIDED);
+		createEReference(componentEClass, COMPONENT__REALIZATION);
+		createEReference(componentEClass, COMPONENT__OWNED_MEMBER);
+
 		timeExpressionEClass = createEClass(TIME_EXPRESSION);
 		createEAttribute(timeExpressionEClass, TIME_EXPRESSION__FIRST_TIME);
 		createEReference(timeExpressionEClass, TIME_EXPRESSION__EVENT);
@@ -9888,16 +9895,6 @@
 
 		durationConstraintEClass = createEClass(DURATION_CONSTRAINT);
 
-		dataStoreNodeEClass = createEClass(DATA_STORE_NODE);
-
-		interruptibleActivityRegionEClass = createEClass(INTERRUPTIBLE_ACTIVITY_REGION);
-		createEReference(interruptibleActivityRegionEClass, INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE);
-		createEReference(interruptibleActivityRegionEClass, INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE);
-
-		parameterSetEClass = createEClass(PARAMETER_SET);
-		createEReference(parameterSetEClass, PARAMETER_SET__PARAMETER);
-		createEReference(parameterSetEClass, PARAMETER_SET__CONDITION);
-
 		readExtentActionEClass = createEClass(READ_EXTENT_ACTION);
 		createEReference(readExtentActionEClass, READ_EXTENT_ACTION__RESULT);
 		createEReference(readExtentActionEClass, READ_EXTENT_ACTION__CLASSIFIER);
@@ -9949,13 +9946,6 @@
 		raiseExceptionActionEClass = createEClass(RAISE_EXCEPTION_ACTION);
 		createEReference(raiseExceptionActionEClass, RAISE_EXCEPTION_ACTION__EXCEPTION);
 
-		componentEClass = createEClass(COMPONENT);
-		createEAttribute(componentEClass, COMPONENT__IS_INDIRECTLY_INSTANTIATED);
-		createEReference(componentEClass, COMPONENT__REQUIRED);
-		createEReference(componentEClass, COMPONENT__PROVIDED);
-		createEReference(componentEClass, COMPONENT__REALIZATION);
-		createEReference(componentEClass, COMPONENT__OWNED_MEMBER);
-
 		deploymentEClass = createEClass(DEPLOYMENT);
 		createEReference(deploymentEClass, DEPLOYMENT__DEPLOYED_ARTIFACT);
 		createEReference(deploymentEClass, DEPLOYMENT__LOCATION);
@@ -9976,6 +9966,16 @@
 
 		communicationPathEClass = createEClass(COMMUNICATION_PATH);
 
+		dataStoreNodeEClass = createEClass(DATA_STORE_NODE);
+
+		interruptibleActivityRegionEClass = createEClass(INTERRUPTIBLE_ACTIVITY_REGION);
+		createEReference(interruptibleActivityRegionEClass, INTERRUPTIBLE_ACTIVITY_REGION__INTERRUPTING_EDGE);
+		createEReference(interruptibleActivityRegionEClass, INTERRUPTIBLE_ACTIVITY_REGION__CONTAINED_NODE);
+
+		parameterSetEClass = createEClass(PARAMETER_SET);
+		createEReference(parameterSetEClass, PARAMETER_SET__PARAMETER);
+		createEReference(parameterSetEClass, PARAMETER_SET__CONDITION);
+
 		deploymentSpecificationEClass = createEClass(DEPLOYMENT_SPECIFICATION);
 		createEAttribute(deploymentSpecificationEClass, DEPLOYMENT_SPECIFICATION__DEPLOYMENT_LOCATION);
 		createEAttribute(deploymentSpecificationEClass, DEPLOYMENT_SPECIFICATION__EXECUTION_LOCATION);
@@ -9987,13 +9987,13 @@
 		messageKindEEnum = createEEnum(MESSAGE_KIND);
 		messageSortEEnum = createEEnum(MESSAGE_SORT);
 		callConcurrencyKindEEnum = createEEnum(CALL_CONCURRENCY_KIND);
-		interactionOperatorEEnum = createEEnum(INTERACTION_OPERATOR);
 		transitionKindEEnum = createEEnum(TRANSITION_KIND);
 		pseudostateKindEEnum = createEEnum(PSEUDOSTATE_KIND);
+		interactionOperatorEEnum = createEEnum(INTERACTION_OPERATOR);
 		expansionKindEEnum = createEEnum(EXPANSION_KIND);
+		connectorKindEEnum = createEEnum(CONNECTOR_KIND);
 		parameterEffectKindEEnum = createEEnum(PARAMETER_EFFECT_KIND);
 		objectNodeOrderingKindEEnum = createEEnum(OBJECT_NODE_ORDERING_KIND);
-		connectorKindEEnum = createEEnum(CONNECTOR_KIND);
 
 		// Create data types
 		integerEDataType = createEDataType(INTEGER);
@@ -10033,11 +10033,15 @@
 		// Add supertypes to classes
 		elementEClass.getESuperTypes().add(theEcorePackage.getEModelElement());
 		multiplicityElementEClass.getESuperTypes().add(this.getElement());
+		namedElementEClass.getESuperTypes().add(this.getTemplateableElement());
+		namespaceEClass.getESuperTypes().add(this.getNamedElement());
+		commentEClass.getESuperTypes().add(this.getTemplateableElement());
+		directedRelationshipEClass.getESuperTypes().add(this.getRelationship());
+		relationshipEClass.getESuperTypes().add(this.getElement());
 		opaqueExpressionEClass.getESuperTypes().add(this.getValueSpecification());
 		valueSpecificationEClass.getESuperTypes().add(this.getTypedElement());
 		valueSpecificationEClass.getESuperTypes().add(this.getParameterableElement());
 		expressionEClass.getESuperTypes().add(this.getOpaqueExpression());
-		commentEClass.getESuperTypes().add(this.getTemplateableElement());
 		classEClass.getESuperTypes().add(this.getEncapsulatedClassifier());
 		classEClass.getESuperTypes().add(this.getBehavioredClassifier());
 		typeEClass.getESuperTypes().add(this.getPackageableElement());
@@ -10052,16 +10056,12 @@
 		parameterEClass.getESuperTypes().add(this.getConnectableElement());
 		parameterEClass.getESuperTypes().add(this.getTypedElement());
 		parameterEClass.getESuperTypes().add(this.getMultiplicityElement());
-		namedElementEClass.getESuperTypes().add(this.getTemplateableElement());
 		packageEClass.getESuperTypes().add(this.getNamespace());
 		packageEClass.getESuperTypes().add(this.getPackageableElement());
 		enumerationEClass.getESuperTypes().add(this.getDataType());
 		dataTypeEClass.getESuperTypes().add(this.getClassifier());
 		enumerationLiteralEClass.getESuperTypes().add(this.getInstanceSpecification());
 		primitiveTypeEClass.getESuperTypes().add(this.getDataType());
-		namespaceEClass.getESuperTypes().add(this.getNamedElement());
-		directedRelationshipEClass.getESuperTypes().add(this.getRelationship());
-		relationshipEClass.getESuperTypes().add(this.getElement());
 		constraintEClass.getESuperTypes().add(this.getPackageableElement());
 		literalBooleanEClass.getESuperTypes().add(this.getLiteralSpecification());
 		literalSpecificationEClass.getESuperTypes().add(this.getValueSpecification());
@@ -10079,12 +10079,12 @@
 		structuralFeatureEClass.getESuperTypes().add(this.getTypedElement());
 		structuralFeatureEClass.getESuperTypes().add(this.getMultiplicityElement());
 		generalizationEClass.getESuperTypes().add(this.getDirectedRelationship());
+		redefinableElementEClass.getESuperTypes().add(this.getNamedElement());
 		instanceSpecificationEClass.getESuperTypes().add(this.getPackageableElement());
 		instanceSpecificationEClass.getESuperTypes().add(this.getDeploymentTarget());
 		instanceSpecificationEClass.getESuperTypes().add(this.getDeployedArtifact());
 		slotEClass.getESuperTypes().add(this.getElement());
 		instanceValueEClass.getESuperTypes().add(this.getValueSpecification());
-		redefinableElementEClass.getESuperTypes().add(this.getNamedElement());
 		packageableElementEClass.getESuperTypes().add(this.getNamedElement());
 		packageableElementEClass.getESuperTypes().add(this.getParameterableElement());
 		elementImportEClass.getESuperTypes().add(this.getDirectedRelationship());
@@ -10097,12 +10097,6 @@
 		profileApplicationEClass.getESuperTypes().add(this.getPackageImport());
 		extensionEClass.getESuperTypes().add(this.getAssociation());
 		extensionEndEClass.getESuperTypes().add(this.getProperty());
-		associationClassEClass.getESuperTypes().add(this.getClass_());
-		associationClassEClass.getESuperTypes().add(this.getAssociation());
-		generalizationSetEClass.getESuperTypes().add(this.getPackageableElement());
-		informationItemEClass.getESuperTypes().add(this.getClassifier());
-		informationFlowEClass.getESuperTypes().add(this.getDirectedRelationship());
-		modelEClass.getESuperTypes().add(this.getPackage());
 		permissionEClass.getESuperTypes().add(this.getDependency());
 		dependencyEClass.getESuperTypes().add(this.getPackageableElement());
 		dependencyEClass.getESuperTypes().add(this.getDirectedRelationship());
@@ -10113,6 +10107,29 @@
 		behaviorEClass.getESuperTypes().add(this.getClass_());
 		behavioredClassifierEClass.getESuperTypes().add(this.getClassifier());
 		activityEClass.getESuperTypes().add(this.getBehavior());
+		associationClassEClass.getESuperTypes().add(this.getClass_());
+		associationClassEClass.getESuperTypes().add(this.getAssociation());
+		modelEClass.getESuperTypes().add(this.getPackage());
+		informationItemEClass.getESuperTypes().add(this.getClassifier());
+		informationFlowEClass.getESuperTypes().add(this.getDirectedRelationship());
+		generalizationSetEClass.getESuperTypes().add(this.getPackageableElement());
+		connectorEndEClass.getESuperTypes().add(this.getMultiplicityElement());
+		connectableElementEClass.getESuperTypes().add(this.getNamedElement());
+		connectableElementEClass.getESuperTypes().add(this.getParameterableElement());
+		connectorEClass.getESuperTypes().add(this.getFeature());
+		structuredClassifierEClass.getESuperTypes().add(this.getClassifier());
+		interfaceEClass.getESuperTypes().add(this.getClassifier());
+		implementationEClass.getESuperTypes().add(this.getRealization());
+		actorEClass.getESuperTypes().add(this.getClassifier());
+		extendEClass.getESuperTypes().add(this.getNamedElement());
+		extendEClass.getESuperTypes().add(this.getDirectedRelationship());
+		useCaseEClass.getESuperTypes().add(this.getBehavioredClassifier());
+		extensionPointEClass.getESuperTypes().add(this.getRedefinableElement());
+		includeEClass.getESuperTypes().add(this.getNamedElement());
+		includeEClass.getESuperTypes().add(this.getDirectedRelationship());
+		artifactEClass.getESuperTypes().add(this.getClassifier());
+		artifactEClass.getESuperTypes().add(this.getDeployedArtifact());
+		manifestationEClass.getESuperTypes().add(this.getAbstraction());
 		activityEdgeEClass.getESuperTypes().add(this.getRedefinableElement());
 		activityGroupEClass.getESuperTypes().add(this.getElement());
 		activityNodeEClass.getESuperTypes().add(this.getRedefinableElement());
@@ -10133,26 +10150,40 @@
 		pinEClass.getESuperTypes().add(this.getObjectNode());
 		activityParameterNodeEClass.getESuperTypes().add(this.getObjectNode());
 		valuePinEClass.getESuperTypes().add(this.getInputPin());
-		interfaceEClass.getESuperTypes().add(this.getClassifier());
-		implementationEClass.getESuperTypes().add(this.getRealization());
-		actorEClass.getESuperTypes().add(this.getClassifier());
-		extendEClass.getESuperTypes().add(this.getNamedElement());
-		extendEClass.getESuperTypes().add(this.getDirectedRelationship());
-		useCaseEClass.getESuperTypes().add(this.getBehavioredClassifier());
-		extensionPointEClass.getESuperTypes().add(this.getRedefinableElement());
-		includeEClass.getESuperTypes().add(this.getNamedElement());
-		includeEClass.getESuperTypes().add(this.getDirectedRelationship());
-		artifactEClass.getESuperTypes().add(this.getClassifier());
-		artifactEClass.getESuperTypes().add(this.getDeployedArtifact());
-		manifestationEClass.getESuperTypes().add(this.getAbstraction());
-		connectorEndEClass.getESuperTypes().add(this.getMultiplicityElement());
-		connectableElementEClass.getESuperTypes().add(this.getNamedElement());
-		connectableElementEClass.getESuperTypes().add(this.getParameterableElement());
-		connectorEClass.getESuperTypes().add(this.getFeature());
-		structuredClassifierEClass.getESuperTypes().add(this.getClassifier());
 		collaborationOccurrenceEClass.getESuperTypes().add(this.getNamedElement());
 		collaborationEClass.getESuperTypes().add(this.getBehavioredClassifier());
 		collaborationEClass.getESuperTypes().add(this.getStructuredClassifier());
+		interactionEClass.getESuperTypes().add(this.getBehavior());
+		interactionEClass.getESuperTypes().add(this.getInteractionFragment());
+		interactionFragmentEClass.getESuperTypes().add(this.getNamedElement());
+		lifelineEClass.getESuperTypes().add(this.getNamedElement());
+		messageEClass.getESuperTypes().add(this.getNamedElement());
+		generalOrderingEClass.getESuperTypes().add(this.getNamedElement());
+		messageEndEClass.getESuperTypes().add(this.getNamedElement());
+		eventOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
+		eventOccurrenceEClass.getESuperTypes().add(this.getMessageEnd());
+		executionOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
+		stateInvariantEClass.getESuperTypes().add(this.getInteractionFragment());
+		stopEClass.getESuperTypes().add(this.getEventOccurrence());
+		portEClass.getESuperTypes().add(this.getProperty());
+		encapsulatedClassifierEClass.getESuperTypes().add(this.getStructuredClassifier());
+		callTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
+		messageTriggerEClass.getESuperTypes().add(this.getTrigger());
+		changeTriggerEClass.getESuperTypes().add(this.getTrigger());
+		triggerEClass.getESuperTypes().add(this.getPackageableElement());
+		receptionEClass.getESuperTypes().add(this.getBehavioralFeature());
+		signalEClass.getESuperTypes().add(this.getBehavioredClassifier());
+		signalTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
+		timeTriggerEClass.getESuperTypes().add(this.getTrigger());
+		anyTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
+		variableEClass.getESuperTypes().add(this.getConnectableElement());
+		variableEClass.getESuperTypes().add(this.getTypedElement());
+		structuredActivityNodeEClass.getESuperTypes().add(this.getAction());
+		structuredActivityNodeEClass.getESuperTypes().add(this.getNamespace());
+		structuredActivityNodeEClass.getESuperTypes().add(this.getActivityGroup());
+		conditionalNodeEClass.getESuperTypes().add(this.getStructuredActivityNode());
+		clauseEClass.getESuperTypes().add(this.getElement());
+		loopNodeEClass.getESuperTypes().add(this.getStructuredActivityNode());
 		templateSignatureEClass.getESuperTypes().add(this.getElement());
 		templateParameterEClass.getESuperTypes().add(this.getElement());
 		templateableElementEClass.getESuperTypes().add(this.getElement());
@@ -10167,45 +10198,6 @@
 		redefinableTemplateSignatureEClass.getESuperTypes().add(this.getTemplateSignature());
 		templateableClassifierEClass.getESuperTypes().add(this.getClassifier());
 		connectableElementTemplateParameterEClass.getESuperTypes().add(this.getTemplateParameter());
-		interactionEClass.getESuperTypes().add(this.getBehavior());
-		interactionEClass.getESuperTypes().add(this.getInteractionFragment());
-		interactionFragmentEClass.getESuperTypes().add(this.getNamedElement());
-		lifelineEClass.getESuperTypes().add(this.getNamedElement());
-		messageEClass.getESuperTypes().add(this.getNamedElement());
-		generalOrderingEClass.getESuperTypes().add(this.getNamedElement());
-		messageEndEClass.getESuperTypes().add(this.getNamedElement());
-		eventOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
-		eventOccurrenceEClass.getESuperTypes().add(this.getMessageEnd());
-		executionOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
-		stateInvariantEClass.getESuperTypes().add(this.getInteractionFragment());
-		stopEClass.getESuperTypes().add(this.getEventOccurrence());
-		variableEClass.getESuperTypes().add(this.getConnectableElement());
-		variableEClass.getESuperTypes().add(this.getTypedElement());
-		structuredActivityNodeEClass.getESuperTypes().add(this.getAction());
-		structuredActivityNodeEClass.getESuperTypes().add(this.getNamespace());
-		structuredActivityNodeEClass.getESuperTypes().add(this.getActivityGroup());
-		conditionalNodeEClass.getESuperTypes().add(this.getStructuredActivityNode());
-		clauseEClass.getESuperTypes().add(this.getElement());
-		loopNodeEClass.getESuperTypes().add(this.getStructuredActivityNode());
-		portEClass.getESuperTypes().add(this.getProperty());
-		encapsulatedClassifierEClass.getESuperTypes().add(this.getStructuredClassifier());
-		callTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
-		messageTriggerEClass.getESuperTypes().add(this.getTrigger());
-		changeTriggerEClass.getESuperTypes().add(this.getTrigger());
-		triggerEClass.getESuperTypes().add(this.getPackageableElement());
-		receptionEClass.getESuperTypes().add(this.getBehavioralFeature());
-		signalEClass.getESuperTypes().add(this.getBehavioredClassifier());
-		signalTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
-		timeTriggerEClass.getESuperTypes().add(this.getTrigger());
-		anyTriggerEClass.getESuperTypes().add(this.getMessageTrigger());
-		interactionOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
-		gateEClass.getESuperTypes().add(this.getMessageEnd());
-		partDecompositionEClass.getESuperTypes().add(this.getInteractionOccurrence());
-		interactionOperandEClass.getESuperTypes().add(this.getNamespace());
-		interactionOperandEClass.getESuperTypes().add(this.getInteractionFragment());
-		interactionConstraintEClass.getESuperTypes().add(this.getConstraint());
-		combinedFragmentEClass.getESuperTypes().add(this.getInteractionFragment());
-		continuationEClass.getESuperTypes().add(this.getInteractionFragment());
 		stateMachineEClass.getESuperTypes().add(this.getBehavior());
 		regionEClass.getESuperTypes().add(this.getRedefinableElement());
 		pseudostateEClass.getESuperTypes().add(this.getVertex());
@@ -10215,6 +10207,12 @@
 		connectionPointReferenceEClass.getESuperTypes().add(this.getVertex());
 		transitionEClass.getESuperTypes().add(this.getRedefinableElement());
 		finalStateEClass.getESuperTypes().add(this.getState());
+		forkNodeEClass.getESuperTypes().add(this.getControlNode());
+		joinNodeEClass.getESuperTypes().add(this.getControlNode());
+		flowFinalNodeEClass.getESuperTypes().add(this.getFinalNode());
+		centralBufferNodeEClass.getESuperTypes().add(this.getObjectNode());
+		activityPartitionEClass.getESuperTypes().add(this.getNamedElement());
+		activityPartitionEClass.getESuperTypes().add(this.getActivityGroup());
 		createObjectActionEClass.getESuperTypes().add(this.getAction());
 		destroyObjectActionEClass.getESuperTypes().add(this.getAction());
 		testIdentityActionEClass.getESuperTypes().add(this.getAction());
@@ -10248,18 +10246,21 @@
 		sendObjectActionEClass.getESuperTypes().add(this.getInvocationAction());
 		callOperationActionEClass.getESuperTypes().add(this.getCallAction());
 		callBehaviorActionEClass.getESuperTypes().add(this.getCallAction());
-		forkNodeEClass.getESuperTypes().add(this.getControlNode());
-		joinNodeEClass.getESuperTypes().add(this.getControlNode());
-		flowFinalNodeEClass.getESuperTypes().add(this.getFinalNode());
-		centralBufferNodeEClass.getESuperTypes().add(this.getObjectNode());
-		activityPartitionEClass.getESuperTypes().add(this.getNamedElement());
-		activityPartitionEClass.getESuperTypes().add(this.getActivityGroup());
+		interactionOccurrenceEClass.getESuperTypes().add(this.getInteractionFragment());
+		gateEClass.getESuperTypes().add(this.getMessageEnd());
+		partDecompositionEClass.getESuperTypes().add(this.getInteractionOccurrence());
+		interactionOperandEClass.getESuperTypes().add(this.getNamespace());
+		interactionOperandEClass.getESuperTypes().add(this.getInteractionFragment());
+		interactionConstraintEClass.getESuperTypes().add(this.getConstraint());
+		combinedFragmentEClass.getESuperTypes().add(this.getInteractionFragment());
+		continuationEClass.getESuperTypes().add(this.getInteractionFragment());
 		expansionNodeEClass.getESuperTypes().add(this.getObjectNode());
 		expansionRegionEClass.getESuperTypes().add(this.getStructuredActivityNode());
 		exceptionHandlerEClass.getESuperTypes().add(this.getElement());
 		protocolConformanceEClass.getESuperTypes().add(this.getDirectedRelationship());
 		protocolStateMachineEClass.getESuperTypes().add(this.getStateMachine());
 		protocolTransitionEClass.getESuperTypes().add(this.getTransition());
+		componentEClass.getESuperTypes().add(this.getClass_());
 		timeExpressionEClass.getESuperTypes().add(this.getValueSpecification());
 		durationEClass.getESuperTypes().add(this.getValueSpecification());
 		timeObservationActionEClass.getESuperTypes().add(this.getWriteStructuralFeatureAction());
@@ -10270,9 +10271,6 @@
 		timeIntervalEClass.getESuperTypes().add(this.getInterval());
 		durationObservationActionEClass.getESuperTypes().add(this.getWriteStructuralFeatureAction());
 		durationConstraintEClass.getESuperTypes().add(this.getIntervalConstraint());
-		dataStoreNodeEClass.getESuperTypes().add(this.getCentralBufferNode());
-		interruptibleActivityRegionEClass.getESuperTypes().add(this.getActivityGroup());
-		parameterSetEClass.getESuperTypes().add(this.getNamedElement());
 		readExtentActionEClass.getESuperTypes().add(this.getAction());
 		reclassifyObjectActionEClass.getESuperTypes().add(this.getAction());
 		readIsClassifiedObjectActionEClass.getESuperTypes().add(this.getAction());
@@ -10285,7 +10283,6 @@
 		acceptCallActionEClass.getESuperTypes().add(this.getAcceptEventAction());
 		replyActionEClass.getESuperTypes().add(this.getAction());
 		raiseExceptionActionEClass.getESuperTypes().add(this.getAction());
-		componentEClass.getESuperTypes().add(this.getClass_());
 		deploymentEClass.getESuperTypes().add(this.getDependency());
 		deployedArtifactEClass.getESuperTypes().add(this.getNamedElement());
 		deploymentTargetEClass.getESuperTypes().add(this.getNamedElement());
@@ -10294,6 +10291,9 @@
 		deviceEClass.getESuperTypes().add(this.getNode());
 		executionEnvironmentEClass.getESuperTypes().add(this.getNode());
 		communicationPathEClass.getESuperTypes().add(this.getAssociation());
+		dataStoreNodeEClass.getESuperTypes().add(this.getCentralBufferNode());
+		interruptibleActivityRegionEClass.getESuperTypes().add(this.getActivityGroup());
+		parameterSetEClass.getESuperTypes().add(this.getNamedElement());
 		deploymentSpecificationEClass.getESuperTypes().add(this.getArtifact());
 
 		// Initialize classes and features; add operations and parameters
@@ -10346,6 +10346,79 @@
 
 		addEOperation(multiplicityElementEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
+		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getNamedElement_Name(), this.getString(), "name", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEAttribute(getNamedElement_QualifiedName(), this.getString(), "qualifiedName", "", 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEAttribute(getNamedElement_Visibility(), this.getVisibilityKind(), "visibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamedElement_ClientDependency(), this.getDependency(), this.getDependency_Client(), "clientDependency", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamedElement_NameExpression(), this.getStringExpression(), null, "nameExpression", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getBoolean(), "validateNoName"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getBoolean(), "validateQualifiedName"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getSequence(), "allNamespaces"); //$NON-NLS-1$
+
+		op = addEOperation(namedElementEClass, this.getBoolean(), "isDistinguishableFrom"); //$NON-NLS-1$
+		addEParameter(op, this.getNamedElement(), "n"); //$NON-NLS-1$
+		addEParameter(op, this.getNamespace(), "ns"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getString(), "separator"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getString(), "qualifiedName"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getBoolean(), "validateVisibilityNeedsOwnership"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getNamespace(), "getNamespace"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
+
+		addEOperation(namedElementEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(namespaceEClass, Namespace.class, "Namespace", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getNamespace_Member(), this.getNamedElement(), null, "member", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamespace_OwnedRule(), this.getConstraint(), this.getConstraint_Namespace(), "ownedRule", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamespace_ImportedMember(), this.getPackageableElement(), null, "importedMember", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamespace_ElementImport(), this.getElementImport(), this.getElementImport_ImportingNamespace(), "elementImport", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getNamespace_PackageImport(), this.getPackageImport(), this.getPackageImport_ImportingNamespace(), "packageImport", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, this.getBoolean(), "validateMembersAreDistinguishable"); //$NON-NLS-1$
+
+		op = addEOperation(namespaceEClass, this.getSet(), "getNamesOfMember"); //$NON-NLS-1$
+		addEParameter(op, this.getNamedElement(), "element"); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, this.getBoolean(), "membersAreDistinguishable"); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, this.getBoolean(), "validateImportedMemberDerived"); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, this.getSet(), "importedMember"); //$NON-NLS-1$
+
+		op = addEOperation(namespaceEClass, this.getSet(), "importMembers"); //$NON-NLS-1$
+		addEParameter(op, this.getSet(), "imps"); //$NON-NLS-1$
+
+		op = addEOperation(namespaceEClass, this.getSet(), "excludeCollisions"); //$NON-NLS-1$
+		addEParameter(op, this.getSet(), "imps"); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		addEOperation(namespaceEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(commentEClass, Comment.class, "Comment", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getComment_Body(), this.getString(), "body", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEReference(getComment_AnnotatedElement(), this.getElement(), null, "annotatedElement", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getComment_BodyExpression(), this.getStringExpression(), null, "bodyExpression", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(commentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(directedRelationshipEClass, DirectedRelationship.class, "DirectedRelationship", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getDirectedRelationship_Source(), this.getElement(), null, "source", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getDirectedRelationship_Target(), this.getElement(), null, "target", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(directedRelationshipEClass, ecorePackage.getEEList(), "getRelatedElements"); //$NON-NLS-1$
+
+		initEClass(relationshipEClass, Relationship.class, "Relationship", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getRelationship_RelatedElement(), this.getElement(), null, "relatedElement", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+
 		initEClass(opaqueExpressionEClass, OpaqueExpression.class, "OpaqueExpression", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEAttribute(getOpaqueExpression_Body(), this.getString(), "body", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
 		initEAttribute(getOpaqueExpression_Language(), this.getString(), "language", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -10372,13 +10445,6 @@
 
 		addEOperation(expressionEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(commentEClass, Comment.class, "Comment", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getComment_Body(), this.getString(), "body", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEReference(getComment_AnnotatedElement(), this.getElement(), null, "annotatedElement", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getComment_BodyExpression(), this.getStringExpression(), null, "bodyExpression", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(commentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
 		initEClass(classEClass, org.eclipse.uml2.Class.class, "Class", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getClass_OwnedOperation(), this.getOperation(), this.getOperation_Class_(), "ownedOperation", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClass_SuperClass(), this.getClass_(), null, "superClass", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
@@ -10539,35 +10605,6 @@
 
 		addEOperation(parameterEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getNamedElement_Name(), this.getString(), "name", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEAttribute(getNamedElement_QualifiedName(), this.getString(), "qualifiedName", "", 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEAttribute(getNamedElement_Visibility(), this.getVisibilityKind(), "visibility", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamedElement_ClientDependency(), this.getDependency(), this.getDependency_Client(), "clientDependency", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamedElement_NameExpression(), this.getStringExpression(), null, "nameExpression", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getBoolean(), "validateNoName"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getBoolean(), "validateQualifiedName"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getSequence(), "allNamespaces"); //$NON-NLS-1$
-
-		op = addEOperation(namedElementEClass, this.getBoolean(), "isDistinguishableFrom"); //$NON-NLS-1$
-		addEParameter(op, this.getNamedElement(), "n"); //$NON-NLS-1$
-		addEParameter(op, this.getNamespace(), "ns"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getString(), "separator"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getString(), "qualifiedName"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getBoolean(), "validateVisibilityNeedsOwnership"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getNamespace(), "getNamespace"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		addEOperation(namedElementEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
 		initEClass(packageEClass, org.eclipse.uml2.Package.class, "Package", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getPackage_NestedPackage(), this.getPackage(), this.getPackage_NestingPackage(), "nestedPackage", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
 		initEReference(getPackage_NestingPackage(), this.getPackage(), this.getPackage_NestedPackage(), "nestingPackage", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
@@ -10617,43 +10654,6 @@
 
 		initEClass(primitiveTypeEClass, PrimitiveType.class, "PrimitiveType", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		initEClass(namespaceEClass, Namespace.class, "Namespace", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getNamespace_Member(), this.getNamedElement(), null, "member", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamespace_OwnedRule(), this.getConstraint(), this.getConstraint_Namespace(), "ownedRule", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamespace_ImportedMember(), this.getPackageableElement(), null, "importedMember", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamespace_ElementImport(), this.getElementImport(), this.getElementImport_ImportingNamespace(), "elementImport", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getNamespace_PackageImport(), this.getPackageImport(), this.getPackageImport_ImportingNamespace(), "packageImport", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, this.getBoolean(), "validateMembersAreDistinguishable"); //$NON-NLS-1$
-
-		op = addEOperation(namespaceEClass, this.getSet(), "getNamesOfMember"); //$NON-NLS-1$
-		addEParameter(op, this.getNamedElement(), "element"); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, this.getBoolean(), "membersAreDistinguishable"); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, this.getBoolean(), "validateImportedMemberDerived"); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, this.getSet(), "importedMember"); //$NON-NLS-1$
-
-		op = addEOperation(namespaceEClass, this.getSet(), "importMembers"); //$NON-NLS-1$
-		addEParameter(op, this.getSet(), "imps"); //$NON-NLS-1$
-
-		op = addEOperation(namespaceEClass, this.getSet(), "excludeCollisions"); //$NON-NLS-1$
-		addEParameter(op, this.getSet(), "imps"); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
-
-		addEOperation(namespaceEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(directedRelationshipEClass, DirectedRelationship.class, "DirectedRelationship", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getDirectedRelationship_Source(), this.getElement(), null, "source", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getDirectedRelationship_Target(), this.getElement(), null, "target", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(directedRelationshipEClass, ecorePackage.getEEList(), "getRelatedElements"); //$NON-NLS-1$
-
-		initEClass(relationshipEClass, Relationship.class, "Relationship", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getRelationship_RelatedElement(), this.getElement(), null, "relatedElement", null, 1, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-
 		initEClass(constraintEClass, Constraint.class, "Constraint", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getConstraint_Context(), this.getNamespace(), null, "context", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
 		initEReference(getConstraint_Namespace(), this.getNamespace(), this.getNamespace_OwnedRule(), "namespace", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -10708,8 +10708,8 @@
 		initEReference(getClassifier_Generalization(), this.getGeneralization(), this.getGeneralization_Specific(), "generalization", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_Attribute(), this.getProperty(), null, "attribute", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_RedefinedClassifier(), this.getClassifier(), null, "redefinedClassifier", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getClassifier_PowertypeExtent(), this.getGeneralizationSet(), this.getGeneralizationSet_Powertype(), "powertypeExtent", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_Substitution(), this.getSubstitution(), this.getSubstitution_SubstitutingClassifier(), "substitution", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getClassifier_PowertypeExtent(), this.getGeneralizationSet(), this.getGeneralizationSet_Powertype(), "powertypeExtent", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_OwnedUseCase(), this.getUseCase(), null, "ownedUseCase", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_Representation(), this.getCollaborationOccurrence(), null, "representation", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getClassifier_Occurrence(), this.getCollaborationOccurrence(), null, "occurrence", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -10793,6 +10793,22 @@
 
 		addEOperation(generalizationEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
 
+		initEClass(redefinableElementEClass, RedefinableElement.class, "RedefinableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getRedefinableElement_RedefinitionContext(), this.getClassifier(), null, "redefinitionContext", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEAttribute(getRedefinableElement_IsLeaf(), this.getBoolean(), "isLeaf", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+
+		addEOperation(redefinableElementEClass, this.getBoolean(), "validateRedefinitionContextValid"); //$NON-NLS-1$
+
+		addEOperation(redefinableElementEClass, this.getBoolean(), "validateRedefinitionConsistent"); //$NON-NLS-1$
+
+		op = addEOperation(redefinableElementEClass, this.getBoolean(), "isConsistentWith"); //$NON-NLS-1$
+		addEParameter(op, this.getRedefinableElement(), "redefinee"); //$NON-NLS-1$
+
+		op = addEOperation(redefinableElementEClass, this.getBoolean(), "isRedefinitionContextValid"); //$NON-NLS-1$
+		addEParameter(op, this.getRedefinableElement(), "redefinable"); //$NON-NLS-1$
+
+		addEOperation(redefinableElementEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
+
 		initEClass(instanceSpecificationEClass, InstanceSpecification.class, "InstanceSpecification", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getInstanceSpecification_Slot(), this.getSlot(), this.getSlot_OwningInstance(), "slot", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getInstanceSpecification_Classifier(), this.getClassifier(), null, "classifier", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -10816,22 +10832,6 @@
 		initEClass(instanceValueEClass, InstanceValue.class, "InstanceValue", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getInstanceValue_Instance(), this.getInstanceSpecification(), null, "instance", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(redefinableElementEClass, RedefinableElement.class, "RedefinableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getRedefinableElement_RedefinitionContext(), this.getClassifier(), null, "redefinitionContext", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEAttribute(getRedefinableElement_IsLeaf(), this.getBoolean(), "isLeaf", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-
-		addEOperation(redefinableElementEClass, this.getBoolean(), "validateRedefinitionContextValid"); //$NON-NLS-1$
-
-		addEOperation(redefinableElementEClass, this.getBoolean(), "validateRedefinitionConsistent"); //$NON-NLS-1$
-
-		op = addEOperation(redefinableElementEClass, this.getBoolean(), "isConsistentWith"); //$NON-NLS-1$
-		addEParameter(op, this.getRedefinableElement(), "redefinee"); //$NON-NLS-1$
-
-		op = addEOperation(redefinableElementEClass, this.getBoolean(), "isRedefinitionContextValid"); //$NON-NLS-1$
-		addEParameter(op, this.getRedefinableElement(), "redefinable"); //$NON-NLS-1$
-
-		addEOperation(redefinableElementEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
-
 		initEClass(packageableElementEClass, PackageableElement.class, "PackageableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEAttribute(getPackageableElement_PackageableElement_visibility(), this.getVisibilityKind(), "packageableElement_visibility", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
@@ -10925,24 +10925,6 @@
 		op = addEOperation(extensionEndEClass, null, "setType"); //$NON-NLS-1$
 		addEParameter(op, this.getType(), "newType"); //$NON-NLS-1$
 
-		initEClass(associationClassEClass, AssociationClass.class, "AssociationClass", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(generalizationSetEClass, GeneralizationSet.class, "GeneralizationSet", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getGeneralizationSet_IsCovering(), this.getBoolean(), "isCovering", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEAttribute(getGeneralizationSet_IsDisjoint(), this.getBoolean(), "isDisjoint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getGeneralizationSet_Powertype(), this.getClassifier(), this.getClassifier_PowertypeExtent(), "powertype", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getGeneralizationSet_Generalization(), this.getGeneralization(), this.getGeneralization_GeneralizationSet(), "generalization", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(informationItemEClass, InformationItem.class, "InformationItem", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInformationItem_Represented(), this.getClassifier(), null, "represented", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(informationFlowEClass, InformationFlow.class, "InformationFlow", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInformationFlow_Realization(), this.getRelationship(), null, "realization", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInformationFlow_Conveyed(), this.getClassifier(), null, "conveyed", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getModel_Viewpoint(), this.getString(), "viewpoint", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-
 		initEClass(permissionEClass, Permission.class, "Permission", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
 		initEClass(dependencyEClass, Dependency.class, "Dependency", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
@@ -11024,6 +11006,142 @@
 
 		addEOperation(activityEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
+		initEClass(associationClassEClass, AssociationClass.class, "AssociationClass", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getModel_Viewpoint(), this.getString(), "viewpoint", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+
+		initEClass(informationItemEClass, InformationItem.class, "InformationItem", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInformationItem_Represented(), this.getClassifier(), null, "represented", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(informationFlowEClass, InformationFlow.class, "InformationFlow", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInformationFlow_Realization(), this.getRelationship(), null, "realization", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInformationFlow_Conveyed(), this.getClassifier(), null, "conveyed", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(generalizationSetEClass, GeneralizationSet.class, "GeneralizationSet", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getGeneralizationSet_IsCovering(), this.getBoolean(), "isCovering", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEAttribute(getGeneralizationSet_IsDisjoint(), this.getBoolean(), "isDisjoint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getGeneralizationSet_Powertype(), this.getClassifier(), this.getClassifier_PowertypeExtent(), "powertype", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getGeneralizationSet_Generalization(), this.getGeneralization(), this.getGeneralization_GeneralizationSet(), "generalization", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(connectorEndEClass, ConnectorEnd.class, "ConnectorEnd", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getConnectorEnd_DefiningEnd(), this.getProperty(), null, "definingEnd", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getConnectorEnd_Role(), this.getConnectableElement(), this.getConnectableElement_End(), "role", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getConnectorEnd_PartWithPort(), this.getProperty(), null, "partWithPort", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(connectableElementEClass, ConnectableElement.class, "ConnectableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getConnectableElement_End(), this.getConnectorEnd(), this.getConnectorEnd_Role(), "end", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(connectorEClass, Connector.class, "Connector", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getConnector_Type(), this.getAssociation(), null, "type", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getConnector_RedefinedConnector(), this.getConnector(), null, "redefinedConnector", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getConnector_End(), this.getConnectorEnd(), null, "end", null, 2, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEAttribute(getConnector_Kind(), this.getConnectorKind(), "kind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getConnector_Contract(), this.getBehavior(), null, "contract", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(connectorEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
+
+		addEOperation(connectorEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(structuredClassifierEClass, StructuredClassifier.class, "StructuredClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getStructuredClassifier_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getStructuredClassifier_Part(), this.getProperty(), null, "part", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getStructuredClassifier_Role(), this.getConnectableElement(), null, "role", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getStructuredClassifier_OwnedConnector(), this.getConnector(), null, "ownedConnector", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
+
+		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getMembers"); //$NON-NLS-1$
+
+		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
+
+		initEClass(interfaceEClass, Interface.class, "Interface", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInterface_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterface_OwnedOperation(), this.getOperation(), null, "ownedOperation", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterface_RedefinedInterface(), this.getInterface(), null, "redefinedInterface", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterface_NestedClassifier(), this.getClassifier(), null, "nestedClassifier", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterface_OwnedReception(), this.getReception(), null, "ownedReception", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterface_Protocol(), this.getProtocolStateMachine(), null, "protocol", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
+
+		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
+
+		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
+
+		initEClass(implementationEClass, Implementation.class, "Implementation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getImplementation_Contract(), this.getInterface(), null, "contract", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getImplementation_ImplementingClassifier(), this.getBehavioredClassifier(), this.getBehavioredClassifier_Implementation(), "implementingClassifier", null, 1, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(implementationEClass, ecorePackage.getEEList(), "getSuppliers"); //$NON-NLS-1$
+
+		addEOperation(implementationEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
+
+		addEOperation(implementationEClass, ecorePackage.getEEList(), "getClients"); //$NON-NLS-1$
+
+		addEOperation(implementationEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
+
+		initEClass(actorEClass, Actor.class, "Actor", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(extendEClass, Extend.class, "Extend", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getExtend_ExtendedCase(), this.getUseCase(), null, "extendedCase", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getExtend_Extension(), this.getUseCase(), this.getUseCase_Extend(), "extension", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getExtend_Condition(), this.getConstraint(), null, "condition", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getExtend_ExtensionLocation(), this.getExtensionPoint(), null, "extensionLocation", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(extendEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
+
+		addEOperation(extendEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
+
+		addEOperation(extendEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(useCaseEClass, UseCase.class, "UseCase", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getUseCase_Include(), this.getInclude(), this.getInclude_IncludingCase(), "include", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getUseCase_Extend(), this.getExtend(), this.getExtend_Extension(), "extend", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getUseCase_ExtensionPoint(), this.getExtensionPoint(), this.getExtensionPoint_UseCase(), "extensionPoint", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getUseCase_Subject(), this.getClassifier(), null, "subject", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(useCaseEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		initEClass(extensionPointEClass, ExtensionPoint.class, "ExtensionPoint", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getExtensionPoint_UseCase(), this.getUseCase(), this.getUseCase_ExtensionPoint(), "useCase", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(includeEClass, Include.class, "Include", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInclude_IncludingCase(), this.getUseCase(), this.getUseCase_Include(), "includingCase", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInclude_Addition(), this.getUseCase(), null, "addition", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(includeEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
+
+		addEOperation(includeEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
+
+		initEClass(artifactEClass, Artifact.class, "Artifact", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getArtifact_FileName(), this.getString(), "fileName", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEReference(getArtifact_NestedArtifact(), this.getArtifact(), null, "nestedArtifact", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getArtifact_Manifestation(), this.getManifestation(), null, "manifestation", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getArtifact_OwnedOperation(), this.getOperation(), null, "ownedOperation", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getArtifact_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(artifactEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		addEOperation(artifactEClass, ecorePackage.getEEList(), "getClientDependencies"); //$NON-NLS-1$
+
+		addEOperation(artifactEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
+
+		addEOperation(artifactEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		addEOperation(artifactEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
+
+		initEClass(manifestationEClass, Manifestation.class, "Manifestation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getManifestation_UtilizedElement(), this.getPackageableElement(), null, "utilizedElement", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(manifestationEClass, ecorePackage.getEEList(), "getSuppliers"); //$NON-NLS-1$
+
+		addEOperation(manifestationEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
+
 		initEClass(activityEdgeEClass, ActivityEdge.class, "ActivityEdge", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getActivityEdge_Activity(), this.getActivity(), this.getActivity_Edge(), "activity", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getActivityEdge_Source(), this.getActivityNode(), this.getActivityNode_Outgoing(), "source", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11127,124 +11245,6 @@
 		initEClass(valuePinEClass, ValuePin.class, "ValuePin", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getValuePin_Value(), this.getValueSpecification(), null, "value", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(interfaceEClass, Interface.class, "Interface", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInterface_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterface_OwnedOperation(), this.getOperation(), null, "ownedOperation", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterface_RedefinedInterface(), this.getInterface(), null, "redefinedInterface", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterface_NestedClassifier(), this.getClassifier(), null, "nestedClassifier", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterface_OwnedReception(), this.getReception(), null, "ownedReception", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterface_Protocol(), this.getProtocolStateMachine(), null, "protocol", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
-
-		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
-
-		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
-
-		addEOperation(interfaceEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
-
-		initEClass(implementationEClass, Implementation.class, "Implementation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getImplementation_Contract(), this.getInterface(), null, "contract", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getImplementation_ImplementingClassifier(), this.getBehavioredClassifier(), this.getBehavioredClassifier_Implementation(), "implementingClassifier", null, 1, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(implementationEClass, ecorePackage.getEEList(), "getSuppliers"); //$NON-NLS-1$
-
-		addEOperation(implementationEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
-
-		addEOperation(implementationEClass, ecorePackage.getEEList(), "getClients"); //$NON-NLS-1$
-
-		addEOperation(implementationEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
-
-		initEClass(actorEClass, Actor.class, "Actor", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(extendEClass, Extend.class, "Extend", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getExtend_ExtendedCase(), this.getUseCase(), null, "extendedCase", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getExtend_Extension(), this.getUseCase(), this.getUseCase_Extend(), "extension", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getExtend_Condition(), this.getConstraint(), null, "condition", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getExtend_ExtensionLocation(), this.getExtensionPoint(), null, "extensionLocation", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(extendEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
-
-		addEOperation(extendEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
-
-		addEOperation(extendEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(useCaseEClass, UseCase.class, "UseCase", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getUseCase_Include(), this.getInclude(), this.getInclude_IncludingCase(), "include", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getUseCase_Extend(), this.getExtend(), this.getExtend_Extension(), "extend", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getUseCase_ExtensionPoint(), this.getExtensionPoint(), this.getExtensionPoint_UseCase(), "extensionPoint", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getUseCase_Subject(), this.getClassifier(), null, "subject", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(useCaseEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
-
-		initEClass(extensionPointEClass, ExtensionPoint.class, "ExtensionPoint", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getExtensionPoint_UseCase(), this.getUseCase(), this.getUseCase_ExtensionPoint(), "useCase", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(includeEClass, Include.class, "Include", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInclude_IncludingCase(), this.getUseCase(), this.getUseCase_Include(), "includingCase", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInclude_Addition(), this.getUseCase(), null, "addition", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(includeEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
-
-		addEOperation(includeEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
-
-		initEClass(artifactEClass, Artifact.class, "Artifact", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getArtifact_FileName(), this.getString(), "fileName", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEReference(getArtifact_NestedArtifact(), this.getArtifact(), null, "nestedArtifact", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getArtifact_Manifestation(), this.getManifestation(), null, "manifestation", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getArtifact_OwnedOperation(), this.getOperation(), null, "ownedOperation", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getArtifact_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(artifactEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		addEOperation(artifactEClass, ecorePackage.getEEList(), "getClientDependencies"); //$NON-NLS-1$
-
-		addEOperation(artifactEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
-
-		addEOperation(artifactEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
-
-		addEOperation(artifactEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
-
-		initEClass(manifestationEClass, Manifestation.class, "Manifestation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getManifestation_UtilizedElement(), this.getPackageableElement(), null, "utilizedElement", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(manifestationEClass, ecorePackage.getEEList(), "getSuppliers"); //$NON-NLS-1$
-
-		addEOperation(manifestationEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
-
-		initEClass(connectorEndEClass, ConnectorEnd.class, "ConnectorEnd", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getConnectorEnd_DefiningEnd(), this.getProperty(), null, "definingEnd", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getConnectorEnd_Role(), this.getConnectableElement(), this.getConnectableElement_End(), "role", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getConnectorEnd_PartWithPort(), this.getProperty(), null, "partWithPort", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(connectableElementEClass, ConnectableElement.class, "ConnectableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getConnectableElement_End(), this.getConnectorEnd(), this.getConnectorEnd_Role(), "end", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(connectorEClass, Connector.class, "Connector", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getConnector_Type(), this.getAssociation(), null, "type", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getConnector_RedefinedConnector(), this.getConnector(), null, "redefinedConnector", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getConnector_End(), this.getConnectorEnd(), null, "end", null, 2, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEAttribute(getConnector_Kind(), this.getConnectorKind(), "kind", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getConnector_Contract(), this.getBehavior(), null, "contract", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(connectorEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
-
-		addEOperation(connectorEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(structuredClassifierEClass, StructuredClassifier.class, "StructuredClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getStructuredClassifier_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getStructuredClassifier_Part(), this.getProperty(), null, "part", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getStructuredClassifier_Role(), this.getConnectableElement(), null, "role", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getStructuredClassifier_OwnedConnector(), this.getConnector(), null, "ownedConnector", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
-
-		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
-
-		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getMembers"); //$NON-NLS-1$
-
-		addEOperation(structuredClassifierEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
-
 		initEClass(collaborationOccurrenceEClass, CollaborationOccurrence.class, "CollaborationOccurrence", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getCollaborationOccurrence_Type(), this.getCollaboration(), null, "type", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getCollaborationOccurrence_RoleBinding(), this.getDependency(), null, "roleBinding", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11256,86 +11256,6 @@
 
 		addEOperation(collaborationEClass, ecorePackage.getEEList(), "getRoles"); //$NON-NLS-1$
 
-		initEClass(templateSignatureEClass, TemplateSignature.class, "TemplateSignature", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTemplateSignature_Parameter(), this.getTemplateParameter(), null, "parameter", null, 1, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateSignature_OwnedParameter(), this.getTemplateParameter(), this.getTemplateParameter_Signature(), "ownedParameter", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateSignature_NestedSignature(), this.getTemplateSignature(), this.getTemplateSignature_NestingSignature(), "nestedSignature", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateSignature_NestingSignature(), this.getTemplateSignature(), this.getTemplateSignature_NestedSignature(), "nestingSignature", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateSignature_Template(), this.getTemplateableElement(), this.getTemplateableElement_OwnedTemplateSignature(), "template", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(templateSignatureEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		addEOperation(templateSignatureEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		initEClass(templateParameterEClass, TemplateParameter.class, "TemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTemplateParameter_Signature(), this.getTemplateSignature(), this.getTemplateSignature_OwnedParameter(), "signature", null, 1, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameter_ParameteredElement(), this.getParameterableElement(), this.getParameterableElement_TemplateParameter(), "parameteredElement", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameter_OwnedParameteredElement(), this.getParameterableElement(), this.getParameterableElement_OwningParameter(), "ownedParameteredElement", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameter_Default(), this.getParameterableElement(), null, "default", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameter_OwnedDefault(), this.getParameterableElement(), null, "ownedDefault", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(templateParameterEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		addEOperation(templateParameterEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(templateableElementEClass, TemplateableElement.class, "TemplateableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTemplateableElement_TemplateBinding(), this.getTemplateBinding(), this.getTemplateBinding_BoundElement(), "templateBinding", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateableElement_OwnedTemplateSignature(), this.getTemplateSignature(), this.getTemplateSignature_Template(), "ownedTemplateSignature", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(templateableElementEClass, this.getSet(), "parameterableElements"); //$NON-NLS-1$
-
-		addEOperation(templateableElementEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(stringExpressionEClass, StringExpression.class, "StringExpression", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getStringExpression_SubExpression(), this.getStringExpression(), this.getStringExpression_OwningExpression(), "subExpression", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getStringExpression_OwningExpression(), this.getStringExpression(), this.getStringExpression_SubExpression(), "owningExpression", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(stringExpressionEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		addEOperation(stringExpressionEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		initEClass(parameterableElementEClass, ParameterableElement.class, "ParameterableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getParameterableElement_TemplateParameter(), this.getTemplateParameter(), this.getTemplateParameter_ParameteredElement(), "templateParameter", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getParameterableElement_OwningParameter(), this.getTemplateParameter(), this.getTemplateParameter_OwnedParameteredElement(), "owningParameter", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(parameterableElementEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		initEClass(templateBindingEClass, TemplateBinding.class, "TemplateBinding", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTemplateBinding_BoundElement(), this.getTemplateableElement(), this.getTemplateableElement_TemplateBinding(), "boundElement", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateBinding_Signature(), this.getTemplateSignature(), null, "signature", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateBinding_ParameterSubstitution(), this.getTemplateParameterSubstitution(), this.getTemplateParameterSubstitution_TemplateBinding(), "parameterSubstitution", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(templateBindingEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
-
-		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
-
-		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(templateParameterSubstitutionEClass, TemplateParameterSubstitution.class, "TemplateParameterSubstitution", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTemplateParameterSubstitution_Formal(), this.getTemplateParameter(), null, "formal", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameterSubstitution_TemplateBinding(), this.getTemplateBinding(), this.getTemplateBinding_ParameterSubstitution(), "templateBinding", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameterSubstitution_Actual(), this.getParameterableElement(), null, "actual", null, 1, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTemplateParameterSubstitution_OwnedActual(), this.getParameterableElement(), null, "ownedActual", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(templateParameterSubstitutionEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
-
-		addEOperation(templateParameterSubstitutionEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(operationTemplateParameterEClass, OperationTemplateParameter.class, "OperationTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(classifierTemplateParameterEClass, ClassifierTemplateParameter.class, "ClassifierTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getClassifierTemplateParameter_AllowSubstitutable(), this.getBoolean(), "allowSubstitutable", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-
-		initEClass(parameterableClassifierEClass, ParameterableClassifier.class, "ParameterableClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(redefinableTemplateSignatureEClass, RedefinableTemplateSignature.class, "RedefinableTemplateSignature", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(templateableClassifierEClass, TemplateableClassifier.class, "TemplateableClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(connectableElementTemplateParameterEClass, ConnectableElementTemplateParameter.class, "ConnectableElementTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
 		initEClass(interactionEClass, Interaction.class, "Interaction", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getInteraction_Lifeline(), this.getLifeline(), this.getLifeline_Interaction(), "lifeline", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getInteraction_Message(), this.getMessage(), this.getMessage_Interaction(), "message", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11409,6 +11329,57 @@
 
 		initEClass(stopEClass, Stop.class, "Stop", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
+		initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getPort_IsBehavior(), this.getBoolean(), "isBehavior", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEAttribute(getPort_IsService(), this.getBoolean(), "isService", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEReference(getPort_Required(), this.getInterface(), null, "required", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getPort_RedefinedPort(), this.getPort(), null, "redefinedPort", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getPort_Provided(), this.getInterface(), null, "provided", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getPort_Protocol(), this.getProtocolStateMachine(), null, "protocol", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(portEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
+
+		initEClass(encapsulatedClassifierEClass, EncapsulatedClassifier.class, "EncapsulatedClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getEncapsulatedClassifier_OwnedPort(), this.getPort(), null, "ownedPort", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(encapsulatedClassifierEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
+
+		addEOperation(encapsulatedClassifierEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		initEClass(callTriggerEClass, CallTrigger.class, "CallTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getCallTrigger_Operation(), this.getOperation(), null, "operation", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(messageTriggerEClass, MessageTrigger.class, "MessageTrigger", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(changeTriggerEClass, ChangeTrigger.class, "ChangeTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getChangeTrigger_ChangeExpression(), this.getValueSpecification(), null, "changeExpression", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(changeTriggerEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(triggerEClass, Trigger.class, "Trigger", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTrigger_Port(), this.getPort(), null, "port", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(receptionEClass, Reception.class, "Reception", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getReception_Signal(), this.getSignal(), null, "signal", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(signalEClass, Signal.class, "Signal", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getSignal_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(signalEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
+
+		addEOperation(signalEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+
+		initEClass(signalTriggerEClass, SignalTrigger.class, "SignalTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getSignalTrigger_Signal(), this.getSignal(), null, "signal", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(timeTriggerEClass, TimeTrigger.class, "TimeTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getTimeTrigger_IsRelative(), this.getBoolean(), "isRelative", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTimeTrigger_When(), this.getValueSpecification(), null, "when", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(timeTriggerEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(anyTriggerEClass, AnyTrigger.class, "AnyTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
 		initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getVariable_Scope(), this.getStructuredActivityNode(), this.getStructuredActivityNode_Variable(), "scope", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
@@ -11467,89 +11438,85 @@
 
 		addEOperation(loopNodeEClass, ecorePackage.getEEList(), "getInputs"); //$NON-NLS-1$
 
-		initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getPort_IsBehavior(), this.getBoolean(), "isBehavior", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEAttribute(getPort_IsService(), this.getBoolean(), "isService", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEReference(getPort_Required(), this.getInterface(), null, "required", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getPort_RedefinedPort(), this.getPort(), null, "redefinedPort", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getPort_Provided(), this.getInterface(), null, "provided", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getPort_Protocol(), this.getProtocolStateMachine(), null, "protocol", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(templateSignatureEClass, TemplateSignature.class, "TemplateSignature", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTemplateSignature_Parameter(), this.getTemplateParameter(), null, "parameter", null, 1, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateSignature_OwnedParameter(), this.getTemplateParameter(), this.getTemplateParameter_Signature(), "ownedParameter", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateSignature_NestedSignature(), this.getTemplateSignature(), this.getTemplateSignature_NestingSignature(), "nestedSignature", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateSignature_NestingSignature(), this.getTemplateSignature(), this.getTemplateSignature_NestedSignature(), "nestingSignature", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateSignature_Template(), this.getTemplateableElement(), this.getTemplateableElement_OwnedTemplateSignature(), "template", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		addEOperation(portEClass, ecorePackage.getEEList(), "getRedefinedElements"); //$NON-NLS-1$
+		addEOperation(templateSignatureEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(encapsulatedClassifierEClass, EncapsulatedClassifier.class, "EncapsulatedClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getEncapsulatedClassifier_OwnedPort(), this.getPort(), null, "ownedPort", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(templateSignatureEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		addEOperation(encapsulatedClassifierEClass, ecorePackage.getEEList(), "getFeatures"); //$NON-NLS-1$
+		initEClass(templateParameterEClass, TemplateParameter.class, "TemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTemplateParameter_Signature(), this.getTemplateSignature(), this.getTemplateSignature_OwnedParameter(), "signature", null, 1, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameter_ParameteredElement(), this.getParameterableElement(), this.getParameterableElement_TemplateParameter(), "parameteredElement", null, 1, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameter_OwnedParameteredElement(), this.getParameterableElement(), this.getParameterableElement_OwningParameter(), "ownedParameteredElement", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameter_Default(), this.getParameterableElement(), null, "default", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameter_OwnedDefault(), this.getParameterableElement(), null, "ownedDefault", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		addEOperation(encapsulatedClassifierEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+		addEOperation(templateParameterEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		initEClass(callTriggerEClass, CallTrigger.class, "CallTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getCallTrigger_Operation(), this.getOperation(), null, "operation", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(templateParameterEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(messageTriggerEClass, MessageTrigger.class, "MessageTrigger", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEClass(templateableElementEClass, TemplateableElement.class, "TemplateableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTemplateableElement_TemplateBinding(), this.getTemplateBinding(), this.getTemplateBinding_BoundElement(), "templateBinding", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateableElement_OwnedTemplateSignature(), this.getTemplateSignature(), this.getTemplateSignature_Template(), "ownedTemplateSignature", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(changeTriggerEClass, ChangeTrigger.class, "ChangeTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getChangeTrigger_ChangeExpression(), this.getValueSpecification(), null, "changeExpression", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(templateableElementEClass, this.getSet(), "parameterableElements"); //$NON-NLS-1$
 
-		addEOperation(changeTriggerEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		addEOperation(templateableElementEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(triggerEClass, Trigger.class, "Trigger", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getTrigger_Port(), this.getPort(), null, "port", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(stringExpressionEClass, StringExpression.class, "StringExpression", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getStringExpression_SubExpression(), this.getStringExpression(), this.getStringExpression_OwningExpression(), "subExpression", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getStringExpression_OwningExpression(), this.getStringExpression(), this.getStringExpression_SubExpression(), "owningExpression", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(receptionEClass, Reception.class, "Reception", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getReception_Signal(), this.getSignal(), null, "signal", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(stringExpressionEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(signalEClass, Signal.class, "Signal", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getSignal_OwnedAttribute(), this.getProperty(), null, "ownedAttribute", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(stringExpressionEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		addEOperation(signalEClass, ecorePackage.getEEList(), "getAttributes"); //$NON-NLS-1$
+		initEClass(parameterableElementEClass, ParameterableElement.class, "ParameterableElement", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getParameterableElement_TemplateParameter(), this.getTemplateParameter(), this.getTemplateParameter_ParameteredElement(), "templateParameter", null, 0, 1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getParameterableElement_OwningParameter(), this.getTemplateParameter(), this.getTemplateParameter_OwnedParameteredElement(), "owningParameter", null, 0, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		addEOperation(signalEClass, ecorePackage.getEEList(), "getOwnedMembers"); //$NON-NLS-1$
+		addEOperation(parameterableElementEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		initEClass(signalTriggerEClass, SignalTrigger.class, "SignalTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getSignalTrigger_Signal(), this.getSignal(), null, "signal", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(templateBindingEClass, TemplateBinding.class, "TemplateBinding", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTemplateBinding_BoundElement(), this.getTemplateableElement(), this.getTemplateableElement_TemplateBinding(), "boundElement", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateBinding_Signature(), this.getTemplateSignature(), null, "signature", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateBinding_ParameterSubstitution(), this.getTemplateParameterSubstitution(), this.getTemplateParameterSubstitution_TemplateBinding(), "parameterSubstitution", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(timeTriggerEClass, TimeTrigger.class, "TimeTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getTimeTrigger_IsRelative(), this.getBoolean(), "isRelative", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getTimeTrigger_When(), this.getValueSpecification(), null, "when", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(templateBindingEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		addEOperation(timeTriggerEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getSources"); //$NON-NLS-1$
 
-		initEClass(anyTriggerEClass, AnyTrigger.class, "AnyTrigger", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getTargets"); //$NON-NLS-1$
 
-		initEClass(interactionOccurrenceEClass, InteractionOccurrence.class, "InteractionOccurrence", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInteractionOccurrence_RefersTo(), this.getInteraction(), null, "refersTo", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInteractionOccurrence_ActualGate(), this.getGate(), null, "actualGate", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInteractionOccurrence_Argument(), this.getInputPin(), null, "argument", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(templateBindingEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		addEOperation(interactionOccurrenceEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		initEClass(templateParameterSubstitutionEClass, TemplateParameterSubstitution.class, "TemplateParameterSubstitution", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getTemplateParameterSubstitution_Formal(), this.getTemplateParameter(), null, "formal", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameterSubstitution_TemplateBinding(), this.getTemplateBinding(), this.getTemplateBinding_ParameterSubstitution(), "templateBinding", null, 1, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameterSubstitution_Actual(), this.getParameterableElement(), null, "actual", null, 1, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getTemplateParameterSubstitution_OwnedActual(), this.getParameterableElement(), null, "ownedActual", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(gateEClass, Gate.class, "Gate", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		addEOperation(templateParameterSubstitutionEClass, this.getElement(), "getOwner"); //$NON-NLS-1$
 
-		initEClass(partDecompositionEClass, PartDecomposition.class, "PartDecomposition", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		addEOperation(templateParameterSubstitutionEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		initEClass(interactionOperandEClass, InteractionOperand.class, "InteractionOperand", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInteractionOperand_Guard(), this.getInteractionConstraint(), null, "guard", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInteractionOperand_Fragment(), this.getInteractionFragment(), this.getInteractionFragment_EnclosingOperand(), "fragment", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(operationTemplateParameterEClass, OperationTemplateParameter.class, "OperationTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		addEOperation(interactionOperandEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		initEClass(classifierTemplateParameterEClass, ClassifierTemplateParameter.class, "ClassifierTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getClassifierTemplateParameter_AllowSubstitutable(), this.getBoolean(), "allowSubstitutable", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
 
-		initEClass(interactionConstraintEClass, InteractionConstraint.class, "InteractionConstraint", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInteractionConstraint_Minint(), this.getValueSpecification(), null, "minint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInteractionConstraint_Maxint(), this.getValueSpecification(), null, "maxint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(parameterableClassifierEClass, ParameterableClassifier.class, "ParameterableClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		addEOperation(interactionConstraintEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		initEClass(redefinableTemplateSignatureEClass, RedefinableTemplateSignature.class, "RedefinableTemplateSignature", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		initEClass(combinedFragmentEClass, CombinedFragment.class, "CombinedFragment", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getCombinedFragment_InteractionOperator(), this.getInteractionOperator(), "interactionOperator", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getCombinedFragment_Operand(), this.getInteractionOperand(), null, "operand", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getCombinedFragment_CfragmentGate(), this.getGate(), null, "cfragmentGate", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEClass(templateableClassifierEClass, TemplateableClassifier.class, "TemplateableClassifier", IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		addEOperation(combinedFragmentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		initEClass(continuationEClass, Continuation.class, "Continuation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getContinuation_Setting(), this.getBoolean(), "setting", "True", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEClass(connectableElementTemplateParameterEClass, ConnectableElementTemplateParameter.class, "ConnectableElementTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
 		initEClass(stateMachineEClass, StateMachine.class, "StateMachine", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getStateMachine_Region(), this.getRegion(), null, "region", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11629,6 +11596,29 @@
 
 		initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
+		initEClass(forkNodeEClass, ForkNode.class, "ForkNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(joinNodeEClass, JoinNode.class, "JoinNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getJoinNode_IsCombineDuplicate(), this.getBoolean(), "isCombineDuplicate", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEReference(getJoinNode_JoinSpec(), this.getValueSpecification(), null, "joinSpec", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(joinNodeEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(flowFinalNodeEClass, FlowFinalNode.class, "FlowFinalNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(centralBufferNodeEClass, CentralBufferNode.class, "CentralBufferNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(activityPartitionEClass, ActivityPartition.class, "ActivityPartition", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getActivityPartition_IsDimension(), this.getBoolean(), "isDimension", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEAttribute(getActivityPartition_IsExternal(), this.getBoolean(), "isExternal", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
+		initEReference(getActivityPartition_ContainedEdge(), this.getActivityEdge(), this.getActivityEdge_InPartition(), "containedEdge", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getActivityPartition_ContainedNode(), this.getActivityNode(), this.getActivityNode_InPartition(), "containedNode", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getActivityPartition_Subgroup(), this.getActivityPartition(), this.getActivityPartition_SuperPartition(), "subgroup", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getActivityPartition_SuperPartition(), this.getActivityPartition(), this.getActivityPartition_Subgroup(), "superPartition", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getActivityPartition_Represents(), this.getElement(), null, "represents", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(activityPartitionEClass, this.getActivityGroup(), "getSuperGroup"); //$NON-NLS-1$
+
 		initEClass(createObjectActionEClass, CreateObjectAction.class, "CreateObjectAction", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getCreateObjectAction_Classifier(), this.getClassifier(), null, "classifier", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getCreateObjectAction_Result(), this.getOutputPin(), null, "result", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11787,28 +11777,38 @@
 		initEClass(callBehaviorActionEClass, CallBehaviorAction.class, "CallBehaviorAction", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getCallBehaviorAction_Behavior(), this.getBehavior(), null, "behavior", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(forkNodeEClass, ForkNode.class, "ForkNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEClass(interactionOccurrenceEClass, InteractionOccurrence.class, "InteractionOccurrence", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInteractionOccurrence_RefersTo(), this.getInteraction(), null, "refersTo", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInteractionOccurrence_ActualGate(), this.getGate(), null, "actualGate", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInteractionOccurrence_Argument(), this.getInputPin(), null, "argument", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(joinNodeEClass, JoinNode.class, "JoinNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getJoinNode_IsCombineDuplicate(), this.getBoolean(), "isCombineDuplicate", "true", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEReference(getJoinNode_JoinSpec(), this.getValueSpecification(), null, "joinSpec", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(interactionOccurrenceEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		addEOperation(joinNodeEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+		initEClass(gateEClass, Gate.class, "Gate", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		initEClass(flowFinalNodeEClass, FlowFinalNode.class, "FlowFinalNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEClass(partDecompositionEClass, PartDecomposition.class, "PartDecomposition", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
-		initEClass(centralBufferNodeEClass, CentralBufferNode.class, "CentralBufferNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEClass(interactionOperandEClass, InteractionOperand.class, "InteractionOperand", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInteractionOperand_Guard(), this.getInteractionConstraint(), null, "guard", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInteractionOperand_Fragment(), this.getInteractionFragment(), this.getInteractionFragment_EnclosingOperand(), "fragment", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 
-		initEClass(activityPartitionEClass, ActivityPartition.class, "ActivityPartition", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getActivityPartition_IsDimension(), this.getBoolean(), "isDimension", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEAttribute(getActivityPartition_IsExternal(), this.getBoolean(), "isExternal", "false", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
-		initEReference(getActivityPartition_ContainedEdge(), this.getActivityEdge(), this.getActivityEdge_InPartition(), "containedEdge", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getActivityPartition_ContainedNode(), this.getActivityNode(), this.getActivityNode_InPartition(), "containedNode", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getActivityPartition_Subgroup(), this.getActivityPartition(), this.getActivityPartition_SuperPartition(), "subgroup", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getActivityPartition_SuperPartition(), this.getActivityPartition(), this.getActivityPartition_Subgroup(), "superPartition", null, 0, 1, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getActivityPartition_Represents(), this.getElement(), null, "represents", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		addEOperation(interactionOperandEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
 
-		addEOperation(activityPartitionEClass, this.getActivityGroup(), "getSuperGroup"); //$NON-NLS-1$
+		initEClass(interactionConstraintEClass, InteractionConstraint.class, "InteractionConstraint", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInteractionConstraint_Minint(), this.getValueSpecification(), null, "minint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInteractionConstraint_Maxint(), this.getValueSpecification(), null, "maxint", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(interactionConstraintEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(combinedFragmentEClass, CombinedFragment.class, "CombinedFragment", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getCombinedFragment_InteractionOperator(), this.getInteractionOperator(), "interactionOperator", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getCombinedFragment_Operand(), this.getInteractionOperand(), null, "operand", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getCombinedFragment_CfragmentGate(), this.getGate(), null, "cfragmentGate", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(combinedFragmentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		initEClass(continuationEClass, Continuation.class, "Continuation", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getContinuation_Setting(), this.getBoolean(), "setting", "True", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
 
 		initEClass(expansionNodeEClass, ExpansionNode.class, "ExpansionNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getExpansionNode_RegionAsOutput(), this.getExpansionRegion(), this.getExpansionRegion_OutputElement(), "regionAsOutput", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11852,6 +11852,17 @@
 		op = addEOperation(protocolTransitionEClass, null, "setGuard"); //$NON-NLS-1$
 		addEParameter(op, this.getConstraint(), "newGuard"); //$NON-NLS-1$
 
+		initEClass(componentEClass, Component.class, "Component", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEAttribute(getComponent_IsIndirectlyInstantiated(), this.getBoolean(), "isIndirectlyInstantiated", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getComponent_Required(), this.getInterface(), null, "required", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getComponent_Provided(), this.getInterface(), null, "provided", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
+		initEReference(getComponent_Realization(), this.getRealization(), this.getRealization_Abstraction(), "realization", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getComponent_OwnedMember(), this.getPackageableElement(), null, "ownedMember", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(componentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
+		addEOperation(componentEClass, ecorePackage.getEEList(), "getClientDependencies"); //$NON-NLS-1$
+
 		initEClass(timeExpressionEClass, TimeExpression.class, "TimeExpression", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEAttribute(getTimeExpression_FirstTime(), this.getBoolean(), "firstTime", "True", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
 		initEReference(getTimeExpression_Event(), this.getNamedElement(), null, "event", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -11913,18 +11924,6 @@
 		op = addEOperation(durationConstraintEClass, null, "setSpecification"); //$NON-NLS-1$
 		addEParameter(op, this.getValueSpecification(), "newSpecification"); //$NON-NLS-1$
 
-		initEClass(dataStoreNodeEClass, DataStoreNode.class, "DataStoreNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-
-		initEClass(interruptibleActivityRegionEClass, InterruptibleActivityRegion.class, "InterruptibleActivityRegion", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getInterruptibleActivityRegion_InterruptingEdge(), this.getActivityEdge(), this.getActivityEdge_Interrupts(), "interruptingEdge", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getInterruptibleActivityRegion_ContainedNode(), this.getActivityNode(), this.getActivityNode_InInterruptibleRegion(), "containedNode", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		initEClass(parameterSetEClass, ParameterSet.class, "ParameterSet", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEReference(getParameterSet_Parameter(), this.getParameter(), this.getParameter_ParameterSet(), "parameter", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getParameterSet_Condition(), this.getConstraint(), null, "condition", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(parameterSetEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
 		initEClass(readExtentActionEClass, ReadExtentAction.class, "ReadExtentAction", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getReadExtentAction_Result(), this.getOutputPin(), null, "result", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getReadExtentAction_Classifier(), this.getClassifier(), null, "classifier", null, 1, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -12008,17 +12007,6 @@
 
 		addEOperation(raiseExceptionActionEClass, ecorePackage.getEEList(), "getInputs"); //$NON-NLS-1$
 
-		initEClass(componentEClass, Component.class, "Component", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
-		initEAttribute(getComponent_IsIndirectlyInstantiated(), this.getBoolean(), "isIndirectlyInstantiated", null, 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getComponent_Required(), this.getInterface(), null, "required", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getComponent_Provided(), this.getInterface(), null, "provided", null, 0, -1, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED); //$NON-NLS-1$
-		initEReference(getComponent_Realization(), this.getRealization(), this.getRealization_Abstraction(), "realization", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-		initEReference(getComponent_OwnedMember(), this.getPackageableElement(), null, "ownedMember", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
-
-		addEOperation(componentEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
-
-		addEOperation(componentEClass, ecorePackage.getEEList(), "getClientDependencies"); //$NON-NLS-1$
-
 		initEClass(deploymentEClass, Deployment.class, "Deployment", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEReference(getDeployment_DeployedArtifact(), this.getDeployedArtifact(), null, "deployedArtifact", null, 0, -1, !IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
 		initEReference(getDeployment_Location(), this.getDeploymentTarget(), this.getDeploymentTarget_Deployment(), "location", null, 1, 1, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
@@ -12055,6 +12043,18 @@
 
 		initEClass(communicationPathEClass, CommunicationPath.class, "CommunicationPath", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 
+		initEClass(dataStoreNodeEClass, DataStoreNode.class, "DataStoreNode", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+
+		initEClass(interruptibleActivityRegionEClass, InterruptibleActivityRegion.class, "InterruptibleActivityRegion", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getInterruptibleActivityRegion_InterruptingEdge(), this.getActivityEdge(), this.getActivityEdge_Interrupts(), "interruptingEdge", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getInterruptibleActivityRegion_ContainedNode(), this.getActivityNode(), this.getActivityNode_InInterruptibleRegion(), "containedNode", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		initEClass(parameterSetEClass, ParameterSet.class, "ParameterSet", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
+		initEReference(getParameterSet_Parameter(), this.getParameter(), this.getParameter_ParameterSet(), "parameter", null, 1, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+		initEReference(getParameterSet_Condition(), this.getConstraint(), null, "condition", null, 0, -1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$
+
+		addEOperation(parameterSetEClass, ecorePackage.getEEList(), "getOwnedElements"); //$NON-NLS-1$
+
 		initEClass(deploymentSpecificationEClass, DeploymentSpecification.class, "DeploymentSpecification", !IS_ABSTRACT, !IS_INTERFACE); //$NON-NLS-1$
 		initEAttribute(getDeploymentSpecification_DeploymentLocation(), this.getString(), "deploymentLocation", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
 		initEAttribute(getDeploymentSpecification_ExecutionLocation(), this.getString(), "executionLocation", "", 0, 1, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED); //$NON-NLS-1$ //$NON-NLS-2$
@@ -12094,20 +12094,6 @@
 		addEEnumLiteral(callConcurrencyKindEEnum, CallConcurrencyKind.GUARDED_LITERAL);
 		addEEnumLiteral(callConcurrencyKindEEnum, CallConcurrencyKind.CONCURRENT_LITERAL);
 
-		initEEnum(interactionOperatorEEnum, InteractionOperator.class, "InteractionOperator"); //$NON-NLS-1$
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.SEQ_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.ALT_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.OPT_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.BREAK_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.PAR_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.STRICT_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.LOOP_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.CRITICAL_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.NEG_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.ASSERT_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.IGNORE_LITERAL);
-		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.CONSIDER_LITERAL);
-
 		initEEnum(transitionKindEEnum, TransitionKind.class, "TransitionKind"); //$NON-NLS-1$
 		addEEnumLiteral(transitionKindEEnum, TransitionKind.INTERNAL_LITERAL);
 		addEEnumLiteral(transitionKindEEnum, TransitionKind.LOCAL_LITERAL);
@@ -12125,11 +12111,29 @@
 		addEEnumLiteral(pseudostateKindEEnum, PseudostateKind.EXIT_POINT_LITERAL);
 		addEEnumLiteral(pseudostateKindEEnum, PseudostateKind.TERMINATE_LITERAL);
 
+		initEEnum(interactionOperatorEEnum, InteractionOperator.class, "InteractionOperator"); //$NON-NLS-1$
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.SEQ_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.ALT_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.OPT_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.BREAK_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.PAR_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.STRICT_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.LOOP_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.CRITICAL_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.NEG_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.ASSERT_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.IGNORE_LITERAL);
+		addEEnumLiteral(interactionOperatorEEnum, InteractionOperator.CONSIDER_LITERAL);
+
 		initEEnum(expansionKindEEnum, ExpansionKind.class, "ExpansionKind"); //$NON-NLS-1$
 		addEEnumLiteral(expansionKindEEnum, ExpansionKind.PARALLEL_LITERAL);
 		addEEnumLiteral(expansionKindEEnum, ExpansionKind.ITERATIVE_LITERAL);
 		addEEnumLiteral(expansionKindEEnum, ExpansionKind.STREAM_LITERAL);
 
+		initEEnum(connectorKindEEnum, ConnectorKind.class, "ConnectorKind"); //$NON-NLS-1$
+		addEEnumLiteral(connectorKindEEnum, ConnectorKind.ASSEMBLY_LITERAL);
+		addEEnumLiteral(connectorKindEEnum, ConnectorKind.DELEGATION_LITERAL);
+
 		initEEnum(parameterEffectKindEEnum, ParameterEffectKind.class, "ParameterEffectKind"); //$NON-NLS-1$
 		addEEnumLiteral(parameterEffectKindEEnum, ParameterEffectKind.CREATE_LITERAL);
 		addEEnumLiteral(parameterEffectKindEEnum, ParameterEffectKind.READ_LITERAL);
@@ -12142,10 +12146,6 @@
 		addEEnumLiteral(objectNodeOrderingKindEEnum, ObjectNodeOrderingKind.LIFO_LITERAL);
 		addEEnumLiteral(objectNodeOrderingKindEEnum, ObjectNodeOrderingKind.FIFO_LITERAL);
 
-		initEEnum(connectorKindEEnum, ConnectorKind.class, "ConnectorKind"); //$NON-NLS-1$
-		addEEnumLiteral(connectorKindEEnum, ConnectorKind.ASSEMBLY_LITERAL);
-		addEEnumLiteral(connectorKindEEnum, ConnectorKind.DELEGATION_LITERAL);
-
 		// Initialize data types
 		initEDataType(integerEDataType, int.class, "Integer", IS_SERIALIZABLE); //$NON-NLS-1$
 		initEDataType(booleanEDataType, boolean.class, "Boolean", IS_SERIALIZABLE); //$NON-NLS-1$
@@ -12297,6 +12297,104 @@
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nupperBound()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
 		   });						
 		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nself.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()\r\n\timplies self.qualifiedName->isEmpty()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\n(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies\r\nself.qualifiedName =\r\n self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |\r\n\t\tns.name->union(self.separator())->union(result))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"allNamespaces\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));\r\n\t}\r\n\treturn (List) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);\r\n}", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.namespace->isEmpty()\r\nthen Sequence{}\r\nelse self.namespace.allNamespaces()->prepend(self.namespace)\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(3), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)\r\nthen ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()\r\nelse true\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\n\'::\'\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(5), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()\r\nthen \r\n    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))\r\nelse\r\n    Set{}\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(6), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nnamespace->isEmpty() implies visibility->isEmpty()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });											
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nmembersAreDistinguishable()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.ownedMember->includes(element)\r\nthen Set{}->include(element.name)\r\nelse let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in\r\n    if elementImports->notEmpty()\r\n    then elementImports->collect(el | el.getName())\r\n    else \r\n        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))\r\n    endif\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.member->forAll( memb |\r\n\tself.member->excluding(memb)->forAll(other |\r\n\t\tmemb.isDistinguishableFrom(other, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(3), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nself.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"importedMember\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));\r\n\t}\r\n\treturn (Set) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);\r\n}", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(5), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(6), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nimps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });																						
+		addAnnotation
 		  ((EOperation)valueSpecificationEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -12337,7 +12435,7 @@
 		   new String[] {
 			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.ValueSpecificationOperations.isNull(this);", //$NON-NLS-1$ //$NON-NLS-2$
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nfalse\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
+		   });					
 		addAnnotation
 		  ((EOperation)classEClass.getEOperations().get(0), 
 		   source, 
@@ -12479,55 +12577,6 @@
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\n(redefinee.oclIsKindOf(Operation) and\r\n    let op: Operation = redefinee.oclAsType(Operation) in\r\n        self.formalParameter.size() = op.formalParameter.size() and\r\n        self.returnResult.size() = op.returnResult.size() and\r\n        forAll(i | op.formalParameter[i].type.conformsTo(self.formalParameter[i].type)) and\r\n        forAll(i | op.returnResult[i].type.conformsTo(self.returnResult[i].type))\r\n)\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
 		   });																																								
 		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateNoName(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nself.name->isEmpty() or self.allNamespaces()->select(ns | ns.name->isEmpty())->notEmpty()\r\n\timplies self.qualifiedName->isEmpty()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateQualifiedName(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\n(self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()) implies\r\nself.qualifiedName =\r\n self.allNamespaces()->iterate( ns : Namespace; result: String = self.name |\r\n\t\tns.name->union(self.separator())->union(result))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"allNamespaces\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableList(org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this)));\r\n\t}\r\n\treturn (List) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.NamedElementOperations.allNamespaces(this);\r\n}", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.namespace->isEmpty()\r\nthen Sequence{}\r\nelse self.namespace.allNamespaces()->prepend(self.namespace)\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(3), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.isDistinguishableFrom(this, n, ns);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.oclIsKindOf(n.oclType) or n.oclIsKindOf(self.oclType)\r\nthen ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()\r\nelse true\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.separator(this);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\n\'::\'\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(5), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.qualifiedName(this);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.name->notEmpty() and self.allNamespaces()->select(ns | ns.name->isEmpty())->isEmpty()\r\nthen \r\n    self.allNamespaces()->iterate( ns : Namespace; result: String = self.name | ns.name->union(self.separator())->union(result))\r\nelse\r\n    Set{}\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(6), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamedElementOperations.validateVisibilityNeedsOwnership(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nnamespace->isEmpty() implies visibility->isEmpty()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });											
-		addAnnotation
 		  ((EOperation)packageEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -12563,55 +12612,6 @@
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\ninhs->excluding(inh |\r\n\townedMember->select(oclIsKindOf(RedefinableElement))->select(redefinedElement->includes(inh)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
 		   });													
 		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.validateMembersAreDistinguishable(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nmembersAreDistinguishable()\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.getNamesOfMember(this, element);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif self.ownedMember->includes(element)\r\nthen Set{}->include(element.name)\r\nelse let elementImports: ElementImport = self.elementImport->select(ei | ei.importedElement = element) in\r\n    if elementImports->notEmpty()\r\n    then elementImports->collect(el | el.getName())\r\n    else \r\n        self.packageImport->select(pi | pi.importedPackage.visibleMembers()->includes(element))->collect(pi | pi.importedPackage.getNamesOfMember(element))\r\n    endif\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.membersAreDistinguishable(this);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.member->forAll( memb |\r\n\tself.member->excluding(memb)->forAll(other |\r\n\t\tmemb.isDistinguishableFrom(other, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(3), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.validateImportedMemberDerived(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nself.importedMember->includesAll(self.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers()))))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"importedMember\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this)));\r\n\t}\r\n\treturn (Set) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.NamespaceOperations.importedMember(this);\r\n}", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.importedMembers(self.elementImport.importedElement.asSet()->union(self.packageImport.importedPackage->collect(p | p.visibleMembers())))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(5), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.importMembers(this, imps);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | mem.imp.isDistinguishableFrom(mem, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(6), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.NamespaceOperations.excludeCollisions(this, imps);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nimps->reject(imp1 | imps.exists(imp2 | not imp1.isDistinguishableFrom(imp2, self)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																			
-		addAnnotation
 		  ((EOperation)constraintEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -12794,20 +12794,6 @@
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nif n.oclIsKindOf(BehavioralFeature)\r\nthen\r\n    if ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()\r\n    then Set{}->include(self)->include(n)->isUnique( bf | bf.parameter->collect(type))\r\n    else true\r\n    endif\r\nelse true\r\nendif\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
 		   });																		
 		addAnnotation
-		  ((EOperation)instanceSpecificationEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateSlotsAreDefined(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nslot->forAll(s |\r\n  classifier->exists(c | c.allFeatures()->includes(s.definingFeature))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)instanceSpecificationEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateNoDuplicateSlots(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
-			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nclassifier->forAll(c |\r\n\t(c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() <= 1)\r\n\t)\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });													
-		addAnnotation
 		  ((EOperation)redefinableElementEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -12834,7 +12820,21 @@
 		   new String[] {
 			 "body", "// TODO: test this OCL operation\r\nreturn org.eclipse.uml2.internal.operation.RedefinableElementOperations.isRedefinitionContextValid(this, redefinable);", //$NON-NLS-1$ //$NON-NLS-2$
 			 "documentation", "A query based on the following OCL expression:\r\n<code>\r\nself.redefinitionContext->exists(c | redefinable.redefinitionContext->exists(r | c.allParents()->includes(r)))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
+		   });					
+		addAnnotation
+		  ((EOperation)instanceSpecificationEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateSlotsAreDefined(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nslot->forAll(s |\r\n  classifier->exists(c | c.allFeatures()->includes(s.definingFeature))\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)instanceSpecificationEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.InstanceSpecificationOperations.validateNoDuplicateSlots(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
+			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nclassifier->forAll(c |\r\n\t(c.allFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() <= 1)\r\n\t)\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
+		   });																		
 		addAnnotation
 		  ((EOperation)elementImportEClass.getEOperations().get(0), 
 		   source, 
@@ -12862,13 +12862,7 @@
 		   new String[] {
 			 "body", "// TODO: test this OCL constraint\r\nreturn org.eclipse.uml2.internal.operation.PackageImportOperations.validatePublicOrPrivate(this, diagnostics, context);", //$NON-NLS-1$ //$NON-NLS-2$
 			 "documentation", "An invariant constraint based on the following OCL expression:\r\n<code>\r\nself.visibility = #public or self.visibility = #private\r\n</code>" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																																																																																																																																																																																																																	
-		addAnnotation
-		  ((EOperation)templateableElementEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"parameterableElements\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this)));\r\n\t}\r\n\treturn (Set) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this);\r\n}" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		   });																																		
+		   });																																																																																																																																																																																																																																																	
 		addAnnotation
 		  (interactionEClass, 
 		   source, 
@@ -12886,7 +12880,13 @@
 		   source, 
 		   new String[] {
 			 "documentation", "A Lifelineis the concept behind a lifeline in a Sequence \r\nDiagram. A Participant may be a Part or it may be a parameter representing a part. Its qualification is a Classifier which in turn may be an Interface (or ClassifierRole?)" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																							
+		   });																																																																																							
+		addAnnotation
+		  ((EOperation)templateableElementEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "body", "// TODO: test this OCL operation\r\ntry {\r\n\tjava.lang.reflect.Method method = getClass().getMethod(\"parameterableElements\", new Class[] {}); //$NON-NLS-1$\r\n\tif (!getCacheAdapter().containsKey(this, method)) {\r\n\t\tgetCacheAdapter().put(this,\r\n\t\t\tmethod,\r\n\t\t\tjava.util.Collections.unmodifiableSet(org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this)));\r\n\t}\r\n\treturn (Set) getCacheAdapter().get(this, method);\r\n} catch (Exception e) {\r\n\treturn org.eclipse.uml2.internal.operation.TemplateableElementOperations.parameterableElements(this);\r\n}" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		   });																																																																																																																																																																
 		addAnnotation
 		  (interactionOccurrenceEClass, 
 		   source, 
@@ -12916,7 +12916,7 @@
 		   source, 
 		   new String[] {
 			 "documentation", "An interaction fragment that decomposes into a set of other interaction fragments under some operator.\r\nIn principle the whole sequence diagram is an combined interaction. Syntactically, however, we will have special notation for combineations such that operands may be easily distinguished.\r\nCombined interactions consist of operands and an implicit or explicit operator" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																																																																																																																																																																																																																					
+		   });																																																																																																																																							
 	}
 
 	/**
@@ -12961,7 +12961,32 @@
 		  ((EOperation)multiplicityElementEClass.getEOperations().get(9), 
 		   source, 
 		   new String[] {
-		   });																																													
+		   });									
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });							
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(6), 
+		   source, 
+		   new String[] {
+		   });											
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });					
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(3), 
+		   source, 
+		   new String[] {
+		   });																																																											
 		addAnnotation
 		  ((EOperation)propertyEClass.getEOperations().get(0), 
 		   source, 
@@ -13008,36 +13033,11 @@
 		   new String[] {
 		   });																																										
 		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(6), 
-		   source, 
-		   new String[] {
-		   });											
-		addAnnotation
 		  ((EOperation)packageEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });																																		
 		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });					
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(3), 
-		   source, 
-		   new String[] {
-		   });																							
-		addAnnotation
 		  ((EOperation)constraintEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -13063,16 +13063,6 @@
 		   new String[] {
 		   });																																												
 		addAnnotation
-		  ((EOperation)instanceSpecificationEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)instanceSpecificationEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });													
-		addAnnotation
 		  ((EOperation)redefinableElementEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -13081,7 +13071,17 @@
 		  ((EOperation)redefinableElementEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });													
+		   });								
+		addAnnotation
+		  ((EOperation)instanceSpecificationEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)instanceSpecificationEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });																		
 		addAnnotation
 		  ((EOperation)elementImportEClass.getEOperations().get(0), 
 		   source, 
@@ -13121,14 +13121,64 @@
 		  ((EOperation)multiplicityElementEClass.getEOperations().get(12), 
 		   source, 
 		   new String[] {
-		   });											
+		   });																
 		addAnnotation
-		  ((EOperation)expressionEClass.getEOperations().get(0), 
+		  ((EOperation)namedElementEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(8), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(9), 
+		   source, 
+		   new String[] {
+		   });														
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(8), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getNamespace_Member(), 
+		   source, 
+		   new String[] {
+		   });							
+		addAnnotation
+		  ((EOperation)commentEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });				
 		addAnnotation
-		  ((EOperation)commentEClass.getEOperations().get(0), 
+		  ((EOperation)directedRelationshipEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getDirectedRelationship_Source(), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  (getDirectedRelationship_Target(), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  (getRelationship_RelatedElement(), 
+		   source, 
+		   new String[] {
+		   });									
+		addAnnotation
+		  ((EOperation)expressionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });														
@@ -13211,22 +13261,7 @@
 		  ((EOperation)parameterEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });																
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(8), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(9), 
-		   source, 
-		   new String[] {
-		   });									
+		   });										
 		addAnnotation
 		  ((EOperation)packageEClass.getEOperations().get(4), 
 		   source, 
@@ -13261,42 +13296,7 @@
 		  ((EOperation)enumerationLiteralEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });														
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(8), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getNamespace_Member(), 
-		   source, 
-		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)directedRelationshipEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getDirectedRelationship_Source(), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  (getDirectedRelationship_Target(), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  (getRelationship_RelatedElement(), 
-		   source, 
-		   new String[] {
-		   });					
+		   });						
 		addAnnotation
 		  ((EOperation)constraintEClass.getEOperations().get(1), 
 		   source, 
@@ -13371,7 +13371,17 @@
 		  ((EOperation)generalizationEClass.getEOperations().get(2), 
 		   source, 
 		   new String[] {
-		   });									
+		   });											
+		addAnnotation
+		  ((EOperation)redefinableElementEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getRedefinableElement_RedefinitionContext(), 
+		   source, 
+		   new String[] {
+		   });							
 		addAnnotation
 		  ((EOperation)instanceSpecificationEClass.getEOperations().get(2), 
 		   source, 
@@ -13386,17 +13396,7 @@
 		  ((EOperation)slotEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });											
-		addAnnotation
-		  ((EOperation)redefinableElementEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getRedefinableElement_RedefinitionContext(), 
-		   source, 
-		   new String[] {
-		   });													
+		   });															
 		addAnnotation
 		  ((EOperation)elementImportEClass.getEOperations().get(3), 
 		   source, 
@@ -13518,75 +13518,40 @@
 		   new String[] {
 		   });										
 		addAnnotation
-		  ((EOperation)activityEdgeEClass.getEOperations().get(0), 
+		  ((EOperation)connectorEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)activityEdgeEClass.getEOperations().get(1), 
+		  ((EOperation)connectorEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });					
+		addAnnotation
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  (getActivityEdge_InGroup(), 
-		   source, 
-		   new String[] {
-		   });										
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });									
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(5), 
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(6), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getActivityGroup_SuperGroup(), 
-		   source, 
-		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)activityNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getActivityNode_InGroup(), 
-		   source, 
-		   new String[] {
-		   });									
-		addAnnotation
-		  ((EOperation)actionEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });		
-		addAnnotation
-		  (getAction_Output(), 
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(2), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  (getAction_Input(), 
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(3), 
 		   source, 
 		   new String[] {
-		   });						
+		   });			
 		addAnnotation
-		  ((EOperation)objectNodeEClass.getEOperations().get(0), 
+		  (getStructuredClassifier_Role(), 
 		   source, 
 		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)executableNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });				
+		   });					
 		addAnnotation
 		  ((EOperation)interfaceEClass.getEOperations().get(0), 
 		   source, 
@@ -13673,40 +13638,75 @@
 		   new String[] {
 		   });				
 		addAnnotation
-		  ((EOperation)connectorEClass.getEOperations().get(0), 
+		  ((EOperation)activityEdgeEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)connectorEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });					
-		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(0), 
+		  ((EOperation)activityEdgeEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(1), 
+		  (getActivityEdge_InGroup(), 
+		   source, 
+		   new String[] {
+		   });										
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });									
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(5), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(2), 
+		  ((EOperation)activityGroupEClass.getEOperations().get(6), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getActivityGroup_SuperGroup(), 
+		   source, 
+		   new String[] {
+		   });							
+		addAnnotation
+		  ((EOperation)activityNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getActivityNode_InGroup(), 
+		   source, 
+		   new String[] {
+		   });									
+		addAnnotation
+		  ((EOperation)actionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });		
+		addAnnotation
+		  (getAction_Output(), 
 		   source, 
 		   new String[] {
 		   });			
 		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(3), 
+		  (getAction_Input(), 
 		   source, 
 		   new String[] {
-		   });			
+		   });						
 		addAnnotation
-		  (getStructuredClassifier_Role(), 
+		  ((EOperation)objectNodeEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });					
+		   });				
+		addAnnotation
+		  ((EOperation)executableNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
 		addAnnotation
 		  ((EOperation)collaborationOccurrenceEClass.getEOperations().get(0), 
 		   source, 
@@ -13716,8 +13716,118 @@
 		  ((EOperation)collaborationEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
+		   });					
+		addAnnotation
+		  ((EOperation)interactionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });							
+		addAnnotation
+		  ((EOperation)interactionFragmentEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)interactionFragmentEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });						
+		addAnnotation
+		  ((EOperation)lifelineEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)lifelineEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });					
+		addAnnotation
+		  ((EOperation)messageEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)messageEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });									
+		addAnnotation
+		  ((EOperation)stateInvariantEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
 		   });				
 		addAnnotation
+		  ((EOperation)portEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)changeTriggerEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)signalEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)signalEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)timeTriggerEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)variableEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });												
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+		   });						
+		addAnnotation
+		  ((EOperation)conditionalNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)conditionalNodeEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });					
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+		   });			
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+		   });						
+		addAnnotation
 		  ((EOperation)templateSignatureEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -13786,137 +13896,7 @@
 		  ((EOperation)templateParameterSubstitutionEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)interactionEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)interactionFragmentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)interactionFragmentEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });						
-		addAnnotation
-		  ((EOperation)lifelineEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)lifelineEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });					
-		addAnnotation
-		  ((EOperation)messageEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)messageEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });									
-		addAnnotation
-		  ((EOperation)stateInvariantEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)variableEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });												
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-		   });						
-		addAnnotation
-		  ((EOperation)conditionalNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)conditionalNodeEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });					
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-		   });						
-		addAnnotation
-		  ((EOperation)portEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)changeTriggerEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)signalEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });			
-		addAnnotation
-		  ((EOperation)signalEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)timeTriggerEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });					
-		addAnnotation
-		  ((EOperation)interactionOccurrenceEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });							
-		addAnnotation
-		  ((EOperation)interactionOperandEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)interactionConstraintEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });						
-		addAnnotation
-		  ((EOperation)combinedFragmentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });									
+		   });										
 		addAnnotation
 		  ((EOperation)stateMachineEClass.getEOperations().get(2), 
 		   source, 
@@ -13943,6 +13923,16 @@
 		   new String[] {
 		   });							
 		addAnnotation
+		  ((EOperation)joinNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)activityPartitionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });							
+		addAnnotation
 		  ((EOperation)createObjectActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -14046,18 +14036,28 @@
 		  ((EOperation)callOperationActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });				
+		   });					
 		addAnnotation
-		  ((EOperation)joinNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)activityPartitionEClass.getEOperations().get(0), 
+		  ((EOperation)interactionOccurrenceEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 		   });							
 		addAnnotation
+		  ((EOperation)interactionOperandEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });				
+		addAnnotation
+		  ((EOperation)interactionConstraintEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });						
+		addAnnotation
+		  ((EOperation)combinedFragmentEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });					
+		addAnnotation
 		  ((EOperation)exceptionHandlerEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -14086,12 +14086,12 @@
 		  ((EOperation)protocolTransitionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });																																								
+		   });							
 		addAnnotation
-		  ((EOperation)parameterSetEClass.getEOperations().get(0), 
+		  ((EOperation)componentEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });				
+		   });																																							
 		addAnnotation
 		  ((EOperation)readExtentActionEClass.getEOperations().get(0), 
 		   source, 
@@ -14161,12 +14161,7 @@
 		  ((EOperation)raiseExceptionActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });				
-		addAnnotation
-		  ((EOperation)componentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-		   });									
+		   });						
 		addAnnotation
 		  ((EOperation)deploymentEClass.getEOperations().get(1), 
 		   source, 
@@ -14186,7 +14181,12 @@
 		  ((EOperation)deploymentTargetEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });						
+		   });										
+		addAnnotation
+		  ((EOperation)parameterSetEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+		   });	
 	}
 
 	/**
@@ -14214,9 +14214,46 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
+		   });													
 		addAnnotation
-		  (getExpression_Operand(), 
+		  ((EOperation)namedElementEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  (getNamedElement_NameExpression(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });												
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  (getNamespace_OwnedRule(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getNamespace_ImportedMember(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getNamespace_ElementImport(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getNamespace_PackageImport(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
@@ -14226,6 +14263,24 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  (getDirectedRelationship_Source(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Relationship#getRelatedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  (getDirectedRelationship_Target(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Relationship#getRelatedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });											
+		addAnnotation
+		  (getExpression_Operand(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });									
 		addAnnotation
 		  ((EOperation)classEClass.getEOperations().get(3), 
@@ -14359,18 +14414,6 @@
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });													
 		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  (getNamedElement_NameExpression(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });													
-		addAnnotation
 		  (getPackage_NestedPackage(), 
 		   source, 
 		   new String[] {
@@ -14431,50 +14474,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });												
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  (getNamespace_OwnedRule(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getNamespace_ImportedMember(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getNamespace_ElementImport(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getNamespace_PackageImport(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  (getDirectedRelationship_Source(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Relationship#getRelatedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  (getDirectedRelationship_Target(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Relationship#getRelatedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
+		   });							
 		addAnnotation
 		  (getConstraint_Namespace(), 
 		   source, 
@@ -14574,7 +14574,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.DirectedRelationship#getTargets", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
+		   });																	
 		addAnnotation
 		  (getInstanceSpecification_Slot(), 
 		   source, 
@@ -14598,7 +14598,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																											
+		   });																		
 		addAnnotation
 		  (getElementImport_ImportedElement(), 
 		   source, 
@@ -14792,112 +14792,37 @@
 			 "org.eclipse.uml2.Activity#getGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });							
 		addAnnotation
-		  (getActivityEdge_Activity(), 
+		  (getConnector_RedefinedConnector(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
 		addAnnotation
-		  (getActivityEdge_Guard(), 
+		  (getConnector_End(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });										
+		addAnnotation
+		  (getStructuredClassifier_OwnedAttribute(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.StructuredClassifier#getRoles", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Classifier#getAttributes", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });			
 		addAnnotation
-		  (getActivityEdge_InStructuredNode(), 
+		  (getStructuredClassifier_Role(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.ActivityEdge#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });		
 		addAnnotation
-		  (getActivityEdge_InPartition(), 
+		  (getStructuredClassifier_OwnedConnector(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.ActivityEdge#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getActivityEdge_Weight(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });														
-		addAnnotation
-		  (getActivityGroup_SuperGroup(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  (getActivityGroup_ActivityGroup_activity(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  (getActivityNode_Activity(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  (getActivityNode_InStructuredNode(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getActivityNode_InPartition(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getActivityNode_InInterruptibleRegion(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  (getAction_Output(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  (getAction_Input(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getAction_LocalPrecondition(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getAction_LocalPostcondition(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getObjectNode_UpperBound(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getExecutableNode_Handler(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Classifier#getFeatures", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });										
 		addAnnotation
 		  (getInterface_OwnedAttribute(), 
@@ -15029,37 +14954,112 @@
 			 "org.eclipse.uml2.DirectedRelationship#getTargets", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });						
 		addAnnotation
-		  (getConnector_RedefinedConnector(), 
+		  (getActivityEdge_Activity(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
 		addAnnotation
-		  (getConnector_End(), 
+		  (getActivityEdge_Guard(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
-		addAnnotation
-		  (getStructuredClassifier_OwnedAttribute(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.StructuredClassifier#getRoles", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Classifier#getAttributes", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });			
 		addAnnotation
-		  (getStructuredClassifier_Role(), 
+		  (getActivityEdge_InStructuredNode(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.Namespace#getMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.ActivityEdge#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });		
 		addAnnotation
-		  (getStructuredClassifier_OwnedConnector(), 
+		  (getActivityEdge_InPartition(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.Classifier#getFeatures", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.ActivityEdge#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getActivityEdge_Weight(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });														
+		addAnnotation
+		  (getActivityGroup_SuperGroup(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  (getActivityGroup_ActivityGroup_activity(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  (getActivityNode_Activity(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  (getActivityNode_InStructuredNode(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getActivityNode_InPartition(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getActivityNode_InInterruptibleRegion(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.ActivityNode#getInGroups", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  (getAction_Output(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  (getAction_Input(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getAction_LocalPrecondition(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getAction_LocalPostcondition(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getObjectNode_UpperBound(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getExecutableNode_Handler(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
 		  (getCollaborationOccurrence_RoleBinding(), 
@@ -15072,6 +15072,140 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.StructuredClassifier#getRoles", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  (getInteraction_Lifeline(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getInteraction_Message(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getInteraction_FormalGate(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  (getInteractionFragment_GeneralOrdering(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getInteractionFragment_EnclosingOperand(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  (getLifeline_Interaction(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getLifeline_Selector(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  (getMessage_Interaction(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getMessage_Argument(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
+		addAnnotation
+		  (getStateInvariant_Invariant(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getPort_RedefinedPort(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  (getEncapsulatedClassifier_OwnedPort(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Classifier#getFeatures", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getChangeTrigger_ChangeExpression(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  (getSignal_OwnedAttribute(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Classifier#getAttributes", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getTimeTrigger_When(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getVariable_Scope(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });												
+		addAnnotation
+		  (getStructuredActivityNode_Variable(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
+		addAnnotation
+		  (getConditionalNode_Clause(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getConditionalNode_Result(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Action#getOutputs", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
+		addAnnotation
+		  (getLoopNode_Result(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Action#getOutputs", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getLoopNode_LoopVariable(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getLoopNode_LoopVariableInput(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Action#getInputs", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });							
 		addAnnotation
 		  (getTemplateSignature_OwnedParameter(), 
@@ -15168,176 +15302,6 @@
 		   new String[] {
 			 "org.eclipse.uml2.TemplateParameterSubstitution#getActuals", "", //$NON-NLS-1$ //$NON-NLS-2$
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  (getInteraction_Lifeline(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getInteraction_Message(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getInteraction_FormalGate(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  (getInteractionFragment_GeneralOrdering(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getInteractionFragment_EnclosingOperand(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  (getLifeline_Interaction(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getLifeline_Selector(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  (getMessage_Interaction(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.NamedElement#getNamespace", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getMessage_Argument(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
-		addAnnotation
-		  (getStateInvariant_Invariant(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getVariable_Scope(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwner", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });												
-		addAnnotation
-		  (getStructuredActivityNode_Variable(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
-		addAnnotation
-		  (getConditionalNode_Clause(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getConditionalNode_Result(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Action#getOutputs", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
-		addAnnotation
-		  (getLoopNode_Result(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Action#getOutputs", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getLoopNode_LoopVariable(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getLoopNode_LoopVariableInput(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Action#getInputs", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getPort_RedefinedPort(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  (getEncapsulatedClassifier_OwnedPort(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Classifier#getFeatures", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getChangeTrigger_ChangeExpression(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  (getSignal_OwnedAttribute(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Classifier#getAttributes", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getTimeTrigger_When(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  (getInteractionOccurrence_ActualGate(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  (getInteractionOperand_Guard(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  (getInteractionConstraint_Minint(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getInteractionConstraint_Maxint(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  (getCombinedFragment_Operand(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getCombinedFragment_CfragmentGate(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });								
 		addAnnotation
 		  (getStateMachine_Region(), 
@@ -15412,6 +15376,18 @@
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
+		  (getJoinNode_JoinSpec(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  (getActivityPartition_SuperPartition(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.ActivityGroup#getSuperGroup", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
 		  (getCreateObjectAction_Result(), 
 		   source, 
 		   new String[] {
@@ -15542,18 +15518,42 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Action#getInputs", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+		   });					
 		addAnnotation
-		  (getJoinNode_JoinSpec(), 
+		  (getInteractionOccurrence_ActualGate(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });							
 		addAnnotation
-		  (getActivityPartition_SuperPartition(), 
+		  (getInteractionOperand_Guard(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.ActivityGroup#getSuperGroup", "" //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  (getInteractionConstraint_Minint(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getInteractionConstraint_Maxint(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  (getCombinedFragment_Operand(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  (getCombinedFragment_CfragmentGate(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
 		  (getExceptionHandler_ProtectedNode(), 
@@ -15591,13 +15591,14 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Transition#getGuard", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																					
+		   });						
 		addAnnotation
-		  (getParameterSet_Condition(), 
+		  (getComponent_Realization(), 
 		   source, 
 		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+			 "org.eclipse.uml2.Element#getOwnedElements", "", //$NON-NLS-1$ //$NON-NLS-2$
+			 "org.eclipse.uml2.NamedElement#getClientDependencies", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });																																					
 		addAnnotation
 		  (getReadExtentAction_Result(), 
 		   source, 
@@ -15687,14 +15688,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Action#getInputs", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  (getComponent_Realization(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Element#getOwnedElements", "", //$NON-NLS-1$ //$NON-NLS-2$
-			 "org.eclipse.uml2.NamedElement#getClientDependencies", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });													
+		   });												
 		addAnnotation
 		  (getDeployment_DeployedArtifact(), 
 		   source, 
@@ -15721,7 +15715,13 @@
 		   new String[] {
 			 "org.eclipse.uml2.Element#getOwnedElements", "", //$NON-NLS-1$ //$NON-NLS-2$
 			 "org.eclipse.uml2.NamedElement#getClientDependencies", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
+		   });								
+		addAnnotation
+		  (getParameterSet_Condition(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Element#getOwnedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
 	}
 
 	/**
@@ -15744,9 +15744,74 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });											
+		   });															
 		addAnnotation
-		  ((EOperation)expressionEClass.getEOperations().get(0), 
+		  ((EOperation)namedElementEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(8), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)namedElementEClass.getEOperations().get(9), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });													
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(7), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)namespaceEClass.getEOperations().get(8), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
+		addAnnotation
+		  ((EOperation)commentEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
@@ -15759,7 +15824,16 @@
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
-		  ((EOperation)commentEClass.getEOperations().get(0), 
+		  ((EOperation)directedRelationshipEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "relatedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element" //$NON-NLS-1$ //$NON-NLS-2$
+		   });														
+		addAnnotation
+		  ((EOperation)expressionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
@@ -16088,46 +16162,7 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });															
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(8), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)namedElementEClass.getEOperations().get(9), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });									
+		   });										
 		addAnnotation
 		  ((EOperation)packageEClass.getEOperations().get(4), 
 		   source, 
@@ -16227,42 +16262,7 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });													
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(7), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)namespaceEClass.getEOperations().get(8), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
-		addAnnotation
-		  ((EOperation)directedRelationshipEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "relatedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
+		   });						
 		addAnnotation
 		  ((EOperation)constraintEClass.getEOperations().get(1), 
 		   source, 
@@ -16385,7 +16385,16 @@
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "name", "target", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.Element" //$NON-NLS-1$ //$NON-NLS-2$
-		   });									
+		   });											
+		addAnnotation
+		  ((EOperation)redefinableElementEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
 		addAnnotation
 		  ((EOperation)instanceSpecificationEClass.getEOperations().get(2), 
 		   source, 
@@ -16424,16 +16433,7 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });											
-		addAnnotation
-		  ((EOperation)redefinableElementEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+		   });					
 		addAnnotation
 		  ((EOperation)packageableElementEClass.getEOperations().get(0), 
 		   source, 
@@ -16843,174 +16843,71 @@
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });										
 		addAnnotation
-		  ((EOperation)activityEdgeEClass.getEOperations().get(0), 
+		  ((EOperation)connectorEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)connectorEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "attribute", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Property" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });			
 		addAnnotation
-		  ((EOperation)activityEdgeEClass.getEOperations().get(1), 
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(2), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });											
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "subgroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.ActivityGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "superGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "containedEdge", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.ActivityEdge", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "inGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "containedNode", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.ActivityNode", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "inGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(3), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "node", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "member", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement" //$NON-NLS-1$ //$NON-NLS-2$
 		   });			
 		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "node", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(5), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)activityGroupEClass.getEOperations().get(6), 
+		  ((EOperation)structuredClassifierEClass.getEOperations().get(3), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "feature", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Feature", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "featuringClassifier", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
-		addAnnotation
-		  ((EOperation)activityNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
-		addAnnotation
-		  ((EOperation)actionEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });									
-		addAnnotation
-		  ((EOperation)objectNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)executableNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+		   });							
 		addAnnotation
 		  ((EOperation)interfaceEClass.getEOperations().get(0), 
 		   source, 
@@ -17237,16 +17134,20 @@
 			 "eType", "org.eclipse.uml2.Element" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
-		  ((EOperation)connectorEClass.getEOperations().get(0), 
+		  ((EOperation)activityEdgeEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });			
 		addAnnotation
-		  ((EOperation)connectorEClass.getEOperations().get(1), 
+		  ((EOperation)activityEdgeEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
@@ -17257,51 +17158,150 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
+		   });											
 		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "attribute", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Property" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(1), 
+		  ((EOperation)activityGroupEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "subgroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.ActivityGroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "superGroup", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
+		   });				
 		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "member", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredClassifierEClass.getEOperations().get(3), 
+		  ((EOperation)activityGroupEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "feature", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Feature", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "featuringClassifier", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "containedEdge", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.ActivityEdge", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "inGroup", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
+		   });		
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "containedNode", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.ActivityNode", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "inGroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });		
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(3), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "node", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "node", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(5), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)activityGroupEClass.getEOperations().get(6), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });								
+		addAnnotation
+		  ((EOperation)activityNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });										
+		addAnnotation
+		  ((EOperation)actionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });									
+		addAnnotation
+		  ((EOperation)objectNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)executableNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
 		addAnnotation
 		  ((EOperation)collaborationOccurrenceEClass.getEOperations().get(0), 
 		   source, 
@@ -17323,8 +17323,344 @@
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "name", "role", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.ConnectableElement" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)interactionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  ((EOperation)interactionFragmentEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)interactionFragmentEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  ((EOperation)lifelineEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)lifelineEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)messageEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)messageEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)eventOccurrenceEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "covered", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Lifeline" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)stateInvariantEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "covered", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Lifeline" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)stateInvariantEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
+		  ((EOperation)portEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "feature", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Feature", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "featuringClassifier", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)changeTriggerEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)signalEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "attribute", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Property" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)signalEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)timeTriggerEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)variableEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "structuredNode", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "structuredNode", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activityGroup_activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "group", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(3), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "activityGroup_activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "group", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(4), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  ((EOperation)conditionalNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)conditionalNodeEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "output", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.OutputPin" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "output", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.OutputPin" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)loopNodeEClass.getEOperations().get(2), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "input", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.InputPin" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
 		  ((EOperation)templateSignatureEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -17497,396 +17833,8 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  ((EOperation)interactionEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  ((EOperation)interactionFragmentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)interactionFragmentEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
 		   });						
 		addAnnotation
-		  ((EOperation)lifelineEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)lifelineEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  ((EOperation)messageEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)messageEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  ((EOperation)eventOccurrenceEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "covered", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Lifeline" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)stateInvariantEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "covered", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Lifeline" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)stateInvariantEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)variableEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "structuredNode", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "structuredNode", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activityGroup_activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "group", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(3), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "activityGroup_activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Activity", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "group", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(4), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  ((EOperation)conditionalNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)conditionalNodeEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "output", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.OutputPin" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "output", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.OutputPin" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)loopNodeEClass.getEOperations().get(2), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "input", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.InputPin" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  ((EOperation)portEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "redefinedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.RedefinableElement" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "feature", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Feature", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "featuringClassifier", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)encapsulatedClassifierEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)changeTriggerEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)signalEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "attribute", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Property" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)signalEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedMember", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.NamedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "namespace", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)timeTriggerEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
-		  ((EOperation)interactionOccurrenceEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
-		addAnnotation
-		  ((EOperation)interactionOperandEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)interactionConstraintEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });						
-		addAnnotation
-		  ((EOperation)combinedFragmentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
 		  ((EOperation)stateMachineEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -18037,6 +17985,32 @@
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });							
 		addAnnotation
+		  ((EOperation)joinNodeEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });				
+		addAnnotation
+		  ((EOperation)activityPartitionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "superGroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.ActivityGroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "subgroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
 		  ((EOperation)createObjectActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -18251,9 +18225,22 @@
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "name", "input", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.InputPin" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+		   });					
 		addAnnotation
-		  ((EOperation)joinNodeEClass.getEOperations().get(0), 
+		  ((EOperation)interactionOccurrenceEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });							
+		addAnnotation
+		  ((EOperation)interactionOperandEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
@@ -18266,18 +18253,31 @@
 			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
-		  ((EOperation)activityPartitionEClass.getEOperations().get(0), 
+		  ((EOperation)interactionConstraintEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
 			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "superGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.ActivityGroup", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "subgroup", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });							
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
+		addAnnotation
+		  ((EOperation)combinedFragmentEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
 		addAnnotation
 		  ((EOperation)exceptionHandlerEClass.getEOperations().get(0), 
 		   source, 
@@ -18358,6 +18358,32 @@
 			 "eType", "org.eclipse.uml2.Constraint" //$NON-NLS-1$ //$NON-NLS-2$
 		   });					
 		addAnnotation
+		  ((EOperation)componentEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)componentEClass.getEOperations().get(1), 
+		   source, 
+		   new String[] {
+			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "clientDependency", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Dependency", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "client", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
 		  ((EOperation)timeObservationActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -18482,20 +18508,7 @@
 			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "name", "specification", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.DurationInterval" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
-		addAnnotation
-		  ((EOperation)parameterSetEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });				
+		   });			
 		addAnnotation
 		  ((EOperation)readExtentActionEClass.getEOperations().get(0), 
 		   source, 
@@ -18641,32 +18654,6 @@
 			 "eType", "org.eclipse.uml2.InputPin" //$NON-NLS-1$ //$NON-NLS-2$
 		   });				
 		addAnnotation
-		  ((EOperation)componentEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)componentEClass.getEOperations().get(1), 
-		   source, 
-		   new String[] {
-			 "derived", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.upperBound", "-1", //$NON-NLS-1$ //$NON-NLS-2$
-			 "name", "clientDependency", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eType", "org.eclipse.uml2.Dependency", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite", "client", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
-			 "eOpposite.lowerBound", "1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });					
-		addAnnotation
 		  ((EOperation)deploymentEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
@@ -18753,6 +18740,19 @@
 			 "containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
 			 "name", "nestedClassifier", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eType", "org.eclipse.uml2.Classifier" //$NON-NLS-1$ //$NON-NLS-2$
+		   });					
+		addAnnotation
+		  ((EOperation)parameterSetEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "derived", "true", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.upperBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
+			 "name", "ownedElement", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eType", "org.eclipse.uml2.Element", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite", "owner", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
+			 "eOpposite.lowerBound", "0" //$NON-NLS-1$ //$NON-NLS-2$
 		   });		
 	}
 
@@ -18763,7 +18763,7 @@
 	 * @generated
 	 */
 	protected void createRedefinesAnnotations() {
-		String source = "redefines"; //$NON-NLS-1$																																														
+		String source = "redefines"; //$NON-NLS-1$																																																																																										
 		addAnnotation
 		  ((EOperation)classEClass.getEOperations().get(1), 
 		   source, 
@@ -18848,13 +18848,13 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.TypedElement#getType", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																								
+		   });																																						
 		addAnnotation
 		  (getPackage_OwnedMember(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																				
+		   });																										
 		addAnnotation
 		  (getConstraint_Namespace(), 
 		   source, 
@@ -18890,7 +18890,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.BehavioredClassifier#getOwnedBehaviors", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																			
+		   });																																																																																																			
 		addAnnotation
 		  (getActivityEdge_RedefinedElement(), 
 		   source, 
@@ -18908,7 +18908,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																																																																																																																																					
+		   });																																																				
 		addAnnotation
 		  ((EOperation)eventOccurrenceEClass.getEOperations().get(0), 
 		   source, 
@@ -18920,7 +18920,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.InteractionFragment#getCovereds", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });									
+		   });																												
 		addAnnotation
 		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(0), 
 		   source, 
@@ -18946,7 +18946,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.ActivityGroup#getContainedEdges", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																															
+		   });																																																																										
 		addAnnotation
 		  (getStateMachine_ExtendedStateMachine(), 
 		   source, 
@@ -19000,25 +19000,7 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.RedefinableElement#getRedefinedElements", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																				
-		addAnnotation
-		  ((EOperation)linkEndCreationDataEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.LinkEndData#getQualifiers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });			
-		addAnnotation
-		  ((EOperation)createLinkActionEClass.getEOperations().get(0), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.LinkAction#getEndData", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																		
-		addAnnotation
-		  (getSendObjectAction_Request(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.InvocationAction#getArguments", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });										
+		   });									
 		addAnnotation
 		  (getActivityPartition_ContainedEdge(), 
 		   source, 
@@ -19036,7 +19018,31 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.ActivityGroup#getSubgroups", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																											
+		   });																																			
+		addAnnotation
+		  ((EOperation)linkEndCreationDataEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.LinkEndData#getQualifiers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
+		addAnnotation
+		  ((EOperation)createLinkActionEClass.getEOperations().get(0), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.LinkAction#getEndData", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });																																		
+		addAnnotation
+		  (getSendObjectAction_Request(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.InvocationAction#getArguments", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });																																																	
+		addAnnotation
+		  (getComponent_OwnedMember(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });						
 		addAnnotation
 		  (getTimeObservationAction_Now(), 
 		   source, 
@@ -19112,13 +19118,7 @@
 		   new String[] {
 			 "org.eclipse.uml2.Constraint#getSpecification", "", //$NON-NLS-1$ //$NON-NLS-2$
 			 "org.eclipse.uml2.IntervalConstraint#getSpecification", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });		
-		addAnnotation
-		  (getInterruptibleActivityRegion_ContainedNode(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.ActivityGroup#getContainedNodes", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																	
+		   });																														
 		addAnnotation
 		  ((EOperation)createLinkObjectActionEClass.getEOperations().get(0), 
 		   source, 
@@ -19131,19 +19131,19 @@
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.AcceptEventAction#getTriggers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																	
-		addAnnotation
-		  (getComponent_OwnedMember(), 
-		   source, 
-		   new String[] {
-			 "org.eclipse.uml2.Namespace#getOwnedMembers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																						
+		   });																																
 		addAnnotation
 		  (getNode_NestedNode(), 
 		   source, 
 		   new String[] {
 			 "org.eclipse.uml2.Class#getNestedClassifiers", "" //$NON-NLS-1$ //$NON-NLS-2$
-		   });
+		   });		
+		addAnnotation
+		  (getInterruptibleActivityRegion_ContainedNode(), 
+		   source, 
+		   new String[] {
+			 "org.eclipse.uml2.ActivityGroup#getContainedNodes", "" //$NON-NLS-1$ //$NON-NLS-2$
+		   });			
 	}
 
 	/**
@@ -19153,7 +19153,7 @@
 	 * @generated
 	 */
 	protected void createRedefinedAnnotations() {
-		String source = "redefined"; //$NON-NLS-1$																																																					
+		String source = "redefined"; //$NON-NLS-1$																																																																																																	
 		addAnnotation
 		  ((EOperation)classEClass.getEOperations().get(4), 
 		   source, 
@@ -19167,7 +19167,7 @@
 			 "eOpposite.containment", "true", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																																																																																																																																																																																										
+		   });																																																																																																																																																																																														
 		addAnnotation
 		  ((EOperation)packageableElementEClass.getEOperations().get(0), 
 		   source, 
@@ -19186,7 +19186,7 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });								
+		   });																																																																																								
 		addAnnotation
 		  (getActivityEdge_InGroup(), 
 		   source, 
@@ -19223,7 +19223,7 @@
 			 "eOpposite.containment", "false", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.lowerBound", "0", //$NON-NLS-1$ //$NON-NLS-2$
 			 "eOpposite.upperBound", "-1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																																																																																																																																																																																					
+		   });																																																																																							
 		addAnnotation
 		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(2), 
 		   source, 
@@ -19233,7 +19233,7 @@
 		  ((EOperation)structuredActivityNodeEClass.getEOperations().get(3), 
 		   source, 
 		   new String[] {
-		   });																																																													
+		   });																																																																								
 		addAnnotation
 		  ((EOperation)stateMachineEClass.getEOperations().get(0), 
 		   source, 
@@ -19263,12 +19263,12 @@
 		  ((EOperation)transitionEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });																																																																									
+		   });																																																																																		
 		addAnnotation
 		  ((EOperation)sendObjectActionEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });																																							
+		   });																																																							
 		addAnnotation
 		  ((EOperation)timeObservationActionEClass.getEOperations().get(0), 
 		   source, 
@@ -19302,19 +19302,19 @@
 		  ((EOperation)durationObservationActionEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });																																													
+		   });																																									
 		addAnnotation
 		  (getAcceptEventAction_Trigger(), 
 		   source, 
 		   new String[] {
 			 "lowerBound", "1", //$NON-NLS-1$ //$NON-NLS-2$
 			 "upperBound", "1" //$NON-NLS-1$ //$NON-NLS-2$
-		   });																																								
+		   });																																		
 		addAnnotation
 		  ((EOperation)nodeEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });	
+		   });					
 	}
 
 	/**
@@ -19324,17 +19324,17 @@
 	 * @generated
 	 */
 	protected void createSupersetAnnotations() {
-		String source = "superset"; //$NON-NLS-1$																																																																																																								
+		String source = "superset"; //$NON-NLS-1$																																																																																																																																																				
 		addAnnotation
 		  (getProperty_Association(), 
 		   source, 
 		   new String[] {
-		   });																																																																																	
+		   });																																																															
 		addAnnotation
 		  ((EOperation)packageEClass.getEOperations().get(6), 
 		   source, 
 		   new String[] {
-		   });																																																																																													
+		   });																																																																			
 		addAnnotation
 		  ((EOperation)classifierEClass.getEOperations().get(17), 
 		   source, 
@@ -19404,7 +19404,7 @@
 		  (getActivity_Node(), 
 		   source, 
 		   new String[] {
-		   });																																																																									
+		   });																																						
 		addAnnotation
 		  ((EOperation)implementationEClass.getEOperations().get(0), 
 		   source, 
@@ -19424,7 +19424,7 @@
 		  ((EOperation)manifestationEClass.getEOperations().get(0), 
 		   source, 
 		   new String[] {
-		   });																																	
+		   });																																																																																																																																																							
 		addAnnotation
 		  (getTemplateSignature_Parameter(), 
 		   source, 
@@ -19449,17 +19449,17 @@
 		  (getTemplateParameterSubstitution_Actual(), 
 		   source, 
 		   new String[] {
-		   });																																																																																																																																																																																																																																																								
+		   });																																																																																																																																																																					
 		addAnnotation
 		  ((EOperation)protocolTransitionEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });																																																																																											
+		   });							
 		addAnnotation
 		  ((EOperation)componentEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });					
+		   });																																																																																					
 		addAnnotation
 		  ((EOperation)deploymentEClass.getEOperations().get(0), 
 		   source, 
@@ -19474,6 +19474,6 @@
 		  ((EOperation)deploymentTargetEClass.getEOperations().get(1), 
 		   source, 
 		   new String[] {
-		   });				
+		   });								
 	}
 } //UML2PackageImpl
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UseCaseImpl.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UseCaseImpl.java
index 2ebaf64..f39bede 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UseCaseImpl.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/impl/UseCaseImpl.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UseCaseImpl.java,v 1.4 2004/04/27 16:38:54 khussey Exp $
+ * $Id: UseCaseImpl.java,v 1.5 2004/04/30 17:21:45 khussey Exp $
  */
 package org.eclipse.uml2.impl;
 
@@ -362,10 +362,10 @@
 					return eBasicSetContainer(otherEnd, UML2Package.USE_CASE__OWNING_PARAMETER, msgs);
 				case UML2Package.USE_CASE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicAdd(otherEnd, msgs);
-				case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.USE_CASE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicAdd(otherEnd, msgs);
+				case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicAdd(otherEnd, msgs);
 				case UML2Package.USE_CASE__OWNED_BEHAVIOR:
 					return ((InternalEList)getOwnedBehaviors()).basicAdd(otherEnd, msgs);
 				case UML2Package.USE_CASE__IMPLEMENTATION:
@@ -419,10 +419,10 @@
 					return eBasicSetContainer(null, UML2Package.USE_CASE__OWNING_PARAMETER, msgs);
 				case UML2Package.USE_CASE__GENERALIZATION:
 					return ((InternalEList)getGeneralizations()).basicRemove(otherEnd, msgs);
-				case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.USE_CASE__SUBSTITUTION:
 					return ((InternalEList)getSubstitutions()).basicRemove(otherEnd, msgs);
+				case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+					return ((InternalEList)getPowertypeExtents()).basicRemove(otherEnd, msgs);
 				case UML2Package.USE_CASE__OWNED_USE_CASE:
 					return ((InternalEList)getOwnedUseCases()).basicRemove(otherEnd, msgs);
 				case UML2Package.USE_CASE__OCCURRENCE:
@@ -531,10 +531,10 @@
 				return getAttributes();
 			case UML2Package.USE_CASE__REDEFINED_CLASSIFIER:
 				return getRedefinedClassifiers();
-			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-				return getPowertypeExtents();
 			case UML2Package.USE_CASE__SUBSTITUTION:
 				return getSubstitutions();
+			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+				return getPowertypeExtents();
 			case UML2Package.USE_CASE__OWNED_USE_CASE:
 				return getOwnedUseCases();
 			case UML2Package.USE_CASE__REPRESENTATION:
@@ -631,14 +631,14 @@
 				getRedefinedClassifiers().clear();
 				getRedefinedClassifiers().addAll((Collection)newValue);
 				return;
-			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				getPowertypeExtents().addAll((Collection)newValue);
-				return;
 			case UML2Package.USE_CASE__SUBSTITUTION:
 				getSubstitutions().clear();
 				getSubstitutions().addAll((Collection)newValue);
 				return;
+			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				getPowertypeExtents().addAll((Collection)newValue);
+				return;
 			case UML2Package.USE_CASE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				getOwnedUseCases().addAll((Collection)newValue);
@@ -746,12 +746,12 @@
 			case UML2Package.USE_CASE__REDEFINED_CLASSIFIER:
 				getRedefinedClassifiers().clear();
 				return;
-			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-				getPowertypeExtents().clear();
-				return;
 			case UML2Package.USE_CASE__SUBSTITUTION:
 				getSubstitutions().clear();
 				return;
+			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+				getPowertypeExtents().clear();
+				return;
 			case UML2Package.USE_CASE__OWNED_USE_CASE:
 				getOwnedUseCases().clear();
 				return;
@@ -854,10 +854,10 @@
 				return !getAttributes().isEmpty();
 			case UML2Package.USE_CASE__REDEFINED_CLASSIFIER:
 				return redefinedClassifier != null && !redefinedClassifier.isEmpty();
-			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
-				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.USE_CASE__SUBSTITUTION:
 				return substitution != null && !substitution.isEmpty();
+			case UML2Package.USE_CASE__POWERTYPE_EXTENT:
+				return powertypeExtent != null && !powertypeExtent.isEmpty();
 			case UML2Package.USE_CASE__OWNED_USE_CASE:
 				return ownedUseCase != null && !ownedUseCase.isEmpty();
 			case UML2Package.USE_CASE__REPRESENTATION:
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2AdapterFactory.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2AdapterFactory.java
index bd8e8d3..98ece78 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2AdapterFactory.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2AdapterFactory.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2AdapterFactory.java,v 1.4 2004/04/27 16:38:55 khussey Exp $
+ * $Id: UML2AdapterFactory.java,v 1.5 2004/04/30 17:21:48 khussey Exp $
  */
 package org.eclipse.uml2.util;
 
@@ -313,6 +313,21 @@
 			public Object caseMultiplicityElement(MultiplicityElement object) {
 				return createMultiplicityElementAdapter();
 			}
+			public Object caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			public Object caseNamespace(Namespace object) {
+				return createNamespaceAdapter();
+			}
+			public Object caseComment(Comment object) {
+				return createCommentAdapter();
+			}
+			public Object caseDirectedRelationship(DirectedRelationship object) {
+				return createDirectedRelationshipAdapter();
+			}
+			public Object caseRelationship(Relationship object) {
+				return createRelationshipAdapter();
+			}
 			public Object caseOpaqueExpression(OpaqueExpression object) {
 				return createOpaqueExpressionAdapter();
 			}
@@ -322,9 +337,6 @@
 			public Object caseExpression(Expression object) {
 				return createExpressionAdapter();
 			}
-			public Object caseComment(Comment object) {
-				return createCommentAdapter();
-			}
 			public Object caseClass(org.eclipse.uml2.Class object) {
 				return createClassAdapter();
 			}
@@ -343,9 +355,6 @@
 			public Object caseParameter(Parameter object) {
 				return createParameterAdapter();
 			}
-			public Object caseNamedElement(NamedElement object) {
-				return createNamedElementAdapter();
-			}
 			public Object casePackage(org.eclipse.uml2.Package object) {
 				return createPackageAdapter();
 			}
@@ -361,15 +370,6 @@
 			public Object casePrimitiveType(PrimitiveType object) {
 				return createPrimitiveTypeAdapter();
 			}
-			public Object caseNamespace(Namespace object) {
-				return createNamespaceAdapter();
-			}
-			public Object caseDirectedRelationship(DirectedRelationship object) {
-				return createDirectedRelationshipAdapter();
-			}
-			public Object caseRelationship(Relationship object) {
-				return createRelationshipAdapter();
-			}
 			public Object caseConstraint(Constraint object) {
 				return createConstraintAdapter();
 			}
@@ -406,6 +406,9 @@
 			public Object caseGeneralization(Generalization object) {
 				return createGeneralizationAdapter();
 			}
+			public Object caseRedefinableElement(RedefinableElement object) {
+				return createRedefinableElementAdapter();
+			}
 			public Object caseInstanceSpecification(InstanceSpecification object) {
 				return createInstanceSpecificationAdapter();
 			}
@@ -415,9 +418,6 @@
 			public Object caseInstanceValue(InstanceValue object) {
 				return createInstanceValueAdapter();
 			}
-			public Object caseRedefinableElement(RedefinableElement object) {
-				return createRedefinableElementAdapter();
-			}
 			public Object casePackageableElement(PackageableElement object) {
 				return createPackageableElementAdapter();
 			}
@@ -448,21 +448,6 @@
 			public Object caseExtensionEnd(ExtensionEnd object) {
 				return createExtensionEndAdapter();
 			}
-			public Object caseAssociationClass(AssociationClass object) {
-				return createAssociationClassAdapter();
-			}
-			public Object caseGeneralizationSet(GeneralizationSet object) {
-				return createGeneralizationSetAdapter();
-			}
-			public Object caseInformationItem(InformationItem object) {
-				return createInformationItemAdapter();
-			}
-			public Object caseInformationFlow(InformationFlow object) {
-				return createInformationFlowAdapter();
-			}
-			public Object caseModel(Model object) {
-				return createModelAdapter();
-			}
 			public Object casePermission(Permission object) {
 				return createPermissionAdapter();
 			}
@@ -490,6 +475,60 @@
 			public Object caseActivity(Activity object) {
 				return createActivityAdapter();
 			}
+			public Object caseAssociationClass(AssociationClass object) {
+				return createAssociationClassAdapter();
+			}
+			public Object caseModel(Model object) {
+				return createModelAdapter();
+			}
+			public Object caseInformationItem(InformationItem object) {
+				return createInformationItemAdapter();
+			}
+			public Object caseInformationFlow(InformationFlow object) {
+				return createInformationFlowAdapter();
+			}
+			public Object caseGeneralizationSet(GeneralizationSet object) {
+				return createGeneralizationSetAdapter();
+			}
+			public Object caseConnectorEnd(ConnectorEnd object) {
+				return createConnectorEndAdapter();
+			}
+			public Object caseConnectableElement(ConnectableElement object) {
+				return createConnectableElementAdapter();
+			}
+			public Object caseConnector(Connector object) {
+				return createConnectorAdapter();
+			}
+			public Object caseStructuredClassifier(StructuredClassifier object) {
+				return createStructuredClassifierAdapter();
+			}
+			public Object caseInterface(Interface object) {
+				return createInterfaceAdapter();
+			}
+			public Object caseImplementation(Implementation object) {
+				return createImplementationAdapter();
+			}
+			public Object caseActor(Actor object) {
+				return createActorAdapter();
+			}
+			public Object caseExtend(Extend object) {
+				return createExtendAdapter();
+			}
+			public Object caseUseCase(UseCase object) {
+				return createUseCaseAdapter();
+			}
+			public Object caseExtensionPoint(ExtensionPoint object) {
+				return createExtensionPointAdapter();
+			}
+			public Object caseInclude(Include object) {
+				return createIncludeAdapter();
+			}
+			public Object caseArtifact(Artifact object) {
+				return createArtifactAdapter();
+			}
+			public Object caseManifestation(Manifestation object) {
+				return createManifestationAdapter();
+			}
 			public Object caseActivityEdge(ActivityEdge object) {
 				return createActivityEdgeAdapter();
 			}
@@ -547,51 +586,90 @@
 			public Object caseValuePin(ValuePin object) {
 				return createValuePinAdapter();
 			}
-			public Object caseInterface(Interface object) {
-				return createInterfaceAdapter();
-			}
-			public Object caseImplementation(Implementation object) {
-				return createImplementationAdapter();
-			}
-			public Object caseActor(Actor object) {
-				return createActorAdapter();
-			}
-			public Object caseExtend(Extend object) {
-				return createExtendAdapter();
-			}
-			public Object caseUseCase(UseCase object) {
-				return createUseCaseAdapter();
-			}
-			public Object caseExtensionPoint(ExtensionPoint object) {
-				return createExtensionPointAdapter();
-			}
-			public Object caseInclude(Include object) {
-				return createIncludeAdapter();
-			}
-			public Object caseArtifact(Artifact object) {
-				return createArtifactAdapter();
-			}
-			public Object caseManifestation(Manifestation object) {
-				return createManifestationAdapter();
-			}
-			public Object caseConnectorEnd(ConnectorEnd object) {
-				return createConnectorEndAdapter();
-			}
-			public Object caseConnectableElement(ConnectableElement object) {
-				return createConnectableElementAdapter();
-			}
-			public Object caseConnector(Connector object) {
-				return createConnectorAdapter();
-			}
-			public Object caseStructuredClassifier(StructuredClassifier object) {
-				return createStructuredClassifierAdapter();
-			}
 			public Object caseCollaborationOccurrence(CollaborationOccurrence object) {
 				return createCollaborationOccurrenceAdapter();
 			}
 			public Object caseCollaboration(Collaboration object) {
 				return createCollaborationAdapter();
 			}
+			public Object caseInteraction(Interaction object) {
+				return createInteractionAdapter();
+			}
+			public Object caseInteractionFragment(InteractionFragment object) {
+				return createInteractionFragmentAdapter();
+			}
+			public Object caseLifeline(Lifeline object) {
+				return createLifelineAdapter();
+			}
+			public Object caseMessage(Message object) {
+				return createMessageAdapter();
+			}
+			public Object caseGeneralOrdering(GeneralOrdering object) {
+				return createGeneralOrderingAdapter();
+			}
+			public Object caseMessageEnd(MessageEnd object) {
+				return createMessageEndAdapter();
+			}
+			public Object caseEventOccurrence(EventOccurrence object) {
+				return createEventOccurrenceAdapter();
+			}
+			public Object caseExecutionOccurrence(ExecutionOccurrence object) {
+				return createExecutionOccurrenceAdapter();
+			}
+			public Object caseStateInvariant(StateInvariant object) {
+				return createStateInvariantAdapter();
+			}
+			public Object caseStop(Stop object) {
+				return createStopAdapter();
+			}
+			public Object casePort(Port object) {
+				return createPortAdapter();
+			}
+			public Object caseEncapsulatedClassifier(EncapsulatedClassifier object) {
+				return createEncapsulatedClassifierAdapter();
+			}
+			public Object caseCallTrigger(CallTrigger object) {
+				return createCallTriggerAdapter();
+			}
+			public Object caseMessageTrigger(MessageTrigger object) {
+				return createMessageTriggerAdapter();
+			}
+			public Object caseChangeTrigger(ChangeTrigger object) {
+				return createChangeTriggerAdapter();
+			}
+			public Object caseTrigger(Trigger object) {
+				return createTriggerAdapter();
+			}
+			public Object caseReception(Reception object) {
+				return createReceptionAdapter();
+			}
+			public Object caseSignal(Signal object) {
+				return createSignalAdapter();
+			}
+			public Object caseSignalTrigger(SignalTrigger object) {
+				return createSignalTriggerAdapter();
+			}
+			public Object caseTimeTrigger(TimeTrigger object) {
+				return createTimeTriggerAdapter();
+			}
+			public Object caseAnyTrigger(AnyTrigger object) {
+				return createAnyTriggerAdapter();
+			}
+			public Object caseVariable(Variable object) {
+				return createVariableAdapter();
+			}
+			public Object caseStructuredActivityNode(StructuredActivityNode object) {
+				return createStructuredActivityNodeAdapter();
+			}
+			public Object caseConditionalNode(ConditionalNode object) {
+				return createConditionalNodeAdapter();
+			}
+			public Object caseClause(Clause object) {
+				return createClauseAdapter();
+			}
+			public Object caseLoopNode(LoopNode object) {
+				return createLoopNodeAdapter();
+			}
 			public Object caseTemplateSignature(TemplateSignature object) {
 				return createTemplateSignatureAdapter();
 			}
@@ -631,105 +709,6 @@
 			public Object caseConnectableElementTemplateParameter(ConnectableElementTemplateParameter object) {
 				return createConnectableElementTemplateParameterAdapter();
 			}
-			public Object caseInteraction(Interaction object) {
-				return createInteractionAdapter();
-			}
-			public Object caseInteractionFragment(InteractionFragment object) {
-				return createInteractionFragmentAdapter();
-			}
-			public Object caseLifeline(Lifeline object) {
-				return createLifelineAdapter();
-			}
-			public Object caseMessage(Message object) {
-				return createMessageAdapter();
-			}
-			public Object caseGeneralOrdering(GeneralOrdering object) {
-				return createGeneralOrderingAdapter();
-			}
-			public Object caseMessageEnd(MessageEnd object) {
-				return createMessageEndAdapter();
-			}
-			public Object caseEventOccurrence(EventOccurrence object) {
-				return createEventOccurrenceAdapter();
-			}
-			public Object caseExecutionOccurrence(ExecutionOccurrence object) {
-				return createExecutionOccurrenceAdapter();
-			}
-			public Object caseStateInvariant(StateInvariant object) {
-				return createStateInvariantAdapter();
-			}
-			public Object caseStop(Stop object) {
-				return createStopAdapter();
-			}
-			public Object caseVariable(Variable object) {
-				return createVariableAdapter();
-			}
-			public Object caseStructuredActivityNode(StructuredActivityNode object) {
-				return createStructuredActivityNodeAdapter();
-			}
-			public Object caseConditionalNode(ConditionalNode object) {
-				return createConditionalNodeAdapter();
-			}
-			public Object caseClause(Clause object) {
-				return createClauseAdapter();
-			}
-			public Object caseLoopNode(LoopNode object) {
-				return createLoopNodeAdapter();
-			}
-			public Object casePort(Port object) {
-				return createPortAdapter();
-			}
-			public Object caseEncapsulatedClassifier(EncapsulatedClassifier object) {
-				return createEncapsulatedClassifierAdapter();
-			}
-			public Object caseCallTrigger(CallTrigger object) {
-				return createCallTriggerAdapter();
-			}
-			public Object caseMessageTrigger(MessageTrigger object) {
-				return createMessageTriggerAdapter();
-			}
-			public Object caseChangeTrigger(ChangeTrigger object) {
-				return createChangeTriggerAdapter();
-			}
-			public Object caseTrigger(Trigger object) {
-				return createTriggerAdapter();
-			}
-			public Object caseReception(Reception object) {
-				return createReceptionAdapter();
-			}
-			public Object caseSignal(Signal object) {
-				return createSignalAdapter();
-			}
-			public Object caseSignalTrigger(SignalTrigger object) {
-				return createSignalTriggerAdapter();
-			}
-			public Object caseTimeTrigger(TimeTrigger object) {
-				return createTimeTriggerAdapter();
-			}
-			public Object caseAnyTrigger(AnyTrigger object) {
-				return createAnyTriggerAdapter();
-			}
-			public Object caseInteractionOccurrence(InteractionOccurrence object) {
-				return createInteractionOccurrenceAdapter();
-			}
-			public Object caseGate(Gate object) {
-				return createGateAdapter();
-			}
-			public Object casePartDecomposition(PartDecomposition object) {
-				return createPartDecompositionAdapter();
-			}
-			public Object caseInteractionOperand(InteractionOperand object) {
-				return createInteractionOperandAdapter();
-			}
-			public Object caseInteractionConstraint(InteractionConstraint object) {
-				return createInteractionConstraintAdapter();
-			}
-			public Object caseCombinedFragment(CombinedFragment object) {
-				return createCombinedFragmentAdapter();
-			}
-			public Object caseContinuation(Continuation object) {
-				return createContinuationAdapter();
-			}
 			public Object caseStateMachine(StateMachine object) {
 				return createStateMachineAdapter();
 			}
@@ -754,6 +733,21 @@
 			public Object caseFinalState(FinalState object) {
 				return createFinalStateAdapter();
 			}
+			public Object caseForkNode(ForkNode object) {
+				return createForkNodeAdapter();
+			}
+			public Object caseJoinNode(JoinNode object) {
+				return createJoinNodeAdapter();
+			}
+			public Object caseFlowFinalNode(FlowFinalNode object) {
+				return createFlowFinalNodeAdapter();
+			}
+			public Object caseCentralBufferNode(CentralBufferNode object) {
+				return createCentralBufferNodeAdapter();
+			}
+			public Object caseActivityPartition(ActivityPartition object) {
+				return createActivityPartitionAdapter();
+			}
 			public Object caseCreateObjectAction(CreateObjectAction object) {
 				return createCreateObjectActionAdapter();
 			}
@@ -853,20 +847,26 @@
 			public Object caseCallBehaviorAction(CallBehaviorAction object) {
 				return createCallBehaviorActionAdapter();
 			}
-			public Object caseForkNode(ForkNode object) {
-				return createForkNodeAdapter();
+			public Object caseInteractionOccurrence(InteractionOccurrence object) {
+				return createInteractionOccurrenceAdapter();
 			}
-			public Object caseJoinNode(JoinNode object) {
-				return createJoinNodeAdapter();
+			public Object caseGate(Gate object) {
+				return createGateAdapter();
 			}
-			public Object caseFlowFinalNode(FlowFinalNode object) {
-				return createFlowFinalNodeAdapter();
+			public Object casePartDecomposition(PartDecomposition object) {
+				return createPartDecompositionAdapter();
 			}
-			public Object caseCentralBufferNode(CentralBufferNode object) {
-				return createCentralBufferNodeAdapter();
+			public Object caseInteractionOperand(InteractionOperand object) {
+				return createInteractionOperandAdapter();
 			}
-			public Object caseActivityPartition(ActivityPartition object) {
-				return createActivityPartitionAdapter();
+			public Object caseInteractionConstraint(InteractionConstraint object) {
+				return createInteractionConstraintAdapter();
+			}
+			public Object caseCombinedFragment(CombinedFragment object) {
+				return createCombinedFragmentAdapter();
+			}
+			public Object caseContinuation(Continuation object) {
+				return createContinuationAdapter();
 			}
 			public Object caseExpansionNode(ExpansionNode object) {
 				return createExpansionNodeAdapter();
@@ -886,6 +886,9 @@
 			public Object caseProtocolTransition(ProtocolTransition object) {
 				return createProtocolTransitionAdapter();
 			}
+			public Object caseComponent(Component object) {
+				return createComponentAdapter();
+			}
 			public Object caseTimeExpression(TimeExpression object) {
 				return createTimeExpressionAdapter();
 			}
@@ -916,15 +919,6 @@
 			public Object caseDurationConstraint(DurationConstraint object) {
 				return createDurationConstraintAdapter();
 			}
-			public Object caseDataStoreNode(DataStoreNode object) {
-				return createDataStoreNodeAdapter();
-			}
-			public Object caseInterruptibleActivityRegion(InterruptibleActivityRegion object) {
-				return createInterruptibleActivityRegionAdapter();
-			}
-			public Object caseParameterSet(ParameterSet object) {
-				return createParameterSetAdapter();
-			}
 			public Object caseReadExtentAction(ReadExtentAction object) {
 				return createReadExtentActionAdapter();
 			}
@@ -961,9 +955,6 @@
 			public Object caseRaiseExceptionAction(RaiseExceptionAction object) {
 				return createRaiseExceptionActionAdapter();
 			}
-			public Object caseComponent(Component object) {
-				return createComponentAdapter();
-			}
 			public Object caseDeployment(Deployment object) {
 				return createDeploymentAdapter();
 			}
@@ -985,6 +976,15 @@
 			public Object caseCommunicationPath(CommunicationPath object) {
 				return createCommunicationPathAdapter();
 			}
+			public Object caseDataStoreNode(DataStoreNode object) {
+				return createDataStoreNodeAdapter();
+			}
+			public Object caseInterruptibleActivityRegion(InterruptibleActivityRegion object) {
+				return createInterruptibleActivityRegionAdapter();
+			}
+			public Object caseParameterSet(ParameterSet object) {
+				return createParameterSetAdapter();
+			}
 			public Object caseDeploymentSpecification(DeploymentSpecification object) {
 				return createDeploymentSpecificationAdapter();
 			}
diff --git a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Switch.java b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Switch.java
index 91924bd..cb49a5e 100644
--- a/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Switch.java
+++ b/deprecated/plugins/org.eclipse.uml2/src/org/eclipse/uml2/util/UML2Switch.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: UML2Switch.java,v 1.4 2004/04/27 16:38:55 khussey Exp $
+ * $Id: UML2Switch.java,v 1.5 2004/04/30 17:21:46 khussey Exp $
  */
 package org.eclipse.uml2.util;
 
@@ -295,6 +295,15 @@
 		EClass theEClass = theEObject.eClass();
 		if (theEClass.eContainer() == modelPackage) {
 			switch (theEClass.getClassifierID()) {
+				case UML2Package.COMMENT: {
+					Comment comment = (Comment)theEObject;
+					Object result = caseComment(comment);
+					if (result == null) result = caseTemplateableElement(comment);
+					if (result == null) result = caseElement(comment);
+					if (result == null) result = caseEModelElement(comment);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
 				case UML2Package.OPAQUE_EXPRESSION: {
 					OpaqueExpression opaqueExpression = (OpaqueExpression)theEObject;
 					Object result = caseOpaqueExpression(opaqueExpression);
@@ -322,15 +331,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.COMMENT: {
-					Comment comment = (Comment)theEObject;
-					Object result = caseComment(comment);
-					if (result == null) result = caseTemplateableElement(comment);
-					if (result == null) result = caseElement(comment);
-					if (result == null) result = caseEModelElement(comment);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.CLASS: {
 					org.eclipse.uml2.Class class_ = (org.eclipse.uml2.Class)theEObject;
 					Object result = caseClass(class_);
@@ -733,80 +733,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.ASSOCIATION_CLASS: {
-					AssociationClass associationClass = (AssociationClass)theEObject;
-					Object result = caseAssociationClass(associationClass);
-					if (result == null) result = caseClass(associationClass);
-					if (result == null) result = caseAssociation(associationClass);
-					if (result == null) result = caseEncapsulatedClassifier(associationClass);
-					if (result == null) result = caseBehavioredClassifier(associationClass);
-					if (result == null) result = caseClassifier(associationClass);
-					if (result == null) result = caseRelationship(associationClass);
-					if (result == null) result = caseStructuredClassifier(associationClass);
-					if (result == null) result = caseNamespace(associationClass);
-					if (result == null) result = caseType(associationClass);
-					if (result == null) result = caseRedefinableElement(associationClass);
-					if (result == null) result = caseElement(associationClass);
-					if (result == null) result = caseNamedElement(associationClass);
-					if (result == null) result = casePackageableElement(associationClass);
-					if (result == null) result = caseEModelElement(associationClass);
-					if (result == null) result = caseTemplateableElement(associationClass);
-					if (result == null) result = caseParameterableElement(associationClass);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.GENERALIZATION_SET: {
-					GeneralizationSet generalizationSet = (GeneralizationSet)theEObject;
-					Object result = caseGeneralizationSet(generalizationSet);
-					if (result == null) result = casePackageableElement(generalizationSet);
-					if (result == null) result = caseNamedElement(generalizationSet);
-					if (result == null) result = caseParameterableElement(generalizationSet);
-					if (result == null) result = caseTemplateableElement(generalizationSet);
-					if (result == null) result = caseElement(generalizationSet);
-					if (result == null) result = caseEModelElement(generalizationSet);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.INFORMATION_ITEM: {
-					InformationItem informationItem = (InformationItem)theEObject;
-					Object result = caseInformationItem(informationItem);
-					if (result == null) result = caseClassifier(informationItem);
-					if (result == null) result = caseNamespace(informationItem);
-					if (result == null) result = caseType(informationItem);
-					if (result == null) result = caseRedefinableElement(informationItem);
-					if (result == null) result = caseNamedElement(informationItem);
-					if (result == null) result = casePackageableElement(informationItem);
-					if (result == null) result = caseTemplateableElement(informationItem);
-					if (result == null) result = caseParameterableElement(informationItem);
-					if (result == null) result = caseElement(informationItem);
-					if (result == null) result = caseEModelElement(informationItem);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.INFORMATION_FLOW: {
-					InformationFlow informationFlow = (InformationFlow)theEObject;
-					Object result = caseInformationFlow(informationFlow);
-					if (result == null) result = caseDirectedRelationship(informationFlow);
-					if (result == null) result = caseRelationship(informationFlow);
-					if (result == null) result = caseElement(informationFlow);
-					if (result == null) result = caseEModelElement(informationFlow);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.MODEL: {
-					Model model = (Model)theEObject;
-					Object result = caseModel(model);
-					if (result == null) result = casePackage(model);
-					if (result == null) result = caseNamespace(model);
-					if (result == null) result = casePackageableElement(model);
-					if (result == null) result = caseNamedElement(model);
-					if (result == null) result = caseParameterableElement(model);
-					if (result == null) result = caseTemplateableElement(model);
-					if (result == null) result = caseElement(model);
-					if (result == null) result = caseEModelElement(model);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.PERMISSION: {
 					Permission permission = (Permission)theEObject;
 					Object result = casePermission(permission);
@@ -920,6 +846,235 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
+				case UML2Package.ASSOCIATION_CLASS: {
+					AssociationClass associationClass = (AssociationClass)theEObject;
+					Object result = caseAssociationClass(associationClass);
+					if (result == null) result = caseClass(associationClass);
+					if (result == null) result = caseAssociation(associationClass);
+					if (result == null) result = caseEncapsulatedClassifier(associationClass);
+					if (result == null) result = caseBehavioredClassifier(associationClass);
+					if (result == null) result = caseClassifier(associationClass);
+					if (result == null) result = caseRelationship(associationClass);
+					if (result == null) result = caseStructuredClassifier(associationClass);
+					if (result == null) result = caseNamespace(associationClass);
+					if (result == null) result = caseType(associationClass);
+					if (result == null) result = caseRedefinableElement(associationClass);
+					if (result == null) result = caseElement(associationClass);
+					if (result == null) result = caseNamedElement(associationClass);
+					if (result == null) result = casePackageableElement(associationClass);
+					if (result == null) result = caseEModelElement(associationClass);
+					if (result == null) result = caseTemplateableElement(associationClass);
+					if (result == null) result = caseParameterableElement(associationClass);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.MODEL: {
+					Model model = (Model)theEObject;
+					Object result = caseModel(model);
+					if (result == null) result = casePackage(model);
+					if (result == null) result = caseNamespace(model);
+					if (result == null) result = casePackageableElement(model);
+					if (result == null) result = caseNamedElement(model);
+					if (result == null) result = caseParameterableElement(model);
+					if (result == null) result = caseTemplateableElement(model);
+					if (result == null) result = caseElement(model);
+					if (result == null) result = caseEModelElement(model);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.INFORMATION_ITEM: {
+					InformationItem informationItem = (InformationItem)theEObject;
+					Object result = caseInformationItem(informationItem);
+					if (result == null) result = caseClassifier(informationItem);
+					if (result == null) result = caseNamespace(informationItem);
+					if (result == null) result = caseType(informationItem);
+					if (result == null) result = caseRedefinableElement(informationItem);
+					if (result == null) result = caseNamedElement(informationItem);
+					if (result == null) result = casePackageableElement(informationItem);
+					if (result == null) result = caseTemplateableElement(informationItem);
+					if (result == null) result = caseParameterableElement(informationItem);
+					if (result == null) result = caseElement(informationItem);
+					if (result == null) result = caseEModelElement(informationItem);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.INFORMATION_FLOW: {
+					InformationFlow informationFlow = (InformationFlow)theEObject;
+					Object result = caseInformationFlow(informationFlow);
+					if (result == null) result = caseDirectedRelationship(informationFlow);
+					if (result == null) result = caseRelationship(informationFlow);
+					if (result == null) result = caseElement(informationFlow);
+					if (result == null) result = caseEModelElement(informationFlow);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.GENERALIZATION_SET: {
+					GeneralizationSet generalizationSet = (GeneralizationSet)theEObject;
+					Object result = caseGeneralizationSet(generalizationSet);
+					if (result == null) result = casePackageableElement(generalizationSet);
+					if (result == null) result = caseNamedElement(generalizationSet);
+					if (result == null) result = caseParameterableElement(generalizationSet);
+					if (result == null) result = caseTemplateableElement(generalizationSet);
+					if (result == null) result = caseElement(generalizationSet);
+					if (result == null) result = caseEModelElement(generalizationSet);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CONNECTOR_END: {
+					ConnectorEnd connectorEnd = (ConnectorEnd)theEObject;
+					Object result = caseConnectorEnd(connectorEnd);
+					if (result == null) result = caseMultiplicityElement(connectorEnd);
+					if (result == null) result = caseElement(connectorEnd);
+					if (result == null) result = caseEModelElement(connectorEnd);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CONNECTOR: {
+					Connector connector = (Connector)theEObject;
+					Object result = caseConnector(connector);
+					if (result == null) result = caseFeature(connector);
+					if (result == null) result = caseRedefinableElement(connector);
+					if (result == null) result = caseNamedElement(connector);
+					if (result == null) result = caseTemplateableElement(connector);
+					if (result == null) result = caseElement(connector);
+					if (result == null) result = caseEModelElement(connector);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.INTERFACE: {
+					Interface interface_ = (Interface)theEObject;
+					Object result = caseInterface(interface_);
+					if (result == null) result = caseClassifier(interface_);
+					if (result == null) result = caseNamespace(interface_);
+					if (result == null) result = caseType(interface_);
+					if (result == null) result = caseRedefinableElement(interface_);
+					if (result == null) result = caseNamedElement(interface_);
+					if (result == null) result = casePackageableElement(interface_);
+					if (result == null) result = caseTemplateableElement(interface_);
+					if (result == null) result = caseParameterableElement(interface_);
+					if (result == null) result = caseElement(interface_);
+					if (result == null) result = caseEModelElement(interface_);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.IMPLEMENTATION: {
+					Implementation implementation = (Implementation)theEObject;
+					Object result = caseImplementation(implementation);
+					if (result == null) result = caseRealization(implementation);
+					if (result == null) result = caseAbstraction(implementation);
+					if (result == null) result = caseDependency(implementation);
+					if (result == null) result = casePackageableElement(implementation);
+					if (result == null) result = caseDirectedRelationship(implementation);
+					if (result == null) result = caseNamedElement(implementation);
+					if (result == null) result = caseParameterableElement(implementation);
+					if (result == null) result = caseRelationship(implementation);
+					if (result == null) result = caseTemplateableElement(implementation);
+					if (result == null) result = caseElement(implementation);
+					if (result == null) result = caseEModelElement(implementation);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.ACTOR: {
+					Actor actor = (Actor)theEObject;
+					Object result = caseActor(actor);
+					if (result == null) result = caseClassifier(actor);
+					if (result == null) result = caseNamespace(actor);
+					if (result == null) result = caseType(actor);
+					if (result == null) result = caseRedefinableElement(actor);
+					if (result == null) result = caseNamedElement(actor);
+					if (result == null) result = casePackageableElement(actor);
+					if (result == null) result = caseTemplateableElement(actor);
+					if (result == null) result = caseParameterableElement(actor);
+					if (result == null) result = caseElement(actor);
+					if (result == null) result = caseEModelElement(actor);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.EXTEND: {
+					Extend extend = (Extend)theEObject;
+					Object result = caseExtend(extend);
+					if (result == null) result = caseNamedElement(extend);
+					if (result == null) result = caseDirectedRelationship(extend);
+					if (result == null) result = caseTemplateableElement(extend);
+					if (result == null) result = caseRelationship(extend);
+					if (result == null) result = caseElement(extend);
+					if (result == null) result = caseEModelElement(extend);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.USE_CASE: {
+					UseCase useCase = (UseCase)theEObject;
+					Object result = caseUseCase(useCase);
+					if (result == null) result = caseBehavioredClassifier(useCase);
+					if (result == null) result = caseClassifier(useCase);
+					if (result == null) result = caseNamespace(useCase);
+					if (result == null) result = caseType(useCase);
+					if (result == null) result = caseRedefinableElement(useCase);
+					if (result == null) result = caseNamedElement(useCase);
+					if (result == null) result = casePackageableElement(useCase);
+					if (result == null) result = caseTemplateableElement(useCase);
+					if (result == null) result = caseParameterableElement(useCase);
+					if (result == null) result = caseElement(useCase);
+					if (result == null) result = caseEModelElement(useCase);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.EXTENSION_POINT: {
+					ExtensionPoint extensionPoint = (ExtensionPoint)theEObject;
+					Object result = caseExtensionPoint(extensionPoint);
+					if (result == null) result = caseRedefinableElement(extensionPoint);
+					if (result == null) result = caseNamedElement(extensionPoint);
+					if (result == null) result = caseTemplateableElement(extensionPoint);
+					if (result == null) result = caseElement(extensionPoint);
+					if (result == null) result = caseEModelElement(extensionPoint);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.INCLUDE: {
+					Include include = (Include)theEObject;
+					Object result = caseInclude(include);
+					if (result == null) result = caseNamedElement(include);
+					if (result == null) result = caseDirectedRelationship(include);
+					if (result == null) result = caseTemplateableElement(include);
+					if (result == null) result = caseRelationship(include);
+					if (result == null) result = caseElement(include);
+					if (result == null) result = caseEModelElement(include);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.ARTIFACT: {
+					Artifact artifact = (Artifact)theEObject;
+					Object result = caseArtifact(artifact);
+					if (result == null) result = caseClassifier(artifact);
+					if (result == null) result = caseDeployedArtifact(artifact);
+					if (result == null) result = caseNamespace(artifact);
+					if (result == null) result = caseType(artifact);
+					if (result == null) result = caseRedefinableElement(artifact);
+					if (result == null) result = caseNamedElement(artifact);
+					if (result == null) result = casePackageableElement(artifact);
+					if (result == null) result = caseTemplateableElement(artifact);
+					if (result == null) result = caseParameterableElement(artifact);
+					if (result == null) result = caseElement(artifact);
+					if (result == null) result = caseEModelElement(artifact);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.MANIFESTATION: {
+					Manifestation manifestation = (Manifestation)theEObject;
+					Object result = caseManifestation(manifestation);
+					if (result == null) result = caseAbstraction(manifestation);
+					if (result == null) result = caseDependency(manifestation);
+					if (result == null) result = casePackageableElement(manifestation);
+					if (result == null) result = caseDirectedRelationship(manifestation);
+					if (result == null) result = caseNamedElement(manifestation);
+					if (result == null) result = caseParameterableElement(manifestation);
+					if (result == null) result = caseRelationship(manifestation);
+					if (result == null) result = caseTemplateableElement(manifestation);
+					if (result == null) result = caseElement(manifestation);
+					if (result == null) result = caseEModelElement(manifestation);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
 				case UML2Package.ACTION: {
 					Action action = (Action)theEObject;
 					Object result = caseAction(action);
@@ -1070,161 +1225,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.INTERFACE: {
-					Interface interface_ = (Interface)theEObject;
-					Object result = caseInterface(interface_);
-					if (result == null) result = caseClassifier(interface_);
-					if (result == null) result = caseNamespace(interface_);
-					if (result == null) result = caseType(interface_);
-					if (result == null) result = caseRedefinableElement(interface_);
-					if (result == null) result = caseNamedElement(interface_);
-					if (result == null) result = casePackageableElement(interface_);
-					if (result == null) result = caseTemplateableElement(interface_);
-					if (result == null) result = caseParameterableElement(interface_);
-					if (result == null) result = caseElement(interface_);
-					if (result == null) result = caseEModelElement(interface_);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.IMPLEMENTATION: {
-					Implementation implementation = (Implementation)theEObject;
-					Object result = caseImplementation(implementation);
-					if (result == null) result = caseRealization(implementation);
-					if (result == null) result = caseAbstraction(implementation);
-					if (result == null) result = caseDependency(implementation);
-					if (result == null) result = casePackageableElement(implementation);
-					if (result == null) result = caseDirectedRelationship(implementation);
-					if (result == null) result = caseNamedElement(implementation);
-					if (result == null) result = caseParameterableElement(implementation);
-					if (result == null) result = caseRelationship(implementation);
-					if (result == null) result = caseTemplateableElement(implementation);
-					if (result == null) result = caseElement(implementation);
-					if (result == null) result = caseEModelElement(implementation);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.ACTOR: {
-					Actor actor = (Actor)theEObject;
-					Object result = caseActor(actor);
-					if (result == null) result = caseClassifier(actor);
-					if (result == null) result = caseNamespace(actor);
-					if (result == null) result = caseType(actor);
-					if (result == null) result = caseRedefinableElement(actor);
-					if (result == null) result = caseNamedElement(actor);
-					if (result == null) result = casePackageableElement(actor);
-					if (result == null) result = caseTemplateableElement(actor);
-					if (result == null) result = caseParameterableElement(actor);
-					if (result == null) result = caseElement(actor);
-					if (result == null) result = caseEModelElement(actor);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.EXTEND: {
-					Extend extend = (Extend)theEObject;
-					Object result = caseExtend(extend);
-					if (result == null) result = caseNamedElement(extend);
-					if (result == null) result = caseDirectedRelationship(extend);
-					if (result == null) result = caseTemplateableElement(extend);
-					if (result == null) result = caseRelationship(extend);
-					if (result == null) result = caseElement(extend);
-					if (result == null) result = caseEModelElement(extend);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.USE_CASE: {
-					UseCase useCase = (UseCase)theEObject;
-					Object result = caseUseCase(useCase);
-					if (result == null) result = caseBehavioredClassifier(useCase);
-					if (result == null) result = caseClassifier(useCase);
-					if (result == null) result = caseNamespace(useCase);
-					if (result == null) result = caseType(useCase);
-					if (result == null) result = caseRedefinableElement(useCase);
-					if (result == null) result = caseNamedElement(useCase);
-					if (result == null) result = casePackageableElement(useCase);
-					if (result == null) result = caseTemplateableElement(useCase);
-					if (result == null) result = caseParameterableElement(useCase);
-					if (result == null) result = caseElement(useCase);
-					if (result == null) result = caseEModelElement(useCase);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.EXTENSION_POINT: {
-					ExtensionPoint extensionPoint = (ExtensionPoint)theEObject;
-					Object result = caseExtensionPoint(extensionPoint);
-					if (result == null) result = caseRedefinableElement(extensionPoint);
-					if (result == null) result = caseNamedElement(extensionPoint);
-					if (result == null) result = caseTemplateableElement(extensionPoint);
-					if (result == null) result = caseElement(extensionPoint);
-					if (result == null) result = caseEModelElement(extensionPoint);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.INCLUDE: {
-					Include include = (Include)theEObject;
-					Object result = caseInclude(include);
-					if (result == null) result = caseNamedElement(include);
-					if (result == null) result = caseDirectedRelationship(include);
-					if (result == null) result = caseTemplateableElement(include);
-					if (result == null) result = caseRelationship(include);
-					if (result == null) result = caseElement(include);
-					if (result == null) result = caseEModelElement(include);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.ARTIFACT: {
-					Artifact artifact = (Artifact)theEObject;
-					Object result = caseArtifact(artifact);
-					if (result == null) result = caseClassifier(artifact);
-					if (result == null) result = caseDeployedArtifact(artifact);
-					if (result == null) result = caseNamespace(artifact);
-					if (result == null) result = caseType(artifact);
-					if (result == null) result = caseRedefinableElement(artifact);
-					if (result == null) result = caseNamedElement(artifact);
-					if (result == null) result = casePackageableElement(artifact);
-					if (result == null) result = caseTemplateableElement(artifact);
-					if (result == null) result = caseParameterableElement(artifact);
-					if (result == null) result = caseElement(artifact);
-					if (result == null) result = caseEModelElement(artifact);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.MANIFESTATION: {
-					Manifestation manifestation = (Manifestation)theEObject;
-					Object result = caseManifestation(manifestation);
-					if (result == null) result = caseAbstraction(manifestation);
-					if (result == null) result = caseDependency(manifestation);
-					if (result == null) result = casePackageableElement(manifestation);
-					if (result == null) result = caseDirectedRelationship(manifestation);
-					if (result == null) result = caseNamedElement(manifestation);
-					if (result == null) result = caseParameterableElement(manifestation);
-					if (result == null) result = caseRelationship(manifestation);
-					if (result == null) result = caseTemplateableElement(manifestation);
-					if (result == null) result = caseElement(manifestation);
-					if (result == null) result = caseEModelElement(manifestation);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CONNECTOR_END: {
-					ConnectorEnd connectorEnd = (ConnectorEnd)theEObject;
-					Object result = caseConnectorEnd(connectorEnd);
-					if (result == null) result = caseMultiplicityElement(connectorEnd);
-					if (result == null) result = caseElement(connectorEnd);
-					if (result == null) result = caseEModelElement(connectorEnd);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CONNECTOR: {
-					Connector connector = (Connector)theEObject;
-					Object result = caseConnector(connector);
-					if (result == null) result = caseFeature(connector);
-					if (result == null) result = caseRedefinableElement(connector);
-					if (result == null) result = caseNamedElement(connector);
-					if (result == null) result = caseTemplateableElement(connector);
-					if (result == null) result = caseElement(connector);
-					if (result == null) result = caseEModelElement(connector);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.COLLABORATION_OCCURRENCE: {
 					CollaborationOccurrence collaborationOccurrence = (CollaborationOccurrence)theEObject;
 					Object result = caseCollaborationOccurrence(collaborationOccurrence);
@@ -1253,88 +1253,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.TEMPLATE_SIGNATURE: {
-					TemplateSignature templateSignature = (TemplateSignature)theEObject;
-					Object result = caseTemplateSignature(templateSignature);
-					if (result == null) result = caseElement(templateSignature);
-					if (result == null) result = caseEModelElement(templateSignature);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.TEMPLATE_PARAMETER: {
-					TemplateParameter templateParameter = (TemplateParameter)theEObject;
-					Object result = caseTemplateParameter(templateParameter);
-					if (result == null) result = caseElement(templateParameter);
-					if (result == null) result = caseEModelElement(templateParameter);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.STRING_EXPRESSION: {
-					StringExpression stringExpression = (StringExpression)theEObject;
-					Object result = caseStringExpression(stringExpression);
-					if (result == null) result = caseTemplateableElement(stringExpression);
-					if (result == null) result = caseElement(stringExpression);
-					if (result == null) result = caseEModelElement(stringExpression);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.TEMPLATE_BINDING: {
-					TemplateBinding templateBinding = (TemplateBinding)theEObject;
-					Object result = caseTemplateBinding(templateBinding);
-					if (result == null) result = caseDirectedRelationship(templateBinding);
-					if (result == null) result = caseRelationship(templateBinding);
-					if (result == null) result = caseElement(templateBinding);
-					if (result == null) result = caseEModelElement(templateBinding);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION: {
-					TemplateParameterSubstitution templateParameterSubstitution = (TemplateParameterSubstitution)theEObject;
-					Object result = caseTemplateParameterSubstitution(templateParameterSubstitution);
-					if (result == null) result = caseElement(templateParameterSubstitution);
-					if (result == null) result = caseEModelElement(templateParameterSubstitution);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.OPERATION_TEMPLATE_PARAMETER: {
-					OperationTemplateParameter operationTemplateParameter = (OperationTemplateParameter)theEObject;
-					Object result = caseOperationTemplateParameter(operationTemplateParameter);
-					if (result == null) result = caseTemplateParameter(operationTemplateParameter);
-					if (result == null) result = caseElement(operationTemplateParameter);
-					if (result == null) result = caseEModelElement(operationTemplateParameter);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CLASSIFIER_TEMPLATE_PARAMETER: {
-					ClassifierTemplateParameter classifierTemplateParameter = (ClassifierTemplateParameter)theEObject;
-					Object result = caseClassifierTemplateParameter(classifierTemplateParameter);
-					if (result == null) result = caseTemplateParameter(classifierTemplateParameter);
-					if (result == null) result = caseElement(classifierTemplateParameter);
-					if (result == null) result = caseEModelElement(classifierTemplateParameter);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.REDEFINABLE_TEMPLATE_SIGNATURE: {
-					RedefinableTemplateSignature redefinableTemplateSignature = (RedefinableTemplateSignature)theEObject;
-					Object result = caseRedefinableTemplateSignature(redefinableTemplateSignature);
-					if (result == null) result = caseRedefinableElement(redefinableTemplateSignature);
-					if (result == null) result = caseTemplateSignature(redefinableTemplateSignature);
-					if (result == null) result = caseNamedElement(redefinableTemplateSignature);
-					if (result == null) result = caseElement(redefinableTemplateSignature);
-					if (result == null) result = caseTemplateableElement(redefinableTemplateSignature);
-					if (result == null) result = caseEModelElement(redefinableTemplateSignature);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER: {
-					ConnectableElementTemplateParameter connectableElementTemplateParameter = (ConnectableElementTemplateParameter)theEObject;
-					Object result = caseConnectableElementTemplateParameter(connectableElementTemplateParameter);
-					if (result == null) result = caseTemplateParameter(connectableElementTemplateParameter);
-					if (result == null) result = caseElement(connectableElementTemplateParameter);
-					if (result == null) result = caseEModelElement(connectableElementTemplateParameter);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.INTERACTION: {
 					Interaction interaction = (Interaction)theEObject;
 					Object result = caseInteraction(interaction);
@@ -1434,77 +1352,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.VARIABLE: {
-					Variable variable = (Variable)theEObject;
-					Object result = caseVariable(variable);
-					if (result == null) result = caseConnectableElement(variable);
-					if (result == null) result = caseTypedElement(variable);
-					if (result == null) result = caseNamedElement(variable);
-					if (result == null) result = caseParameterableElement(variable);
-					if (result == null) result = caseTemplateableElement(variable);
-					if (result == null) result = caseElement(variable);
-					if (result == null) result = caseEModelElement(variable);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.STRUCTURED_ACTIVITY_NODE: {
-					StructuredActivityNode structuredActivityNode = (StructuredActivityNode)theEObject;
-					Object result = caseStructuredActivityNode(structuredActivityNode);
-					if (result == null) result = caseAction(structuredActivityNode);
-					if (result == null) result = caseNamespace(structuredActivityNode);
-					if (result == null) result = caseActivityGroup(structuredActivityNode);
-					if (result == null) result = caseExecutableNode(structuredActivityNode);
-					if (result == null) result = caseNamedElement(structuredActivityNode);
-					if (result == null) result = caseElement(structuredActivityNode);
-					if (result == null) result = caseActivityNode(structuredActivityNode);
-					if (result == null) result = caseTemplateableElement(structuredActivityNode);
-					if (result == null) result = caseEModelElement(structuredActivityNode);
-					if (result == null) result = caseRedefinableElement(structuredActivityNode);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CONDITIONAL_NODE: {
-					ConditionalNode conditionalNode = (ConditionalNode)theEObject;
-					Object result = caseConditionalNode(conditionalNode);
-					if (result == null) result = caseStructuredActivityNode(conditionalNode);
-					if (result == null) result = caseAction(conditionalNode);
-					if (result == null) result = caseNamespace(conditionalNode);
-					if (result == null) result = caseActivityGroup(conditionalNode);
-					if (result == null) result = caseExecutableNode(conditionalNode);
-					if (result == null) result = caseNamedElement(conditionalNode);
-					if (result == null) result = caseElement(conditionalNode);
-					if (result == null) result = caseActivityNode(conditionalNode);
-					if (result == null) result = caseTemplateableElement(conditionalNode);
-					if (result == null) result = caseEModelElement(conditionalNode);
-					if (result == null) result = caseRedefinableElement(conditionalNode);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.CLAUSE: {
-					Clause clause = (Clause)theEObject;
-					Object result = caseClause(clause);
-					if (result == null) result = caseElement(clause);
-					if (result == null) result = caseEModelElement(clause);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.LOOP_NODE: {
-					LoopNode loopNode = (LoopNode)theEObject;
-					Object result = caseLoopNode(loopNode);
-					if (result == null) result = caseStructuredActivityNode(loopNode);
-					if (result == null) result = caseAction(loopNode);
-					if (result == null) result = caseNamespace(loopNode);
-					if (result == null) result = caseActivityGroup(loopNode);
-					if (result == null) result = caseExecutableNode(loopNode);
-					if (result == null) result = caseNamedElement(loopNode);
-					if (result == null) result = caseElement(loopNode);
-					if (result == null) result = caseActivityNode(loopNode);
-					if (result == null) result = caseTemplateableElement(loopNode);
-					if (result == null) result = caseEModelElement(loopNode);
-					if (result == null) result = caseRedefinableElement(loopNode);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.PORT: {
 					Port port = (Port)theEObject;
 					Object result = casePort(port);
@@ -1623,84 +1470,156 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.INTERACTION_OCCURRENCE: {
-					InteractionOccurrence interactionOccurrence = (InteractionOccurrence)theEObject;
-					Object result = caseInteractionOccurrence(interactionOccurrence);
-					if (result == null) result = caseInteractionFragment(interactionOccurrence);
-					if (result == null) result = caseNamedElement(interactionOccurrence);
-					if (result == null) result = caseTemplateableElement(interactionOccurrence);
-					if (result == null) result = caseElement(interactionOccurrence);
-					if (result == null) result = caseEModelElement(interactionOccurrence);
+				case UML2Package.VARIABLE: {
+					Variable variable = (Variable)theEObject;
+					Object result = caseVariable(variable);
+					if (result == null) result = caseConnectableElement(variable);
+					if (result == null) result = caseTypedElement(variable);
+					if (result == null) result = caseNamedElement(variable);
+					if (result == null) result = caseParameterableElement(variable);
+					if (result == null) result = caseTemplateableElement(variable);
+					if (result == null) result = caseElement(variable);
+					if (result == null) result = caseEModelElement(variable);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.GATE: {
-					Gate gate = (Gate)theEObject;
-					Object result = caseGate(gate);
-					if (result == null) result = caseMessageEnd(gate);
-					if (result == null) result = caseNamedElement(gate);
-					if (result == null) result = caseTemplateableElement(gate);
-					if (result == null) result = caseElement(gate);
-					if (result == null) result = caseEModelElement(gate);
+				case UML2Package.STRUCTURED_ACTIVITY_NODE: {
+					StructuredActivityNode structuredActivityNode = (StructuredActivityNode)theEObject;
+					Object result = caseStructuredActivityNode(structuredActivityNode);
+					if (result == null) result = caseAction(structuredActivityNode);
+					if (result == null) result = caseNamespace(structuredActivityNode);
+					if (result == null) result = caseActivityGroup(structuredActivityNode);
+					if (result == null) result = caseExecutableNode(structuredActivityNode);
+					if (result == null) result = caseNamedElement(structuredActivityNode);
+					if (result == null) result = caseElement(structuredActivityNode);
+					if (result == null) result = caseActivityNode(structuredActivityNode);
+					if (result == null) result = caseTemplateableElement(structuredActivityNode);
+					if (result == null) result = caseEModelElement(structuredActivityNode);
+					if (result == null) result = caseRedefinableElement(structuredActivityNode);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.PART_DECOMPOSITION: {
-					PartDecomposition partDecomposition = (PartDecomposition)theEObject;
-					Object result = casePartDecomposition(partDecomposition);
-					if (result == null) result = caseInteractionOccurrence(partDecomposition);
-					if (result == null) result = caseInteractionFragment(partDecomposition);
-					if (result == null) result = caseNamedElement(partDecomposition);
-					if (result == null) result = caseTemplateableElement(partDecomposition);
-					if (result == null) result = caseElement(partDecomposition);
-					if (result == null) result = caseEModelElement(partDecomposition);
+				case UML2Package.CONDITIONAL_NODE: {
+					ConditionalNode conditionalNode = (ConditionalNode)theEObject;
+					Object result = caseConditionalNode(conditionalNode);
+					if (result == null) result = caseStructuredActivityNode(conditionalNode);
+					if (result == null) result = caseAction(conditionalNode);
+					if (result == null) result = caseNamespace(conditionalNode);
+					if (result == null) result = caseActivityGroup(conditionalNode);
+					if (result == null) result = caseExecutableNode(conditionalNode);
+					if (result == null) result = caseNamedElement(conditionalNode);
+					if (result == null) result = caseElement(conditionalNode);
+					if (result == null) result = caseActivityNode(conditionalNode);
+					if (result == null) result = caseTemplateableElement(conditionalNode);
+					if (result == null) result = caseEModelElement(conditionalNode);
+					if (result == null) result = caseRedefinableElement(conditionalNode);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.INTERACTION_OPERAND: {
-					InteractionOperand interactionOperand = (InteractionOperand)theEObject;
-					Object result = caseInteractionOperand(interactionOperand);
-					if (result == null) result = caseNamespace(interactionOperand);
-					if (result == null) result = caseInteractionFragment(interactionOperand);
-					if (result == null) result = caseNamedElement(interactionOperand);
-					if (result == null) result = caseTemplateableElement(interactionOperand);
-					if (result == null) result = caseElement(interactionOperand);
-					if (result == null) result = caseEModelElement(interactionOperand);
+				case UML2Package.CLAUSE: {
+					Clause clause = (Clause)theEObject;
+					Object result = caseClause(clause);
+					if (result == null) result = caseElement(clause);
+					if (result == null) result = caseEModelElement(clause);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.INTERACTION_CONSTRAINT: {
-					InteractionConstraint interactionConstraint = (InteractionConstraint)theEObject;
-					Object result = caseInteractionConstraint(interactionConstraint);
-					if (result == null) result = caseConstraint(interactionConstraint);
-					if (result == null) result = casePackageableElement(interactionConstraint);
-					if (result == null) result = caseNamedElement(interactionConstraint);
-					if (result == null) result = caseParameterableElement(interactionConstraint);
-					if (result == null) result = caseTemplateableElement(interactionConstraint);
-					if (result == null) result = caseElement(interactionConstraint);
-					if (result == null) result = caseEModelElement(interactionConstraint);
+				case UML2Package.LOOP_NODE: {
+					LoopNode loopNode = (LoopNode)theEObject;
+					Object result = caseLoopNode(loopNode);
+					if (result == null) result = caseStructuredActivityNode(loopNode);
+					if (result == null) result = caseAction(loopNode);
+					if (result == null) result = caseNamespace(loopNode);
+					if (result == null) result = caseActivityGroup(loopNode);
+					if (result == null) result = caseExecutableNode(loopNode);
+					if (result == null) result = caseNamedElement(loopNode);
+					if (result == null) result = caseElement(loopNode);
+					if (result == null) result = caseActivityNode(loopNode);
+					if (result == null) result = caseTemplateableElement(loopNode);
+					if (result == null) result = caseEModelElement(loopNode);
+					if (result == null) result = caseRedefinableElement(loopNode);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.COMBINED_FRAGMENT: {
-					CombinedFragment combinedFragment = (CombinedFragment)theEObject;
-					Object result = caseCombinedFragment(combinedFragment);
-					if (result == null) result = caseInteractionFragment(combinedFragment);
-					if (result == null) result = caseNamedElement(combinedFragment);
-					if (result == null) result = caseTemplateableElement(combinedFragment);
-					if (result == null) result = caseElement(combinedFragment);
-					if (result == null) result = caseEModelElement(combinedFragment);
+				case UML2Package.TEMPLATE_SIGNATURE: {
+					TemplateSignature templateSignature = (TemplateSignature)theEObject;
+					Object result = caseTemplateSignature(templateSignature);
+					if (result == null) result = caseElement(templateSignature);
+					if (result == null) result = caseEModelElement(templateSignature);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.CONTINUATION: {
-					Continuation continuation = (Continuation)theEObject;
-					Object result = caseContinuation(continuation);
-					if (result == null) result = caseInteractionFragment(continuation);
-					if (result == null) result = caseNamedElement(continuation);
-					if (result == null) result = caseTemplateableElement(continuation);
-					if (result == null) result = caseElement(continuation);
-					if (result == null) result = caseEModelElement(continuation);
+				case UML2Package.TEMPLATE_PARAMETER: {
+					TemplateParameter templateParameter = (TemplateParameter)theEObject;
+					Object result = caseTemplateParameter(templateParameter);
+					if (result == null) result = caseElement(templateParameter);
+					if (result == null) result = caseEModelElement(templateParameter);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.STRING_EXPRESSION: {
+					StringExpression stringExpression = (StringExpression)theEObject;
+					Object result = caseStringExpression(stringExpression);
+					if (result == null) result = caseTemplateableElement(stringExpression);
+					if (result == null) result = caseElement(stringExpression);
+					if (result == null) result = caseEModelElement(stringExpression);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.TEMPLATE_BINDING: {
+					TemplateBinding templateBinding = (TemplateBinding)theEObject;
+					Object result = caseTemplateBinding(templateBinding);
+					if (result == null) result = caseDirectedRelationship(templateBinding);
+					if (result == null) result = caseRelationship(templateBinding);
+					if (result == null) result = caseElement(templateBinding);
+					if (result == null) result = caseEModelElement(templateBinding);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.TEMPLATE_PARAMETER_SUBSTITUTION: {
+					TemplateParameterSubstitution templateParameterSubstitution = (TemplateParameterSubstitution)theEObject;
+					Object result = caseTemplateParameterSubstitution(templateParameterSubstitution);
+					if (result == null) result = caseElement(templateParameterSubstitution);
+					if (result == null) result = caseEModelElement(templateParameterSubstitution);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.OPERATION_TEMPLATE_PARAMETER: {
+					OperationTemplateParameter operationTemplateParameter = (OperationTemplateParameter)theEObject;
+					Object result = caseOperationTemplateParameter(operationTemplateParameter);
+					if (result == null) result = caseTemplateParameter(operationTemplateParameter);
+					if (result == null) result = caseElement(operationTemplateParameter);
+					if (result == null) result = caseEModelElement(operationTemplateParameter);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CLASSIFIER_TEMPLATE_PARAMETER: {
+					ClassifierTemplateParameter classifierTemplateParameter = (ClassifierTemplateParameter)theEObject;
+					Object result = caseClassifierTemplateParameter(classifierTemplateParameter);
+					if (result == null) result = caseTemplateParameter(classifierTemplateParameter);
+					if (result == null) result = caseElement(classifierTemplateParameter);
+					if (result == null) result = caseEModelElement(classifierTemplateParameter);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.REDEFINABLE_TEMPLATE_SIGNATURE: {
+					RedefinableTemplateSignature redefinableTemplateSignature = (RedefinableTemplateSignature)theEObject;
+					Object result = caseRedefinableTemplateSignature(redefinableTemplateSignature);
+					if (result == null) result = caseRedefinableElement(redefinableTemplateSignature);
+					if (result == null) result = caseTemplateSignature(redefinableTemplateSignature);
+					if (result == null) result = caseNamedElement(redefinableTemplateSignature);
+					if (result == null) result = caseElement(redefinableTemplateSignature);
+					if (result == null) result = caseTemplateableElement(redefinableTemplateSignature);
+					if (result == null) result = caseEModelElement(redefinableTemplateSignature);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CONNECTABLE_ELEMENT_TEMPLATE_PARAMETER: {
+					ConnectableElementTemplateParameter connectableElementTemplateParameter = (ConnectableElementTemplateParameter)theEObject;
+					Object result = caseConnectableElementTemplateParameter(connectableElementTemplateParameter);
+					if (result == null) result = caseTemplateParameter(connectableElementTemplateParameter);
+					if (result == null) result = caseElement(connectableElementTemplateParameter);
+					if (result == null) result = caseEModelElement(connectableElementTemplateParameter);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
@@ -1794,6 +1713,71 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
+				case UML2Package.FORK_NODE: {
+					ForkNode forkNode = (ForkNode)theEObject;
+					Object result = caseForkNode(forkNode);
+					if (result == null) result = caseControlNode(forkNode);
+					if (result == null) result = caseActivityNode(forkNode);
+					if (result == null) result = caseRedefinableElement(forkNode);
+					if (result == null) result = caseNamedElement(forkNode);
+					if (result == null) result = caseTemplateableElement(forkNode);
+					if (result == null) result = caseElement(forkNode);
+					if (result == null) result = caseEModelElement(forkNode);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.JOIN_NODE: {
+					JoinNode joinNode = (JoinNode)theEObject;
+					Object result = caseJoinNode(joinNode);
+					if (result == null) result = caseControlNode(joinNode);
+					if (result == null) result = caseActivityNode(joinNode);
+					if (result == null) result = caseRedefinableElement(joinNode);
+					if (result == null) result = caseNamedElement(joinNode);
+					if (result == null) result = caseTemplateableElement(joinNode);
+					if (result == null) result = caseElement(joinNode);
+					if (result == null) result = caseEModelElement(joinNode);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.FLOW_FINAL_NODE: {
+					FlowFinalNode flowFinalNode = (FlowFinalNode)theEObject;
+					Object result = caseFlowFinalNode(flowFinalNode);
+					if (result == null) result = caseFinalNode(flowFinalNode);
+					if (result == null) result = caseControlNode(flowFinalNode);
+					if (result == null) result = caseActivityNode(flowFinalNode);
+					if (result == null) result = caseRedefinableElement(flowFinalNode);
+					if (result == null) result = caseNamedElement(flowFinalNode);
+					if (result == null) result = caseTemplateableElement(flowFinalNode);
+					if (result == null) result = caseElement(flowFinalNode);
+					if (result == null) result = caseEModelElement(flowFinalNode);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CENTRAL_BUFFER_NODE: {
+					CentralBufferNode centralBufferNode = (CentralBufferNode)theEObject;
+					Object result = caseCentralBufferNode(centralBufferNode);
+					if (result == null) result = caseObjectNode(centralBufferNode);
+					if (result == null) result = caseActivityNode(centralBufferNode);
+					if (result == null) result = caseTypedElement(centralBufferNode);
+					if (result == null) result = caseRedefinableElement(centralBufferNode);
+					if (result == null) result = caseNamedElement(centralBufferNode);
+					if (result == null) result = caseTemplateableElement(centralBufferNode);
+					if (result == null) result = caseElement(centralBufferNode);
+					if (result == null) result = caseEModelElement(centralBufferNode);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.ACTIVITY_PARTITION: {
+					ActivityPartition activityPartition = (ActivityPartition)theEObject;
+					Object result = caseActivityPartition(activityPartition);
+					if (result == null) result = caseNamedElement(activityPartition);
+					if (result == null) result = caseActivityGroup(activityPartition);
+					if (result == null) result = caseTemplateableElement(activityPartition);
+					if (result == null) result = caseElement(activityPartition);
+					if (result == null) result = caseEModelElement(activityPartition);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
 				case UML2Package.CREATE_OBJECT_ACTION: {
 					CreateObjectAction createObjectAction = (CreateObjectAction)theEObject;
 					Object result = caseCreateObjectAction(createObjectAction);
@@ -2151,68 +2135,84 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.FORK_NODE: {
-					ForkNode forkNode = (ForkNode)theEObject;
-					Object result = caseForkNode(forkNode);
-					if (result == null) result = caseControlNode(forkNode);
-					if (result == null) result = caseActivityNode(forkNode);
-					if (result == null) result = caseRedefinableElement(forkNode);
-					if (result == null) result = caseNamedElement(forkNode);
-					if (result == null) result = caseTemplateableElement(forkNode);
-					if (result == null) result = caseElement(forkNode);
-					if (result == null) result = caseEModelElement(forkNode);
+				case UML2Package.INTERACTION_OCCURRENCE: {
+					InteractionOccurrence interactionOccurrence = (InteractionOccurrence)theEObject;
+					Object result = caseInteractionOccurrence(interactionOccurrence);
+					if (result == null) result = caseInteractionFragment(interactionOccurrence);
+					if (result == null) result = caseNamedElement(interactionOccurrence);
+					if (result == null) result = caseTemplateableElement(interactionOccurrence);
+					if (result == null) result = caseElement(interactionOccurrence);
+					if (result == null) result = caseEModelElement(interactionOccurrence);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.JOIN_NODE: {
-					JoinNode joinNode = (JoinNode)theEObject;
-					Object result = caseJoinNode(joinNode);
-					if (result == null) result = caseControlNode(joinNode);
-					if (result == null) result = caseActivityNode(joinNode);
-					if (result == null) result = caseRedefinableElement(joinNode);
-					if (result == null) result = caseNamedElement(joinNode);
-					if (result == null) result = caseTemplateableElement(joinNode);
-					if (result == null) result = caseElement(joinNode);
-					if (result == null) result = caseEModelElement(joinNode);
+				case UML2Package.GATE: {
+					Gate gate = (Gate)theEObject;
+					Object result = caseGate(gate);
+					if (result == null) result = caseMessageEnd(gate);
+					if (result == null) result = caseNamedElement(gate);
+					if (result == null) result = caseTemplateableElement(gate);
+					if (result == null) result = caseElement(gate);
+					if (result == null) result = caseEModelElement(gate);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.FLOW_FINAL_NODE: {
-					FlowFinalNode flowFinalNode = (FlowFinalNode)theEObject;
-					Object result = caseFlowFinalNode(flowFinalNode);
-					if (result == null) result = caseFinalNode(flowFinalNode);
-					if (result == null) result = caseControlNode(flowFinalNode);
-					if (result == null) result = caseActivityNode(flowFinalNode);
-					if (result == null) result = caseRedefinableElement(flowFinalNode);
-					if (result == null) result = caseNamedElement(flowFinalNode);
-					if (result == null) result = caseTemplateableElement(flowFinalNode);
-					if (result == null) result = caseElement(flowFinalNode);
-					if (result == null) result = caseEModelElement(flowFinalNode);
+				case UML2Package.PART_DECOMPOSITION: {
+					PartDecomposition partDecomposition = (PartDecomposition)theEObject;
+					Object result = casePartDecomposition(partDecomposition);
+					if (result == null) result = caseInteractionOccurrence(partDecomposition);
+					if (result == null) result = caseInteractionFragment(partDecomposition);
+					if (result == null) result = caseNamedElement(partDecomposition);
+					if (result == null) result = caseTemplateableElement(partDecomposition);
+					if (result == null) result = caseElement(partDecomposition);
+					if (result == null) result = caseEModelElement(partDecomposition);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.CENTRAL_BUFFER_NODE: {
-					CentralBufferNode centralBufferNode = (CentralBufferNode)theEObject;
-					Object result = caseCentralBufferNode(centralBufferNode);
-					if (result == null) result = caseObjectNode(centralBufferNode);
-					if (result == null) result = caseActivityNode(centralBufferNode);
-					if (result == null) result = caseTypedElement(centralBufferNode);
-					if (result == null) result = caseRedefinableElement(centralBufferNode);
-					if (result == null) result = caseNamedElement(centralBufferNode);
-					if (result == null) result = caseTemplateableElement(centralBufferNode);
-					if (result == null) result = caseElement(centralBufferNode);
-					if (result == null) result = caseEModelElement(centralBufferNode);
+				case UML2Package.INTERACTION_OPERAND: {
+					InteractionOperand interactionOperand = (InteractionOperand)theEObject;
+					Object result = caseInteractionOperand(interactionOperand);
+					if (result == null) result = caseNamespace(interactionOperand);
+					if (result == null) result = caseInteractionFragment(interactionOperand);
+					if (result == null) result = caseNamedElement(interactionOperand);
+					if (result == null) result = caseTemplateableElement(interactionOperand);
+					if (result == null) result = caseElement(interactionOperand);
+					if (result == null) result = caseEModelElement(interactionOperand);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.ACTIVITY_PARTITION: {
-					ActivityPartition activityPartition = (ActivityPartition)theEObject;
-					Object result = caseActivityPartition(activityPartition);
-					if (result == null) result = caseNamedElement(activityPartition);
-					if (result == null) result = caseActivityGroup(activityPartition);
-					if (result == null) result = caseTemplateableElement(activityPartition);
-					if (result == null) result = caseElement(activityPartition);
-					if (result == null) result = caseEModelElement(activityPartition);
+				case UML2Package.INTERACTION_CONSTRAINT: {
+					InteractionConstraint interactionConstraint = (InteractionConstraint)theEObject;
+					Object result = caseInteractionConstraint(interactionConstraint);
+					if (result == null) result = caseConstraint(interactionConstraint);
+					if (result == null) result = casePackageableElement(interactionConstraint);
+					if (result == null) result = caseNamedElement(interactionConstraint);
+					if (result == null) result = caseParameterableElement(interactionConstraint);
+					if (result == null) result = caseTemplateableElement(interactionConstraint);
+					if (result == null) result = caseElement(interactionConstraint);
+					if (result == null) result = caseEModelElement(interactionConstraint);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.COMBINED_FRAGMENT: {
+					CombinedFragment combinedFragment = (CombinedFragment)theEObject;
+					Object result = caseCombinedFragment(combinedFragment);
+					if (result == null) result = caseInteractionFragment(combinedFragment);
+					if (result == null) result = caseNamedElement(combinedFragment);
+					if (result == null) result = caseTemplateableElement(combinedFragment);
+					if (result == null) result = caseElement(combinedFragment);
+					if (result == null) result = caseEModelElement(combinedFragment);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.CONTINUATION: {
+					Continuation continuation = (Continuation)theEObject;
+					Object result = caseContinuation(continuation);
+					if (result == null) result = caseInteractionFragment(continuation);
+					if (result == null) result = caseNamedElement(continuation);
+					if (result == null) result = caseTemplateableElement(continuation);
+					if (result == null) result = caseElement(continuation);
+					if (result == null) result = caseEModelElement(continuation);
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
@@ -2299,6 +2299,26 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
+				case UML2Package.COMPONENT: {
+					Component component = (Component)theEObject;
+					Object result = caseComponent(component);
+					if (result == null) result = caseClass(component);
+					if (result == null) result = caseEncapsulatedClassifier(component);
+					if (result == null) result = caseBehavioredClassifier(component);
+					if (result == null) result = caseStructuredClassifier(component);
+					if (result == null) result = caseClassifier(component);
+					if (result == null) result = caseNamespace(component);
+					if (result == null) result = caseType(component);
+					if (result == null) result = caseRedefinableElement(component);
+					if (result == null) result = caseNamedElement(component);
+					if (result == null) result = casePackageableElement(component);
+					if (result == null) result = caseTemplateableElement(component);
+					if (result == null) result = caseParameterableElement(component);
+					if (result == null) result = caseElement(component);
+					if (result == null) result = caseEModelElement(component);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
 				case UML2Package.TIME_EXPRESSION: {
 					TimeExpression timeExpression = (TimeExpression)theEObject;
 					Object result = caseTimeExpression(timeExpression);
@@ -2439,40 +2459,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.DATA_STORE_NODE: {
-					DataStoreNode dataStoreNode = (DataStoreNode)theEObject;
-					Object result = caseDataStoreNode(dataStoreNode);
-					if (result == null) result = caseCentralBufferNode(dataStoreNode);
-					if (result == null) result = caseObjectNode(dataStoreNode);
-					if (result == null) result = caseActivityNode(dataStoreNode);
-					if (result == null) result = caseTypedElement(dataStoreNode);
-					if (result == null) result = caseRedefinableElement(dataStoreNode);
-					if (result == null) result = caseNamedElement(dataStoreNode);
-					if (result == null) result = caseTemplateableElement(dataStoreNode);
-					if (result == null) result = caseElement(dataStoreNode);
-					if (result == null) result = caseEModelElement(dataStoreNode);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.INTERRUPTIBLE_ACTIVITY_REGION: {
-					InterruptibleActivityRegion interruptibleActivityRegion = (InterruptibleActivityRegion)theEObject;
-					Object result = caseInterruptibleActivityRegion(interruptibleActivityRegion);
-					if (result == null) result = caseActivityGroup(interruptibleActivityRegion);
-					if (result == null) result = caseElement(interruptibleActivityRegion);
-					if (result == null) result = caseEModelElement(interruptibleActivityRegion);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
-				case UML2Package.PARAMETER_SET: {
-					ParameterSet parameterSet = (ParameterSet)theEObject;
-					Object result = caseParameterSet(parameterSet);
-					if (result == null) result = caseNamedElement(parameterSet);
-					if (result == null) result = caseTemplateableElement(parameterSet);
-					if (result == null) result = caseElement(parameterSet);
-					if (result == null) result = caseEModelElement(parameterSet);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.READ_EXTENT_ACTION: {
 					ReadExtentAction readExtentAction = (ReadExtentAction)theEObject;
 					Object result = caseReadExtentAction(readExtentAction);
@@ -2639,26 +2625,6 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
-				case UML2Package.COMPONENT: {
-					Component component = (Component)theEObject;
-					Object result = caseComponent(component);
-					if (result == null) result = caseClass(component);
-					if (result == null) result = caseEncapsulatedClassifier(component);
-					if (result == null) result = caseBehavioredClassifier(component);
-					if (result == null) result = caseStructuredClassifier(component);
-					if (result == null) result = caseClassifier(component);
-					if (result == null) result = caseNamespace(component);
-					if (result == null) result = caseType(component);
-					if (result == null) result = caseRedefinableElement(component);
-					if (result == null) result = caseNamedElement(component);
-					if (result == null) result = casePackageableElement(component);
-					if (result == null) result = caseTemplateableElement(component);
-					if (result == null) result = caseParameterableElement(component);
-					if (result == null) result = caseElement(component);
-					if (result == null) result = caseEModelElement(component);
-					if (result == null) result = defaultCase(theEObject);
-					return result;
-				}
 				case UML2Package.DEPLOYMENT: {
 					Deployment deployment = (Deployment)theEObject;
 					Object result = caseDeployment(deployment);
@@ -2757,6 +2723,40 @@
 					if (result == null) result = defaultCase(theEObject);
 					return result;
 				}
+				case UML2Package.DATA_STORE_NODE: {
+					DataStoreNode dataStoreNode = (DataStoreNode)theEObject;
+					Object result = caseDataStoreNode(dataStoreNode);
+					if (result == null) result = caseCentralBufferNode(dataStoreNode);
+					if (result == null) result = caseObjectNode(dataStoreNode);
+					if (result == null) result = caseActivityNode(dataStoreNode);
+					if (result == null) result = caseTypedElement(dataStoreNode);
+					if (result == null) result = caseRedefinableElement(dataStoreNode);
+					if (result == null) result = caseNamedElement(dataStoreNode);
+					if (result == null) result = caseTemplateableElement(dataStoreNode);
+					if (result == null) result = caseElement(dataStoreNode);
+					if (result == null) result = caseEModelElement(dataStoreNode);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.INTERRUPTIBLE_ACTIVITY_REGION: {
+					InterruptibleActivityRegion interruptibleActivityRegion = (InterruptibleActivityRegion)theEObject;
+					Object result = caseInterruptibleActivityRegion(interruptibleActivityRegion);
+					if (result == null) result = caseActivityGroup(interruptibleActivityRegion);
+					if (result == null) result = caseElement(interruptibleActivityRegion);
+					if (result == null) result = caseEModelElement(interruptibleActivityRegion);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
+				case UML2Package.PARAMETER_SET: {
+					ParameterSet parameterSet = (ParameterSet)theEObject;
+					Object result = caseParameterSet(parameterSet);
+					if (result == null) result = caseNamedElement(parameterSet);
+					if (result == null) result = caseTemplateableElement(parameterSet);
+					if (result == null) result = caseElement(parameterSet);
+					if (result == null) result = caseEModelElement(parameterSet);
+					if (result == null) result = defaultCase(theEObject);
+					return result;
+				}
 				case UML2Package.DEPLOYMENT_SPECIFICATION: {
 					DeploymentSpecification deploymentSpecification = (DeploymentSpecification)theEObject;
 					Object result = caseDeploymentSpecification(deploymentSpecification);
diff --git a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/edit/tests/AllTests.java b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/edit/tests/AllTests.java
index 3d9124d..9b3e64e 100644
--- a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/edit/tests/AllTests.java
+++ b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/edit/tests/AllTests.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AllTests.java,v 1.1 2004/04/29 14:43:45 khussey Exp $
+ * $Id: AllTests.java,v 1.2 2004/04/30 17:18:14 khussey Exp $
  */
 package org.eclipse.uml2.edit.tests;
 
@@ -126,76 +126,71 @@
 	 * @generated
 	 */
 	public static Test suite() {
-		TestSuite suite = new TestSuite("UML2 Edit Tests"); //$NON-NLS-1$                    
+		TestSuite suite = new TestSuite("UML2 Edit Tests"); //$NON-NLS-1$                                
+		suite.addTestSuite(OpaqueExpressionItemProviderTest.class);        
+		suite.addTestSuite(ExpressionItemProviderTest.class);    
 		suite.addTestSuite(ClassItemProviderTest.class);        
 		suite.addTestSuite(PropertyItemProviderTest.class);    
 		suite.addTestSuite(OperationItemProviderTest.class);        
-		suite.addTestSuite(ParameterItemProviderTest.class);        
+		suite.addTestSuite(ParameterItemProviderTest.class);    
 		suite.addTestSuite(PackageItemProviderTest.class);    
 		suite.addTestSuite(EnumerationItemProviderTest.class);    
 		suite.addTestSuite(DataTypeItemProviderTest.class);    
 		suite.addTestSuite(EnumerationLiteralItemProviderTest.class);    
-		suite.addTestSuite(PrimitiveTypeItemProviderTest.class);            
-		suite.addTestSuite(OpaqueExpressionItemProviderTest.class);        
-		suite.addTestSuite(ExpressionItemProviderTest.class);            
+		suite.addTestSuite(PrimitiveTypeItemProviderTest.class);    
+		suite.addTestSuite(ConstraintItemProviderTest.class);    
 		suite.addTestSuite(LiteralBooleanItemProviderTest.class);        
 		suite.addTestSuite(LiteralStringItemProviderTest.class);    
 		suite.addTestSuite(LiteralNullItemProviderTest.class);    
 		suite.addTestSuite(LiteralIntegerItemProviderTest.class);    
-		suite.addTestSuite(LiteralUnlimitedNaturalItemProviderTest.class);    
-		suite.addTestSuite(ConstraintItemProviderTest.class);            
+		suite.addTestSuite(LiteralUnlimitedNaturalItemProviderTest.class);                            
 		suite.addTestSuite(InstanceSpecificationItemProviderTest.class);        
-		suite.addTestSuite(InstanceValueItemProviderTest.class);                        
+		suite.addTestSuite(InstanceValueItemProviderTest.class);                
 		suite.addTestSuite(AssociationItemProviderTest.class);        
 		suite.addTestSuite(StereotypeItemProviderTest.class);    
 		suite.addTestSuite(ProfileItemProviderTest.class);    
 		suite.addTestSuite(ProfileApplicationItemProviderTest.class);    
 		suite.addTestSuite(ExtensionItemProviderTest.class);    
 		suite.addTestSuite(ExtensionEndItemProviderTest.class);    
-		suite.addTestSuite(ModelItemProviderTest.class);    
 		suite.addTestSuite(PermissionItemProviderTest.class);    
 		suite.addTestSuite(DependencyItemProviderTest.class);    
 		suite.addTestSuite(UsageItemProviderTest.class);    
 		suite.addTestSuite(AbstractionItemProviderTest.class);    
 		suite.addTestSuite(RealizationItemProviderTest.class);    
-		suite.addTestSuite(SubstitutionItemProviderTest.class);    
-		suite.addTestSuite(GeneralizationSetItemProviderTest.class);    
-		suite.addTestSuite(InformationItemItemProviderTest.class);        
-		suite.addTestSuite(AssociationClassItemProviderTest.class);            
+		suite.addTestSuite(SubstitutionItemProviderTest.class);            
 		suite.addTestSuite(ActivityItemProviderTest.class);    
-		suite.addTestSuite(ArtifactItemProviderTest.class);    
-		suite.addTestSuite(ManifestationItemProviderTest.class);    
+		suite.addTestSuite(AssociationClassItemProviderTest.class);    
+		suite.addTestSuite(ModelItemProviderTest.class);    
+		suite.addTestSuite(InformationItemItemProviderTest.class);        
+		suite.addTestSuite(GeneralizationSetItemProviderTest.class);                    
+		suite.addTestSuite(InterfaceItemProviderTest.class);    
+		suite.addTestSuite(ImplementationItemProviderTest.class);    
 		suite.addTestSuite(ActorItemProviderTest.class);        
 		suite.addTestSuite(UseCaseItemProviderTest.class);            
-		suite.addTestSuite(InterfaceItemProviderTest.class);    
-		suite.addTestSuite(ImplementationItemProviderTest.class);                                                                                                    
+		suite.addTestSuite(ArtifactItemProviderTest.class);    
+		suite.addTestSuite(ManifestationItemProviderTest.class);                                                                                    
 		suite.addTestSuite(CollaborationItemProviderTest.class);    
-		suite.addTestSuite(VariableItemProviderTest.class);                    
-		suite.addTestSuite(PortItemProviderTest.class);        
 		suite.addTestSuite(InteractionItemProviderTest.class);                                        
+		suite.addTestSuite(PortItemProviderTest.class);        
 		suite.addTestSuite(CallTriggerItemProviderTest.class);        
 		suite.addTestSuite(ChangeTriggerItemProviderTest.class);            
 		suite.addTestSuite(SignalItemProviderTest.class);    
 		suite.addTestSuite(SignalTriggerItemProviderTest.class);    
 		suite.addTestSuite(TimeTriggerItemProviderTest.class);    
 		suite.addTestSuite(AnyTriggerItemProviderTest.class);    
+		suite.addTestSuite(VariableItemProviderTest.class);                    
 		suite.addTestSuite(TemplateSignatureItemProviderTest.class);    
 		suite.addTestSuite(TemplateParameterItemProviderTest.class);                    
 		suite.addTestSuite(TemplateParameterSubstitutionItemProviderTest.class);    
 		suite.addTestSuite(OperationTemplateParameterItemProviderTest.class);    
 		suite.addTestSuite(ClassifierTemplateParameterItemProviderTest.class);        
 		suite.addTestSuite(RedefinableTemplateSignatureItemProviderTest.class);        
-		suite.addTestSuite(ConnectableElementTemplateParameterItemProviderTest.class);                    
-		suite.addTestSuite(InteractionConstraintItemProviderTest.class);            
-		suite.addTestSuite(StateMachineItemProviderTest.class);                                                                                                                                                                                                    
-		suite.addTestSuite(ComponentItemProviderTest.class);    
-		suite.addTestSuite(DeploymentItemProviderTest.class);            
-		suite.addTestSuite(NodeItemProviderTest.class);    
-		suite.addTestSuite(DeviceItemProviderTest.class);    
-		suite.addTestSuite(ExecutionEnvironmentItemProviderTest.class);    
-		suite.addTestSuite(CommunicationPathItemProviderTest.class);        
+		suite.addTestSuite(ConnectableElementTemplateParameterItemProviderTest.class);    
+		suite.addTestSuite(StateMachineItemProviderTest.class);                                                                                                                                                                                                        
+		suite.addTestSuite(InteractionConstraintItemProviderTest.class);                            
 		suite.addTestSuite(ProtocolStateMachineItemProviderTest.class);    
-		suite.addTestSuite(ProtocolTransitionItemProviderTest.class);                                                                
+		suite.addTestSuite(ProtocolTransitionItemProviderTest.class);    
+		suite.addTestSuite(ComponentItemProviderTest.class);    
 		suite.addTestSuite(TimeExpressionItemProviderTest.class);    
 		suite.addTestSuite(DurationItemProviderTest.class);        
 		suite.addTestSuite(DurationIntervalItemProviderTest.class);    
@@ -203,7 +198,12 @@
 		suite.addTestSuite(TimeConstraintItemProviderTest.class);    
 		suite.addTestSuite(IntervalConstraintItemProviderTest.class);    
 		suite.addTestSuite(TimeIntervalItemProviderTest.class);        
-		suite.addTestSuite(DurationConstraintItemProviderTest.class);    
+		suite.addTestSuite(DurationConstraintItemProviderTest.class);                                                    
+		suite.addTestSuite(DeploymentItemProviderTest.class);            
+		suite.addTestSuite(NodeItemProviderTest.class);    
+		suite.addTestSuite(DeviceItemProviderTest.class);    
+		suite.addTestSuite(ExecutionEnvironmentItemProviderTest.class);    
+		suite.addTestSuite(CommunicationPathItemProviderTest.class);                
 		suite.addTestSuite(DeploymentSpecificationItemProviderTest.class);
 		return suite;
 	}
diff --git a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/ProtocolTransitionItemProviderTest.java b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/ProtocolTransitionItemProviderTest.java
index c2030d3..0318c8b 100644
--- a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/ProtocolTransitionItemProviderTest.java
+++ b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/ProtocolTransitionItemProviderTest.java
@@ -8,14 +8,18 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: ProtocolTransitionItemProviderTest.java,v 1.1 2004/04/29 14:43:45 khussey Exp $
+ * $Id: ProtocolTransitionItemProviderTest.java,v 1.2 2004/04/30 17:18:14 khussey Exp $
  */
 package org.eclipse.uml2.provider.tests;
 
 import junit.textui.TestRunner;
 
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.uml2.Constraint;
 import org.eclipse.uml2.ProtocolTransition;
 import org.eclipse.uml2.UML2Factory;
+import org.eclipse.uml2.UML2Package;
 
 /**
  * <!-- begin-user-doc -->
@@ -81,7 +85,49 @@
 	 * @generated
 	 */
 	public void testCreateSetCommand() {
-		// TODO: implement this command creation test method
+		
+		// test PROTOCOL_TRANSITION__PRE_CONDITION subset...
+		Constraint constraint = UML2Factory.eINSTANCE.createConstraint();
+		
+		Command command = SetCommand.create(getEditingDomain(), getModelObject(), UML2Package.eINSTANCE.getProtocolTransition_PreCondition(), constraint);
+		
+		getCommandStack().execute(command);
+		
+		assertSame(constraint, getModelObject().getPreCondition());
+		assertSame(getModelObject().getPreCondition(), getModelObject().getGuard());
+		
+		getCommandStack().undo();
+		
+		assertNotSame(constraint, getModelObject().getPreCondition());
+		assertSame(getModelObject().getPreCondition(), getModelObject().getGuard());
+		
+		getCommandStack().redo();
+		
+		assertSame(constraint, getModelObject().getPreCondition());
+		assertSame(getModelObject().getPreCondition(), getModelObject().getGuard());
+		
+		// test PROTOCOL_TRANSITION__GUARD superset...
+		Constraint oldConstraint = UML2Factory.eINSTANCE.createConstraint();
+		Constraint newConstraint = UML2Factory.eINSTANCE.createConstraint();
+		
+		getModelObject().setPreCondition(oldConstraint);
+		
+		command = SetCommand.create(getEditingDomain(), getModelObject(), UML2Package.eINSTANCE.getTransition_Guard(), newConstraint);
+		
+		getCommandStack().execute(command);
+		
+		assertSame(newConstraint, getModelObject().getGuard());
+		assertSame(null, getModelObject().getPreCondition());
+		
+		getCommandStack().undo();
+		
+		assertSame(oldConstraint, getModelObject().getGuard());
+		assertSame(oldConstraint, getModelObject().getPreCondition());
+		
+		getCommandStack().redo();
+		
+		assertSame(newConstraint, getModelObject().getGuard());
+		assertSame(null, getModelObject().getPreCondition());
 	}
 
 } //ProtocolTransitionItemProviderTest
diff --git a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/TemplateParameterSubstitutionItemProviderTest.java b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/TemplateParameterSubstitutionItemProviderTest.java
index 96081cc..6fa26de 100644
--- a/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/TemplateParameterSubstitutionItemProviderTest.java
+++ b/deprecated/tests/org.eclipse.uml2.edit.tests/src/org/eclipse/uml2/provider/tests/TemplateParameterSubstitutionItemProviderTest.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionItemProviderTest.java,v 1.1 2004/04/29 14:43:45 khussey Exp $
+ * $Id: TemplateParameterSubstitutionItemProviderTest.java,v 1.2 2004/04/30 17:18:14 khussey Exp $
  */
 package org.eclipse.uml2.provider.tests;
 
@@ -19,9 +19,10 @@
 
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.edit.command.AddCommand;
+import org.eclipse.emf.edit.command.CommandParameter;
 import org.eclipse.emf.edit.command.RemoveCommand;
 import org.eclipse.emf.edit.command.ReplaceCommand;
-import org.eclipse.emf.edit.command.SetCommand;
 import org.eclipse.uml2.ParameterableElement;
 import org.eclipse.uml2.TemplateParameterSubstitution;
 import org.eclipse.uml2.UML2Factory;
@@ -84,6 +85,44 @@
 	}
 
 	/**
+	 * Tests the '{@link org.eclipse.uml2.provider.TemplateParameterSubstitutionItemProvider#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int) <em>Create Add Command</em>}' method.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.uml2.provider.TemplateParameterSubstitutionItemProvider#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+	 * @generated NOT
+	 */
+	public void testCreateAddCommand() {
+		
+		// test TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL subset...
+		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
+			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
+			
+			Command command =
+				AddCommand.create(
+						getEditingDomain(),
+						getModelObject(),
+						UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+						Collections.singleton(parameterableElement),
+						CommandParameter.NO_INDEX);
+			
+			getCommandStack().execute(command);
+			
+			assertTrue(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertTrue(getModelObject().getActuals().contains(parameterableElement));
+			
+			getCommandStack().undo();
+			
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertFalse(getModelObject().getActuals().contains(parameterableElement));
+			
+			getCommandStack().redo();
+			
+			assertTrue(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertTrue(getModelObject().getActuals().contains(parameterableElement));
+		}
+	}
+
+	/**
 	 * Tests the '{@link org.eclipse.uml2.provider.TemplateParameterSubstitutionItemProvider#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EReference, java.util.Collection) <em>Create Remove Command</em>}' method.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -95,30 +134,26 @@
 		// test TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL superset...
 		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
 			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
-	
-			getModelObject().setOwnedActual(parameterableElement);
-	
+			
+			getModelObject().getOwnedActuals().add(parameterableElement);
+			
 			Command command =
-				RemoveCommand.create(
-					getEditingDomain(),
-					getModelObject(),
-					UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual(),
-					Collections.singleton(parameterableElement));
-	
+				RemoveCommand.create(getEditingDomain(), getModelObject(), UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual(), Collections.singleton(parameterableElement));
+			
 			getCommandStack().execute(command);
-	
+			
 			assertFalse(getModelObject().getActuals().contains(parameterableElement));
-			assertNotSame(parameterableElement, getModelObject().getOwnedActual());
-	
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
+			
 			getCommandStack().undo();
-	
+			
 			assertTrue(getModelObject().getActuals().contains(parameterableElement));
-			assertSame(parameterableElement, getModelObject().getOwnedActual());
-	
+			assertTrue(getModelObject().getOwnedActuals().contains(parameterableElement));
+			
 			getCommandStack().redo();
-	
+			
 			assertFalse(getModelObject().getActuals().contains(parameterableElement));
-			assertNotSame(parameterableElement, getModelObject().getOwnedActual());
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
 		}
 	}
 
@@ -131,72 +166,74 @@
 	 */
 	public void testCreateReplaceCommand() {
 		
+		// test TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL subset...
+		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
+			EClass eClass = (EClass) eAllSubClasses.next();
+			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create(eClass);
+			ParameterableElement replacementParameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create(eClass);
+			
+			getModelObject().getOwnedActuals().add(parameterableElement);
+			
+			Command command =
+				ReplaceCommand.create(
+						getEditingDomain(),
+						getModelObject(),
+						UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(),
+						parameterableElement,
+						Collections.singleton(replacementParameterableElement));
+			
+			getCommandStack().execute(command);
+			
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertTrue(getModelObject().getOwnedActuals().contains(replacementParameterableElement));
+			assertTrue(getModelObject().getActuals().contains(replacementParameterableElement));
+			
+			getCommandStack().undo();
+			
+			assertTrue(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertFalse(getModelObject().getOwnedActuals().contains(replacementParameterableElement));
+			assertFalse(getModelObject().getActuals().contains(replacementParameterableElement));
+			
+			getCommandStack().redo();
+			
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
+			assertTrue(getModelObject().getOwnedActuals().contains(replacementParameterableElement));
+			assertTrue(getModelObject().getActuals().contains(replacementParameterableElement));
+		}
+		
 		// test TEMPLATE_PARAMETER_SUBSTITUTION__ACTUAL superset...
 		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
 			EClass eClass = (EClass) eAllSubClasses.next();
 			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create(eClass);
 			ParameterableElement replacementParameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create(eClass);
-	
-			getModelObject().setOwnedActual(parameterableElement);
-	
+			
+			getModelObject().getOwnedActuals().add(parameterableElement);
+			
 			Command command =
 				ReplaceCommand.create(
-					getEditingDomain(),
-					getModelObject(),
-					UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual(),
-					parameterableElement,
-					Collections.singleton(replacementParameterableElement));
-	
+						getEditingDomain(),
+						getModelObject(),
+						UML2Package.eINSTANCE.getTemplateParameterSubstitution_Actual(),
+						parameterableElement,
+						Collections.singleton(replacementParameterableElement));
+			
 			getCommandStack().execute(command);
-	
+			
 			assertFalse(getModelObject().getActuals().contains(parameterableElement));
 			assertTrue(getModelObject().getActuals().contains(replacementParameterableElement));
-			assertNotSame(parameterableElement, getModelObject().getOwnedActual());
-	
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
+			
 			getCommandStack().undo();
-	
+			
 			assertTrue(getModelObject().getActuals().contains(parameterableElement));
 			assertFalse(getModelObject().getActuals().contains(replacementParameterableElement));
-			assertSame(parameterableElement, getModelObject().getOwnedActual());
-	
+			assertTrue(getModelObject().getOwnedActuals().contains(parameterableElement));
+			
 			getCommandStack().redo();
-	
+			
 			assertFalse(getModelObject().getActuals().contains(parameterableElement));
 			assertTrue(getModelObject().getActuals().contains(replacementParameterableElement));
-			assertNotSame(parameterableElement, getModelObject().getOwnedActual());
-		}
-	}
-
-	/**
-	 * Tests the '{@link org.eclipse.uml2.provider.TemplateParameterSubstitutionItemProvider#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) <em>Create Set Command</em>}' method.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.uml2.provider.TemplateParameterSubstitutionItemProvider#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object)
-	 * @generated NOT
-	 */
-	public void testCreateSetCommand() {
-		
-		// test TEMPLATE_PARAMETER_SUBSTITUTION__OWNED_ACTUAL subset...
-		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
-			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
-	
-			Command command =
-				SetCommand.create(getEditingDomain(), getModelObject(), UML2Package.eINSTANCE.getTemplateParameterSubstitution_OwnedActual(), parameterableElement);
-	
-			getCommandStack().execute(command);
-	
-			assertSame(parameterableElement, getModelObject().getOwnedActual());
-			assertTrue(getModelObject().getActuals().contains(parameterableElement));
-	
-			getCommandStack().undo();
-	
-			assertNotSame(parameterableElement, getModelObject().getOwnedActual());
-			assertFalse(getModelObject().getActuals().contains(parameterableElement));
-	
-			getCommandStack().redo();
-	
-			assertSame(parameterableElement, getModelObject().getOwnedActual());
-			assertTrue(getModelObject().getActuals().contains(parameterableElement));
+			assertFalse(getModelObject().getOwnedActuals().contains(parameterableElement));
 		}
 	}
 
diff --git a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/TemplateParameterSubstitutionImplTest.java b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/TemplateParameterSubstitutionImplTest.java
index 9450054..daa3300 100644
--- a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/TemplateParameterSubstitutionImplTest.java
+++ b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/impl/tests/TemplateParameterSubstitutionImplTest.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: TemplateParameterSubstitutionImplTest.java,v 1.1 2004/04/29 14:56:47 khussey Exp $
+ * $Id: TemplateParameterSubstitutionImplTest.java,v 1.2 2004/04/30 17:18:09 khussey Exp $
  */
 package org.eclipse.uml2.impl.tests;
 
@@ -30,7 +30,7 @@
  * The following features are tested:
  * <ul>
  *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getActuals() <em>Actual</em>}</li>
- *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActual() <em>Owned Actual</em>}</li>
+ *   <li>{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActuals() <em>Owned Actual</em>}</li>
  * </ul>
  * </p>
  * <p>
@@ -105,71 +105,21 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @see org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getActuals()
-	 * @generated NOT
+	 * @generated
 	 */
 	public void testGetActuals() {
-
-		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
-			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
-
-			getFixture().setOwnedActual(parameterableElement);
-
-			getFixture().getActuals().remove(parameterableElement);
-
-			assertFalse(getFixture().getActuals().contains(parameterableElement));
-			assertSame(null, getFixture().getOwnedActual());
-
-			getFixture().getActuals().add(parameterableElement);
-
-			assertTrue(getFixture().getActuals().contains(parameterableElement));
-			assertSame(null, getFixture().getOwnedActual());
-		}
+		// TODO: implement this feature getter test method
 	}
 
 	/**
-	 * Tests the '{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActual() <em>Owned Actual</em>}' feature getter.
+	 * Tests the '{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActuals() <em>Owned Actual</em>}' feature getter.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActual()
-	 * @generated NOT
+	 * @see org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#getOwnedActuals()
+	 * @generated
 	 */
-	public void testGetOwnedActual() {
-
-		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
-			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
-
-			getFixture().setOwnedActual(parameterableElement);
-
-			assertSame(parameterableElement, getFixture().getOwnedActual());
-
-			getFixture().setOwnedActual(null);
-
-			assertSame(null, getFixture().getOwnedActual());
-		}
-	}
-
-	/**
-	 * Tests the '{@link org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#setOwnedActual() <em>Owned Actual</em>}' feature setter.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.eclipse.uml2.impl.TemplateParameterSubstitutionImpl#setOwnedActual()
-	 * @generated NOT
-	 */
-	public void testSetOwnedActual() {
-
-		for (Iterator eAllSubClasses = getEAllSubClasses(UML2Package.eINSTANCE.getParameterableElement()).iterator(); eAllSubClasses.hasNext();) {
-			ParameterableElement parameterableElement = (ParameterableElement) UML2Factory.eINSTANCE.create((EClass) eAllSubClasses.next());
-
-			getFixture().setOwnedActual(parameterableElement);
-
-			assertSame(parameterableElement, getFixture().getOwnedActual());
-			assertTrue(getFixture().getActuals().contains(parameterableElement));
-
-			getFixture().setOwnedActual(null);
-
-			assertSame(null, getFixture().getOwnedActual());
-			assertTrue(getFixture().getActuals().contains(parameterableElement));
-		}
+	public void testGetOwnedActuals() {
+		// TODO: implement this feature getter test method
 	}
 
 	/**
@@ -195,16 +145,24 @@
 	public void testGetOwnedElements() {
 		super.testGetOwnedElements();
 
-		getFixture().setOwnedActual(UML2Factory.eINSTANCE.createInstanceValue());
-
-		assertTrue(getFixture().getOwnedElements().contains(getFixture().getOwnedActual()));
+		assertTrue(getFixture().getOwnedElements().containsAll(getFixture().getOwnedActuals()));
 	}
 
-	/**
+	/* (non-Javadoc)
 	 * @see org.eclipse.uml2.impl.tests.ElementImplTest#setUpOwner()
 	 */
 	protected void setUpOwner() {
 		UML2Factory.eINSTANCE.createTemplateBinding().getParameterSubstitutions().add(getFixture());
 	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.uml2.impl.tests.ElementImplTest#setUpOwnedElements()
+	 */
+	protected void setUpOwnedElements() {
+		super.setUpOwnedElements();
+
+		getFixture().getOwnedActuals().add(UML2Factory.eINSTANCE.createInstanceValue());
+		getFixture().getOwnedActuals().add(UML2Factory.eINSTANCE.createInstanceValue());
+	}
 
 } //TemplateParameterSubstitutionImplTest
diff --git a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/tests/AllTests.java b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/tests/AllTests.java
index 811d295..cd7db3c 100644
--- a/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/tests/AllTests.java
+++ b/deprecated/tests/org.eclipse.uml2.tests/src/org/eclipse/uml2/tests/AllTests.java
@@ -8,7 +8,7 @@
  * Contributors:
  *   IBM - Initial API and implementation
  *
- * $Id: AllTests.java,v 1.1 2004/04/29 14:56:55 khussey Exp $
+ * $Id: AllTests.java,v 1.2 2004/04/30 17:18:09 khussey Exp $
  */
 package org.eclipse.uml2.tests;
 
@@ -237,6 +237,9 @@
 	 */
 	public static Test suiteGen() {
 		TestSuite suite = new TestSuite("UML2 Tests"); //$NON-NLS-1$
+		suite.addTestSuite(CommentImplTest.class);
+		suite.addTestSuite(OpaqueExpressionImplTest.class);
+		suite.addTestSuite(ExpressionImplTest.class);
 		suite.addTestSuite(ClassImplTest.class);
 		suite.addTestSuite(PropertyImplTest.class);
 		suite.addTestSuite(OperationImplTest.class);
@@ -246,19 +249,16 @@
 		suite.addTestSuite(DataTypeImplTest.class);
 		suite.addTestSuite(EnumerationLiteralImplTest.class);
 		suite.addTestSuite(PrimitiveTypeImplTest.class);
-		suite.addTestSuite(CommentImplTest.class);
-		suite.addTestSuite(OpaqueExpressionImplTest.class);
-		suite.addTestSuite(ExpressionImplTest.class);
+		suite.addTestSuite(ConstraintImplTest.class);
 		suite.addTestSuite(LiteralBooleanImplTest.class);
 		suite.addTestSuite(LiteralStringImplTest.class);
 		suite.addTestSuite(LiteralNullImplTest.class);
 		suite.addTestSuite(LiteralIntegerImplTest.class);
 		suite.addTestSuite(LiteralUnlimitedNaturalImplTest.class);
-		suite.addTestSuite(ConstraintImplTest.class);
+		suite.addTestSuite(GeneralizationImplTest.class);
 		suite.addTestSuite(InstanceSpecificationImplTest.class);
 		suite.addTestSuite(SlotImplTest.class);
 		suite.addTestSuite(InstanceValueImplTest.class);
-		suite.addTestSuite(GeneralizationImplTest.class);
 		suite.addTestSuite(ElementImportImplTest.class);
 		suite.addTestSuite(PackageImportImplTest.class);
 		suite.addTestSuite(AssociationImplTest.class);
@@ -268,27 +268,29 @@
 		suite.addTestSuite(ProfileApplicationImplTest.class);
 		suite.addTestSuite(ExtensionImplTest.class);
 		suite.addTestSuite(ExtensionEndImplTest.class);
-		suite.addTestSuite(ModelImplTest.class);
 		suite.addTestSuite(PermissionImplTest.class);
 		suite.addTestSuite(DependencyImplTest.class);
 		suite.addTestSuite(UsageImplTest.class);
 		suite.addTestSuite(AbstractionImplTest.class);
 		suite.addTestSuite(RealizationImplTest.class);
 		suite.addTestSuite(SubstitutionImplTest.class);
-		suite.addTestSuite(GeneralizationSetImplTest.class);
+		suite.addTestSuite(ActivityImplTest.class);
+		suite.addTestSuite(AssociationClassImplTest.class);
+		suite.addTestSuite(ModelImplTest.class);
 		suite.addTestSuite(InformationItemImplTest.class);
 		suite.addTestSuite(InformationFlowImplTest.class);
-		suite.addTestSuite(AssociationClassImplTest.class);
-		suite.addTestSuite(ActivityImplTest.class);
-		suite.addTestSuite(ArtifactImplTest.class);
-		suite.addTestSuite(ManifestationImplTest.class);
+		suite.addTestSuite(GeneralizationSetImplTest.class);
+		suite.addTestSuite(ConnectorEndImplTest.class);
+		suite.addTestSuite(ConnectorImplTest.class);
+		suite.addTestSuite(InterfaceImplTest.class);
+		suite.addTestSuite(ImplementationImplTest.class);
 		suite.addTestSuite(ActorImplTest.class);
 		suite.addTestSuite(ExtendImplTest.class);
 		suite.addTestSuite(UseCaseImplTest.class);
 		suite.addTestSuite(ExtensionPointImplTest.class);
 		suite.addTestSuite(IncludeImplTest.class);
-		suite.addTestSuite(InterfaceImplTest.class);
-		suite.addTestSuite(ImplementationImplTest.class);
+		suite.addTestSuite(ArtifactImplTest.class);
+		suite.addTestSuite(ManifestationImplTest.class);
 		suite.addTestSuite(ActionImplTest.class);
 		suite.addTestSuite(ControlFlowImplTest.class);
 		suite.addTestSuite(ObjectFlowImplTest.class);
@@ -300,16 +302,8 @@
 		suite.addTestSuite(InputPinImplTest.class);
 		suite.addTestSuite(ActivityParameterNodeImplTest.class);
 		suite.addTestSuite(ValuePinImplTest.class);
-		suite.addTestSuite(ConnectorEndImplTest.class);
-		suite.addTestSuite(ConnectorImplTest.class);
 		suite.addTestSuite(CollaborationOccurrenceImplTest.class);
 		suite.addTestSuite(CollaborationImplTest.class);
-		suite.addTestSuite(VariableImplTest.class);
-		suite.addTestSuite(StructuredActivityNodeImplTest.class);
-		suite.addTestSuite(ConditionalNodeImplTest.class);
-		suite.addTestSuite(ClauseImplTest.class);
-		suite.addTestSuite(LoopNodeImplTest.class);
-		suite.addTestSuite(PortImplTest.class);
 		suite.addTestSuite(InteractionImplTest.class);
 		suite.addTestSuite(LifelineImplTest.class);
 		suite.addTestSuite(MessageImplTest.class);
@@ -318,6 +312,7 @@
 		suite.addTestSuite(ExecutionOccurrenceImplTest.class);
 		suite.addTestSuite(StateInvariantImplTest.class);
 		suite.addTestSuite(StopImplTest.class);
+		suite.addTestSuite(PortImplTest.class);
 		suite.addTestSuite(CallTriggerImplTest.class);
 		suite.addTestSuite(ChangeTriggerImplTest.class);
 		suite.addTestSuite(ReceptionImplTest.class);
@@ -325,6 +320,11 @@
 		suite.addTestSuite(SignalTriggerImplTest.class);
 		suite.addTestSuite(TimeTriggerImplTest.class);
 		suite.addTestSuite(AnyTriggerImplTest.class);
+		suite.addTestSuite(VariableImplTest.class);
+		suite.addTestSuite(StructuredActivityNodeImplTest.class);
+		suite.addTestSuite(ConditionalNodeImplTest.class);
+		suite.addTestSuite(ClauseImplTest.class);
+		suite.addTestSuite(LoopNodeImplTest.class);
 		suite.addTestSuite(TemplateSignatureImplTest.class);
 		suite.addTestSuite(TemplateParameterImplTest.class);
 		suite.addTestSuite(StringExpressionImplTest.class);
@@ -334,13 +334,6 @@
 		suite.addTestSuite(ClassifierTemplateParameterImplTest.class);
 		suite.addTestSuite(RedefinableTemplateSignatureImplTest.class);
 		suite.addTestSuite(ConnectableElementTemplateParameterImplTest.class);
-		suite.addTestSuite(InteractionOccurrenceImplTest.class);
-		suite.addTestSuite(GateImplTest.class);
-		suite.addTestSuite(PartDecompositionImplTest.class);
-		suite.addTestSuite(InteractionOperandImplTest.class);
-		suite.addTestSuite(InteractionConstraintImplTest.class);
-		suite.addTestSuite(CombinedFragmentImplTest.class);
-		suite.addTestSuite(ContinuationImplTest.class);
 		suite.addTestSuite(StateMachineImplTest.class);
 		suite.addTestSuite(RegionImplTest.class);
 		suite.addTestSuite(PseudostateImplTest.class);
@@ -353,9 +346,6 @@
 		suite.addTestSuite(FlowFinalNodeImplTest.class);
 		suite.addTestSuite(CentralBufferNodeImplTest.class);
 		suite.addTestSuite(ActivityPartitionImplTest.class);
-		suite.addTestSuite(ExpansionNodeImplTest.class);
-		suite.addTestSuite(ExpansionRegionImplTest.class);
-		suite.addTestSuite(ExceptionHandlerImplTest.class);
 		suite.addTestSuite(CreateObjectActionImplTest.class);
 		suite.addTestSuite(DestroyObjectActionImplTest.class);
 		suite.addTestSuite(TestIdentityActionImplTest.class);
@@ -381,18 +371,30 @@
 		suite.addTestSuite(SendObjectActionImplTest.class);
 		suite.addTestSuite(CallOperationActionImplTest.class);
 		suite.addTestSuite(CallBehaviorActionImplTest.class);
-		suite.addTestSuite(ComponentImplTest.class);
-		suite.addTestSuite(DeploymentImplTest.class);
-		suite.addTestSuite(NodeImplTest.class);
-		suite.addTestSuite(DeviceImplTest.class);
-		suite.addTestSuite(ExecutionEnvironmentImplTest.class);
-		suite.addTestSuite(CommunicationPathImplTest.class);
+		suite.addTestSuite(InteractionOccurrenceImplTest.class);
+		suite.addTestSuite(GateImplTest.class);
+		suite.addTestSuite(PartDecompositionImplTest.class);
+		suite.addTestSuite(InteractionOperandImplTest.class);
+		suite.addTestSuite(InteractionConstraintImplTest.class);
+		suite.addTestSuite(CombinedFragmentImplTest.class);
+		suite.addTestSuite(ContinuationImplTest.class);
+		suite.addTestSuite(ExpansionNodeImplTest.class);
+		suite.addTestSuite(ExpansionRegionImplTest.class);
+		suite.addTestSuite(ExceptionHandlerImplTest.class);
 		suite.addTestSuite(ProtocolConformanceImplTest.class);
 		suite.addTestSuite(ProtocolStateMachineImplTest.class);
 		suite.addTestSuite(ProtocolTransitionImplTest.class);
-		suite.addTestSuite(DataStoreNodeImplTest.class);
-		suite.addTestSuite(InterruptibleActivityRegionImplTest.class);
-		suite.addTestSuite(ParameterSetImplTest.class);
+		suite.addTestSuite(ComponentImplTest.class);
+		suite.addTestSuite(TimeExpressionImplTest.class);
+		suite.addTestSuite(DurationImplTest.class);
+		suite.addTestSuite(TimeObservationActionImplTest.class);
+		suite.addTestSuite(DurationIntervalImplTest.class);
+		suite.addTestSuite(IntervalImplTest.class);
+		suite.addTestSuite(TimeConstraintImplTest.class);
+		suite.addTestSuite(IntervalConstraintImplTest.class);
+		suite.addTestSuite(TimeIntervalImplTest.class);
+		suite.addTestSuite(DurationObservationActionImplTest.class);
+		suite.addTestSuite(DurationConstraintImplTest.class);
 		suite.addTestSuite(ReadExtentActionImplTest.class);
 		suite.addTestSuite(ReclassifyObjectActionImplTest.class);
 		suite.addTestSuite(ReadIsClassifiedObjectActionImplTest.class);
@@ -405,16 +407,14 @@
 		suite.addTestSuite(AcceptCallActionImplTest.class);
 		suite.addTestSuite(ReplyActionImplTest.class);
 		suite.addTestSuite(RaiseExceptionActionImplTest.class);
-		suite.addTestSuite(TimeExpressionImplTest.class);
-		suite.addTestSuite(DurationImplTest.class);
-		suite.addTestSuite(TimeObservationActionImplTest.class);
-		suite.addTestSuite(DurationIntervalImplTest.class);
-		suite.addTestSuite(IntervalImplTest.class);
-		suite.addTestSuite(TimeConstraintImplTest.class);
-		suite.addTestSuite(IntervalConstraintImplTest.class);
-		suite.addTestSuite(TimeIntervalImplTest.class);
-		suite.addTestSuite(DurationObservationActionImplTest.class);
-		suite.addTestSuite(DurationConstraintImplTest.class);
+		suite.addTestSuite(DeploymentImplTest.class);
+		suite.addTestSuite(NodeImplTest.class);
+		suite.addTestSuite(DeviceImplTest.class);
+		suite.addTestSuite(ExecutionEnvironmentImplTest.class);
+		suite.addTestSuite(CommunicationPathImplTest.class);
+		suite.addTestSuite(DataStoreNodeImplTest.class);
+		suite.addTestSuite(InterruptibleActivityRegionImplTest.class);
+		suite.addTestSuite(ParameterSetImplTest.class);
 		suite.addTestSuite(DeploymentSpecificationImplTest.class);
 		return suite;
 	}
