Merge branch 'master' of ssh://rhille@git.eclipse.org/gitroot/bpmn2
diff --git a/org.eclipse.bpmn2/model/BPMN20.ecore b/org.eclipse.bpmn2/model/BPMN20.ecore
index 2da528c..47d8889 100644
--- a/org.eclipse.bpmn2/model/BPMN20.ecore
+++ b/org.eclipse.bpmn2/model/BPMN20.ecore
@@ -1321,7 +1321,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Activity" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//FlowNode">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tActivity"/>
       <details key="kind" value="elementOnly"/>
@@ -1547,7 +1547,7 @@
       <details key="kind" value="elementOnly"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="attachedToRef" ordered="false"
-        lowerBound="1" eType="#//Activity" resolveProxies="false" eOpposite="#//Activity/boundaryEventRefs">
+        lowerBound="1" eType="#//Activity" transient="true" eOpposite="#//Activity/boundaryEventRefs">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="attachedToRef"/>
@@ -2044,14 +2044,14 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="sourceRef" ordered="false"
-        lowerBound="1" eType="#//InteractionNode" resolveProxies="false" eOpposite="#//InteractionNode/outgoingConversationLinks">
+        lowerBound="1" eType="#//InteractionNode" transient="true" eOpposite="#//InteractionNode/outgoingConversationLinks">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="sourceRef"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="targetRef" ordered="false"
-        lowerBound="1" eType="#//InteractionNode" resolveProxies="false" eOpposite="#//InteractionNode/incomingConversationLinks">
+        lowerBound="1" eType="#//InteractionNode" transient="true" eOpposite="#//InteractionNode/incomingConversationLinks">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="targetRef"/>
@@ -2634,7 +2634,7 @@
     <eLiterals name="Parallel"/>
     <eLiterals name="Exclusive" value="1"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" abstract="true" eSuperTypes="#//RootElement">
+  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" eSuperTypes="#//RootElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tEventDefinition"/>
       <details key="kind" value="elementOnly"/>
@@ -2732,7 +2732,7 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="categoryValueRef" ordered="false"
-        upperBound="-1" eType="#//CategoryValue" resolveProxies="false" eOpposite="#//CategoryValue/categorizedFlowElements">
+        upperBound="-1" eType="#//CategoryValue" transient="true" eOpposite="#//CategoryValue/categorizedFlowElements">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="element"/>
         <details key="name" value="categoryValueRef"/>
@@ -3104,7 +3104,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode">
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" transient="true"
         derived="true" resolveProxies="false" eOpposite="#//ConversationLink/targetRef"/>
@@ -4369,7 +4369,7 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="eventDefinitionRefs" ordered="false"
-        upperBound="-1" eType="#//EventDefinition" resolveProxies="false">
+        upperBound="-1" eType="#//EventDefinition">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="element"/>
         <details key="name" value="eventDefinitionRef"/>
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java
index d575ce9..283ada9 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java
@@ -39,8 +39,7 @@
  * </p>
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getActivity()
- * @model abstract="true"
- *        extendedMetaData="name='tActivity' kind='elementOnly'"
+ * @model extendedMetaData="name='tActivity' kind='elementOnly'"
  * @generated
  */
 public interface Activity extends FlowNode {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BoundaryEvent.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BoundaryEvent.java
index 8487711..fb5b2d1 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BoundaryEvent.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BoundaryEvent.java
@@ -45,7 +45,7 @@
      * @see #setAttachedToRef(Activity)
      * @see org.eclipse.bpmn2.Bpmn2Package#getBoundaryEvent_AttachedToRef()
      * @see org.eclipse.bpmn2.Activity#getBoundaryEventRefs
-     * @model opposite="boundaryEventRefs" resolveProxies="false" required="true" ordered="false"
+     * @model opposite="boundaryEventRefs" required="true" transient="true" ordered="false"
      *        extendedMetaData="kind='attribute' name='attachedToRef'"
      * @generated
      */
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Bpmn2Factory.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Bpmn2Factory.java
index eb7f21e..395bfbc 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Bpmn2Factory.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Bpmn2Factory.java
@@ -43,6 +43,15 @@
     DocumentRoot createDocumentRoot();
 
     /**
+     * Returns a new object of class '<em>Activity</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Activity</em>'.
+     * @generated
+     */
+    Activity createActivity();
+
+    /**
      * Returns a new object of class '<em>Ad Hoc Sub Process</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -457,6 +466,15 @@
     EventBasedGateway createEventBasedGateway();
 
     /**
+     * Returns a new object of class '<em>Event Definition</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Event Definition</em>'.
+     * @generated
+     */
+    EventDefinition createEventDefinition();
+
+    /**
      * Returns a new object of class '<em>Exclusive Gateway</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
@@ -655,6 +673,15 @@
     InputSet createInputSet();
 
     /**
+     * Returns a new object of class '<em>Interaction Node</em>'.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @return a new object of class '<em>Interaction Node</em>'.
+     * @generated
+     */
+    InteractionNode createInteractionNode();
+
+    /**
      * Returns a new object of class '<em>Interface</em>'.
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationLink.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationLink.java
index f38e138..67aa698 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationLink.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationLink.java
@@ -73,7 +73,7 @@
      * @see #setSourceRef(InteractionNode)
      * @see org.eclipse.bpmn2.Bpmn2Package#getConversationLink_SourceRef()
      * @see org.eclipse.bpmn2.InteractionNode#getOutgoingConversationLinks
-     * @model opposite="outgoingConversationLinks" resolveProxies="false" required="true" ordered="false"
+     * @model opposite="outgoingConversationLinks" required="true" transient="true" ordered="false"
      *        extendedMetaData="kind='attribute' name='sourceRef'"
      * @generated
      */
@@ -102,7 +102,7 @@
      * @see #setTargetRef(InteractionNode)
      * @see org.eclipse.bpmn2.Bpmn2Package#getConversationLink_TargetRef()
      * @see org.eclipse.bpmn2.InteractionNode#getIncomingConversationLinks
-     * @model opposite="incomingConversationLinks" resolveProxies="false" required="true" ordered="false"
+     * @model opposite="incomingConversationLinks" required="true" transient="true" ordered="false"
      *        extendedMetaData="kind='attribute' name='targetRef'"
      * @generated
      */
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/EventDefinition.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/EventDefinition.java
index b483a08..a5e7ece 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/EventDefinition.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/EventDefinition.java
@@ -21,8 +21,7 @@
  *
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getEventDefinition()
- * @model abstract="true"
- *        extendedMetaData="name='tEventDefinition' kind='elementOnly'"
+ * @model extendedMetaData="name='tEventDefinition' kind='elementOnly'"
  * @generated
  */
 public interface EventDefinition extends RootElement {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/FlowElement.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/FlowElement.java
index dd343fa..dd86ac5 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/FlowElement.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/FlowElement.java
@@ -104,7 +104,7 @@
      * @return the value of the '<em>Category Value Ref</em>' reference list.
      * @see org.eclipse.bpmn2.Bpmn2Package#getFlowElement_CategoryValueRef()
      * @see org.eclipse.bpmn2.CategoryValue#getCategorizedFlowElements
-     * @model opposite="categorizedFlowElements" resolveProxies="false" ordered="false"
+     * @model opposite="categorizedFlowElements" transient="true" ordered="false"
      *        extendedMetaData="kind='element' name='categoryValueRef' namespace='http://www.omg.org/spec/BPMN/20100524/MODEL'"
      * @generated
      */
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java
index ad15c42..acee896 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java
@@ -32,7 +32,7 @@
  * </p>
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getInteractionNode()
- * @model abstract="true"
+ * @model
  * @generated
  */
 public interface InteractionNode extends EObject {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ThrowEvent.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ThrowEvent.java
index 2585f93..9ce56ad 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ThrowEvent.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ThrowEvent.java
@@ -127,7 +127,7 @@
      * <!-- end-user-doc -->
      * @return the value of the '<em>Event Definition Refs</em>' reference list.
      * @see org.eclipse.bpmn2.Bpmn2Package#getThrowEvent_EventDefinitionRefs()
-     * @model resolveProxies="false" ordered="false"
+     * @model ordered="false"
      *        extendedMetaData="kind='element' name='eventDefinitionRef' namespace='http://www.omg.org/spec/BPMN/20100524/MODEL'"
      * @generated
      */
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiFactoryImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiFactoryImpl.java
index 36323b5..2ae5bb8 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiFactoryImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiFactoryImpl.java
@@ -15,6 +15,7 @@
  */
 package org.eclipse.bpmn2.di.impl;
 
+import org.eclipse.bpmn2.di.*;
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNEdge;
 import org.eclipse.bpmn2.di.BPMNLabel;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiPackageImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiPackageImpl.java
index 83a4467..739d302 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiPackageImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/impl/BpmnDiPackageImpl.java
@@ -172,16 +172,13 @@
         // Obtain or create and register interdependencies
         Bpmn2PackageImpl theBpmn2Package = (Bpmn2PackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(Bpmn2Package.eNS_URI) instanceof Bpmn2PackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(Bpmn2Package.eNS_URI)
-                : Bpmn2Package.eINSTANCE);
+                .getEPackage(Bpmn2Package.eNS_URI) : Bpmn2Package.eINSTANCE);
         DiPackageImpl theDiPackage = (DiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DiPackage.eNS_URI) instanceof DiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DiPackage.eNS_URI)
-                : DiPackage.eINSTANCE);
+                .getEPackage(DiPackage.eNS_URI) : DiPackage.eINSTANCE);
         DcPackageImpl theDcPackage = (DcPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DcPackage.eNS_URI) instanceof DcPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DcPackage.eNS_URI)
-                : DcPackage.eINSTANCE);
+                .getEPackage(DcPackage.eNS_URI) : DcPackage.eINSTANCE);
 
         // Load packages
         theBpmn2Package.loadPackage();
@@ -660,9 +657,9 @@
                 null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE,
                 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED);
-        initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage
-                .getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+        initEReference(getDocumentRoot_XSISchemaLocation(),
+                ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1,
+                null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDocumentRoot_BPMNDiagram(), this.getBPMNDiagram(), null, "bPMNDiagram",
                 null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE,
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiAdapterFactory.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiAdapterFactory.java
index 0c0701a..99003c6 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiAdapterFactory.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiAdapterFactory.java
@@ -15,6 +15,7 @@
  */
 package org.eclipse.bpmn2.di.util;
 
+import org.eclipse.bpmn2.di.*;
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNEdge;
 import org.eclipse.bpmn2.di.BPMNLabel;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiSwitch.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiSwitch.java
index cbebe6c..01eb248 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiSwitch.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/di/util/BpmnDiSwitch.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.eclipse.bpmn2.di.*;
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNEdge;
 import org.eclipse.bpmn2.di.BPMNLabel;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java
index 0799fb9..44d4508 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java
@@ -60,7 +60,7 @@
  *
  * @generated
  */
-public abstract class ActivityImpl extends FlowNodeImpl implements Activity {
+public class ActivityImpl extends FlowNodeImpl implements Activity {
     /**
      * The cached value of the '{@link #getIoSpecification() <em>Io Specification</em>}' containment reference.
      * <!-- begin-user-doc -->
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BoundaryEventImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BoundaryEventImpl.java
index cfa0a4d..d73ee7f 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BoundaryEventImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BoundaryEventImpl.java
@@ -93,6 +93,25 @@
      * @generated
      */
     public Activity getAttachedToRef() {
+        if (attachedToRef != null && attachedToRef.eIsProxy()) {
+            InternalEObject oldAttachedToRef = (InternalEObject) attachedToRef;
+            attachedToRef = (Activity) eResolveProxy(oldAttachedToRef);
+            if (attachedToRef != oldAttachedToRef) {
+                if (eNotificationRequired())
+                    eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+                            Bpmn2Package.BOUNDARY_EVENT__ATTACHED_TO_REF, oldAttachedToRef,
+                            attachedToRef));
+            }
+        }
+        return attachedToRef;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public Activity basicGetAttachedToRef() {
         return attachedToRef;
     }
 
@@ -203,7 +222,9 @@
     public Object eGet(int featureID, boolean resolve, boolean coreType) {
         switch (featureID) {
         case Bpmn2Package.BOUNDARY_EVENT__ATTACHED_TO_REF:
-            return getAttachedToRef();
+            if (resolve)
+                return getAttachedToRef();
+            return basicGetAttachedToRef();
         case Bpmn2Package.BOUNDARY_EVENT__CANCEL_ACTIVITY:
             return isCancelActivity();
         }
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java
index d6565be..938acde 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java
@@ -14,6 +14,139 @@
  */
 package org.eclipse.bpmn2.impl;
 
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.AdHocOrdering;
+import org.eclipse.bpmn2.AdHocSubProcess;
+import org.eclipse.bpmn2.Assignment;
+import org.eclipse.bpmn2.Association;
+import org.eclipse.bpmn2.AssociationDirection;
+import org.eclipse.bpmn2.Auditing;
+import org.eclipse.bpmn2.BoundaryEvent;
+import org.eclipse.bpmn2.Bpmn2Factory;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.BusinessRuleTask;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CancelEventDefinition;
+import org.eclipse.bpmn2.Category;
+import org.eclipse.bpmn2.CategoryValue;
+import org.eclipse.bpmn2.Choreography;
+import org.eclipse.bpmn2.ChoreographyLoopType;
+import org.eclipse.bpmn2.ChoreographyTask;
+import org.eclipse.bpmn2.Collaboration;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.ComplexBehaviorDefinition;
+import org.eclipse.bpmn2.ComplexGateway;
+import org.eclipse.bpmn2.ConditionalEventDefinition;
+import org.eclipse.bpmn2.Conversation;
+import org.eclipse.bpmn2.ConversationAssociation;
+import org.eclipse.bpmn2.ConversationLink;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationProperty;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.CorrelationSubscription;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataInputAssociation;
+import org.eclipse.bpmn2.DataObject;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.DataOutputAssociation;
+import org.eclipse.bpmn2.DataState;
+import org.eclipse.bpmn2.DataStore;
+import org.eclipse.bpmn2.DataStoreReference;
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.DocumentRoot;
+import org.eclipse.bpmn2.Documentation;
+import org.eclipse.bpmn2.EndEvent;
+import org.eclipse.bpmn2.EndPoint;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.EventBasedGateway;
+import org.eclipse.bpmn2.EventBasedGatewayType;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.ExclusiveGateway;
+import org.eclipse.bpmn2.Expression;
+import org.eclipse.bpmn2.Extension;
+import org.eclipse.bpmn2.ExtensionAttributeDefinition;
+import org.eclipse.bpmn2.ExtensionAttributeValue;
+import org.eclipse.bpmn2.ExtensionDefinition;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.GatewayDirection;
+import org.eclipse.bpmn2.GlobalBusinessRuleTask;
+import org.eclipse.bpmn2.GlobalChoreographyTask;
+import org.eclipse.bpmn2.GlobalConversation;
+import org.eclipse.bpmn2.GlobalManualTask;
+import org.eclipse.bpmn2.GlobalScriptTask;
+import org.eclipse.bpmn2.GlobalTask;
+import org.eclipse.bpmn2.GlobalUserTask;
+import org.eclipse.bpmn2.Group;
+import org.eclipse.bpmn2.HumanPerformer;
+import org.eclipse.bpmn2.ImplicitThrowEvent;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.InclusiveGateway;
+import org.eclipse.bpmn2.InputOutputBinding;
+import org.eclipse.bpmn2.InputOutputSpecification;
+import org.eclipse.bpmn2.InputSet;
+import org.eclipse.bpmn2.InteractionNode;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.IntermediateCatchEvent;
+import org.eclipse.bpmn2.IntermediateThrowEvent;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.ItemKind;
+import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.LaneSet;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.ManualTask;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MessageFlowAssociation;
+import org.eclipse.bpmn2.Monitoring;
+import org.eclipse.bpmn2.MultiInstanceBehavior;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.OutputSet;
+import org.eclipse.bpmn2.ParallelGateway;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.ParticipantAssociation;
+import org.eclipse.bpmn2.ParticipantMultiplicity;
+import org.eclipse.bpmn2.PartnerEntity;
+import org.eclipse.bpmn2.PartnerRole;
+import org.eclipse.bpmn2.Performer;
+import org.eclipse.bpmn2.PotentialOwner;
+import org.eclipse.bpmn2.ProcessType;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.Relationship;
+import org.eclipse.bpmn2.RelationshipDirection;
+import org.eclipse.bpmn2.Rendering;
+import org.eclipse.bpmn2.Resource;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameter;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.StandardLoopCharacteristics;
+import org.eclipse.bpmn2.StartEvent;
+import org.eclipse.bpmn2.SubChoreography;
+import org.eclipse.bpmn2.SubConversation;
+import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.TerminateEventDefinition;
+import org.eclipse.bpmn2.TextAnnotation;
+import org.eclipse.bpmn2.TimerEventDefinition;
+import org.eclipse.bpmn2.Transaction;
+import org.eclipse.bpmn2.UserTask;
 import org.eclipse.bpmn2.*;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EDataType;
@@ -68,6 +201,8 @@
         switch (eClass.getClassifierID()) {
         case Bpmn2Package.DOCUMENT_ROOT:
             return createDocumentRoot();
+        case Bpmn2Package.ACTIVITY:
+            return createActivity();
         case Bpmn2Package.AD_HOC_SUB_PROCESS:
             return createAdHocSubProcess();
         case Bpmn2Package.ASSIGNMENT:
@@ -160,6 +295,8 @@
             return createEscalationEventDefinition();
         case Bpmn2Package.EVENT_BASED_GATEWAY:
             return createEventBasedGateway();
+        case Bpmn2Package.EVENT_DEFINITION:
+            return createEventDefinition();
         case Bpmn2Package.EXCLUSIVE_GATEWAY:
             return createExclusiveGateway();
         case Bpmn2Package.EXPRESSION:
@@ -204,6 +341,8 @@
             return createInputOutputSpecification();
         case Bpmn2Package.INPUT_SET:
             return createInputSet();
+        case Bpmn2Package.INTERACTION_NODE:
+            return createInteractionNode();
         case Bpmn2Package.INTERFACE:
             return createInterface();
         case Bpmn2Package.INTERMEDIATE_CATCH_EVENT:
@@ -393,6 +532,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public Activity createActivity() {
+        ActivityImpl activity = new ActivityImpl();
+        return activity;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public AdHocSubProcess createAdHocSubProcess() {
         AdHocSubProcessImpl adHocSubProcess = new AdHocSubProcessImpl();
         return adHocSubProcess;
@@ -853,6 +1002,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public EventDefinition createEventDefinition() {
+        EventDefinitionImpl eventDefinition = new EventDefinitionImpl();
+        return eventDefinition;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public ExclusiveGateway createExclusiveGateway() {
         ExclusiveGatewayImpl exclusiveGateway = new ExclusiveGatewayImpl();
         return exclusiveGateway;
@@ -1073,6 +1232,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    public InteractionNode createInteractionNode() {
+        InteractionNodeImpl interactionNode = new InteractionNodeImpl();
+        return interactionNode;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public Interface createInterface() {
         InterfaceImpl interface_ = new InterfaceImpl();
         return interface_;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2PackageImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2PackageImpl.java
index 7addc2f..fd09b98 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2PackageImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2PackageImpl.java
@@ -1142,16 +1142,13 @@
         // Obtain or create and register interdependencies
         BpmnDiPackageImpl theBpmnDiPackage = (BpmnDiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(BpmnDiPackage.eNS_URI) instanceof BpmnDiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(BpmnDiPackage.eNS_URI)
-                : BpmnDiPackage.eINSTANCE);
+                .getEPackage(BpmnDiPackage.eNS_URI) : BpmnDiPackage.eINSTANCE);
         DiPackageImpl theDiPackage = (DiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DiPackage.eNS_URI) instanceof DiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DiPackage.eNS_URI)
-                : DiPackage.eINSTANCE);
+                .getEPackage(DiPackage.eNS_URI) : DiPackage.eINSTANCE);
         DcPackageImpl theDcPackage = (DcPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DcPackage.eNS_URI) instanceof DcPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DcPackage.eNS_URI)
-                : DcPackage.eINSTANCE);
+                .getEPackage(DcPackage.eNS_URI) : DcPackage.eINSTANCE);
 
         // Load packages
         theBpmn2Package.loadPackage();
@@ -1184,8 +1181,8 @@
      */
     public EClass getDocumentRoot() {
         if (documentRootEClass == null) {
-            documentRootEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(0);
+            documentRootEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(0);
         }
         return documentRootEClass;
     }
@@ -2551,8 +2548,8 @@
      */
     public EClass getAdHocSubProcess() {
         if (adHocSubProcessEClass == null) {
-            adHocSubProcessEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(3);
+            adHocSubProcessEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(3);
         }
         return adHocSubProcessEClass;
     }
@@ -2635,8 +2632,8 @@
      */
     public EClass getAssociation() {
         if (associationEClass == null) {
-            associationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(6);
+            associationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(6);
         }
         return associationEClass;
     }
@@ -2688,8 +2685,8 @@
      */
     public EClass getBaseElement() {
         if (baseElementEClass == null) {
-            baseElementEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(9);
+            baseElementEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(9);
         }
         return baseElementEClass;
     }
@@ -2737,8 +2734,8 @@
      */
     public EClass getBoundaryEvent() {
         if (boundaryEventEClass == null) {
-            boundaryEventEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(10);
+            boundaryEventEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(10);
         }
         return boundaryEventEClass;
     }
@@ -2768,8 +2765,8 @@
      */
     public EClass getBusinessRuleTask() {
         if (businessRuleTaskEClass == null) {
-            businessRuleTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(11);
+            businessRuleTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(11);
         }
         return businessRuleTaskEClass;
     }
@@ -2790,8 +2787,8 @@
      */
     public EClass getCallActivity() {
         if (callActivityEClass == null) {
-            callActivityEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(12);
+            callActivityEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(12);
         }
         return callActivityEClass;
     }
@@ -2812,8 +2809,8 @@
      */
     public EClass getCallChoreography() {
         if (callChoreographyEClass == null) {
-            callChoreographyEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(13);
+            callChoreographyEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(13);
         }
         return callChoreographyEClass;
     }
@@ -2843,8 +2840,8 @@
      */
     public EClass getCallConversation() {
         if (callConversationEClass == null) {
-            callConversationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(14);
+            callConversationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(14);
         }
         return callConversationEClass;
     }
@@ -2874,8 +2871,8 @@
      */
     public EClass getCallableElement() {
         if (callableElementEClass == null) {
-            callableElementEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(15);
+            callableElementEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(15);
         }
         return callableElementEClass;
     }
@@ -2923,8 +2920,8 @@
      */
     public EClass getCancelEventDefinition() {
         if (cancelEventDefinitionEClass == null) {
-            cancelEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(16);
+            cancelEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(16);
         }
         return cancelEventDefinitionEClass;
     }
@@ -3034,8 +3031,8 @@
      */
     public EClass getCategoryValue() {
         if (categoryValueEClass == null) {
-            categoryValueEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(19);
+            categoryValueEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(19);
         }
         return categoryValueEClass;
     }
@@ -3065,8 +3062,8 @@
      */
     public EClass getChoreography() {
         if (choreographyEClass == null) {
-            choreographyEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(20);
+            choreographyEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(20);
         }
         return choreographyEClass;
     }
@@ -3078,8 +3075,8 @@
      */
     public EClass getChoreographyActivity() {
         if (choreographyActivityEClass == null) {
-            choreographyActivityEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(21);
+            choreographyActivityEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(21);
         }
         return choreographyActivityEClass;
     }
@@ -3127,8 +3124,8 @@
      */
     public EClass getChoreographyTask() {
         if (choreographyTaskEClass == null) {
-            choreographyTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(23);
+            choreographyTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(23);
         }
         return choreographyTaskEClass;
     }
@@ -3149,8 +3146,8 @@
      */
     public EClass getCollaboration() {
         if (collaborationEClass == null) {
-            collaborationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(24);
+            collaborationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(24);
         }
         return collaborationEClass;
     }
@@ -3270,8 +3267,8 @@
      */
     public EClass getCompensateEventDefinition() {
         if (compensateEventDefinitionEClass == null) {
-            compensateEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(25);
+            compensateEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(25);
         }
         return compensateEventDefinitionEClass;
     }
@@ -3301,8 +3298,8 @@
      */
     public EClass getComplexBehaviorDefinition() {
         if (complexBehaviorDefinitionEClass == null) {
-            complexBehaviorDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(26);
+            complexBehaviorDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(26);
         }
         return complexBehaviorDefinitionEClass;
     }
@@ -3332,8 +3329,8 @@
      */
     public EClass getComplexGateway() {
         if (complexGatewayEClass == null) {
-            complexGatewayEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(27);
+            complexGatewayEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(27);
         }
         return complexGatewayEClass;
     }
@@ -3363,8 +3360,8 @@
      */
     public EClass getConditionalEventDefinition() {
         if (conditionalEventDefinitionEClass == null) {
-            conditionalEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(28);
+            conditionalEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(28);
         }
         return conditionalEventDefinitionEClass;
     }
@@ -3385,8 +3382,8 @@
      */
     public EClass getConversation() {
         if (conversationEClass == null) {
-            conversationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(29);
+            conversationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(29);
         }
         return conversationEClass;
     }
@@ -3398,8 +3395,8 @@
      */
     public EClass getConversationAssociation() {
         if (conversationAssociationEClass == null) {
-            conversationAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(30);
+            conversationAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(30);
         }
         return conversationAssociationEClass;
     }
@@ -3429,8 +3426,8 @@
      */
     public EClass getConversationLink() {
         if (conversationLinkEClass == null) {
-            conversationLinkEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(31);
+            conversationLinkEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(31);
         }
         return conversationLinkEClass;
     }
@@ -3469,8 +3466,8 @@
      */
     public EClass getConversationNode() {
         if (conversationNodeEClass == null) {
-            conversationNodeEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(32);
+            conversationNodeEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(32);
         }
         return conversationNodeEClass;
     }
@@ -3518,8 +3515,8 @@
      */
     public EClass getCorrelationKey() {
         if (correlationKeyEClass == null) {
-            correlationKeyEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(33);
+            correlationKeyEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(33);
         }
         return correlationKeyEClass;
     }
@@ -3549,8 +3546,8 @@
      */
     public EClass getCorrelationProperty() {
         if (correlationPropertyEClass == null) {
-            correlationPropertyEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(34);
+            correlationPropertyEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(34);
         }
         return correlationPropertyEClass;
     }
@@ -3589,8 +3586,8 @@
      */
     public EClass getCorrelationPropertyBinding() {
         if (correlationPropertyBindingEClass == null) {
-            correlationPropertyBindingEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(35);
+            correlationPropertyBindingEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(35);
         }
         return correlationPropertyBindingEClass;
     }
@@ -3653,8 +3650,8 @@
      */
     public EClass getCorrelationSubscription() {
         if (correlationSubscriptionEClass == null) {
-            correlationSubscriptionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(37);
+            correlationSubscriptionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(37);
         }
         return correlationSubscriptionEClass;
     }
@@ -3684,8 +3681,8 @@
      */
     public EClass getDataAssociation() {
         if (dataAssociationEClass == null) {
-            dataAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(38);
+            dataAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(38);
         }
         return dataAssociationEClass;
     }
@@ -3791,8 +3788,8 @@
      */
     public EClass getDataInputAssociation() {
         if (dataInputAssociationEClass == null) {
-            dataInputAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(40);
+            dataInputAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(40);
         }
         return dataInputAssociationEClass;
     }
@@ -3826,8 +3823,8 @@
      */
     public EClass getDataObjectReference() {
         if (dataObjectReferenceEClass == null) {
-            dataObjectReferenceEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(42);
+            dataObjectReferenceEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(42);
         }
         return dataObjectReferenceEClass;
     }
@@ -3906,8 +3903,8 @@
      */
     public EClass getDataOutputAssociation() {
         if (dataOutputAssociationEClass == null) {
-            dataOutputAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(44);
+            dataOutputAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(44);
         }
         return dataOutputAssociationEClass;
     }
@@ -3981,8 +3978,8 @@
      */
     public EClass getDataStoreReference() {
         if (dataStoreReferenceEClass == null) {
-            dataStoreReferenceEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(47);
+            dataStoreReferenceEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(47);
         }
         return dataStoreReferenceEClass;
     }
@@ -4003,8 +4000,8 @@
      */
     public EClass getDefinitions() {
         if (definitionsEClass == null) {
-            definitionsEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(48);
+            definitionsEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(48);
         }
         return definitionsEClass;
     }
@@ -4115,8 +4112,8 @@
      */
     public EClass getDocumentation() {
         if (documentationEClass == null) {
-            documentationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(49);
+            documentationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(49);
         }
         return documentationEClass;
     }
@@ -4212,8 +4209,8 @@
      */
     public EClass getErrorEventDefinition() {
         if (errorEventDefinitionEClass == null) {
-            errorEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(53);
+            errorEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(53);
         }
         return errorEventDefinitionEClass;
     }
@@ -4274,8 +4271,8 @@
      */
     public EClass getEscalationEventDefinition() {
         if (escalationEventDefinitionEClass == null) {
-            escalationEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(55);
+            escalationEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(55);
         }
         return escalationEventDefinitionEClass;
     }
@@ -4318,8 +4315,8 @@
      */
     public EClass getEventBasedGateway() {
         if (eventBasedGatewayEClass == null) {
-            eventBasedGatewayEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(57);
+            eventBasedGatewayEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(57);
         }
         return eventBasedGatewayEClass;
     }
@@ -4349,8 +4346,8 @@
      */
     public EClass getEventDefinition() {
         if (eventDefinitionEClass == null) {
-            eventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(59);
+            eventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(59);
         }
         return eventDefinitionEClass;
     }
@@ -4362,8 +4359,8 @@
      */
     public EClass getExclusiveGateway() {
         if (exclusiveGatewayEClass == null) {
-            exclusiveGatewayEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(60);
+            exclusiveGatewayEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(60);
         }
         return exclusiveGatewayEClass;
     }
@@ -4428,8 +4425,8 @@
      */
     public EClass getExtensionAttributeDefinition() {
         if (extensionAttributeDefinitionEClass == null) {
-            extensionAttributeDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(63);
+            extensionAttributeDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(63);
         }
         return extensionAttributeDefinitionEClass;
     }
@@ -4477,8 +4474,8 @@
      */
     public EClass getExtensionAttributeValue() {
         if (extensionAttributeValueEClass == null) {
-            extensionAttributeValueEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(64);
+            extensionAttributeValueEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(64);
         }
         return extensionAttributeValueEClass;
     }
@@ -4517,8 +4514,8 @@
      */
     public EClass getExtensionDefinition() {
         if (extensionDefinitionEClass == null) {
-            extensionDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(65);
+            extensionDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(65);
         }
         return extensionDefinitionEClass;
     }
@@ -4548,8 +4545,8 @@
      */
     public EClass getFlowElement() {
         if (flowElementEClass == null) {
-            flowElementEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(66);
+            flowElementEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(66);
         }
         return flowElementEClass;
     }
@@ -4597,8 +4594,8 @@
      */
     public EClass getFlowElementsContainer() {
         if (flowElementsContainerEClass == null) {
-            flowElementsContainerEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(67);
+            flowElementsContainerEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(67);
         }
         return flowElementsContainerEClass;
     }
@@ -4668,8 +4665,8 @@
      */
     public EClass getFormalExpression() {
         if (formalExpressionEClass == null) {
-            formalExpressionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(69);
+            formalExpressionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(69);
         }
         return formalExpressionEClass;
     }
@@ -4730,8 +4727,8 @@
      */
     public EClass getGlobalBusinessRuleTask() {
         if (globalBusinessRuleTaskEClass == null) {
-            globalBusinessRuleTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(72);
+            globalBusinessRuleTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(72);
         }
         return globalBusinessRuleTaskEClass;
     }
@@ -4752,8 +4749,8 @@
      */
     public EClass getGlobalChoreographyTask() {
         if (globalChoreographyTaskEClass == null) {
-            globalChoreographyTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(73);
+            globalChoreographyTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(73);
         }
         return globalChoreographyTaskEClass;
     }
@@ -4774,8 +4771,8 @@
      */
     public EClass getGlobalConversation() {
         if (globalConversationEClass == null) {
-            globalConversationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(74);
+            globalConversationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(74);
         }
         return globalConversationEClass;
     }
@@ -4787,8 +4784,8 @@
      */
     public EClass getGlobalManualTask() {
         if (globalManualTaskEClass == null) {
-            globalManualTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(75);
+            globalManualTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(75);
         }
         return globalManualTaskEClass;
     }
@@ -4800,8 +4797,8 @@
      */
     public EClass getGlobalScriptTask() {
         if (globalScriptTaskEClass == null) {
-            globalScriptTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(76);
+            globalScriptTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(76);
         }
         return globalScriptTaskEClass;
     }
@@ -4853,8 +4850,8 @@
      */
     public EClass getGlobalUserTask() {
         if (globalUserTaskEClass == null) {
-            globalUserTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(78);
+            globalUserTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(78);
         }
         return globalUserTaskEClass;
     }
@@ -4906,8 +4903,8 @@
      */
     public EClass getHumanPerformer() {
         if (humanPerformerEClass == null) {
-            humanPerformerEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(80);
+            humanPerformerEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(80);
         }
         return humanPerformerEClass;
     }
@@ -4919,8 +4916,8 @@
      */
     public EClass getImplicitThrowEvent() {
         if (implicitThrowEventEClass == null) {
-            implicitThrowEventEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(81);
+            implicitThrowEventEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(81);
         }
         return implicitThrowEventEClass;
     }
@@ -4972,8 +4969,8 @@
      */
     public EClass getInclusiveGateway() {
         if (inclusiveGatewayEClass == null) {
-            inclusiveGatewayEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(83);
+            inclusiveGatewayEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(83);
         }
         return inclusiveGatewayEClass;
     }
@@ -4994,8 +4991,8 @@
      */
     public EClass getInputOutputBinding() {
         if (inputOutputBindingEClass == null) {
-            inputOutputBindingEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(84);
+            inputOutputBindingEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(84);
         }
         return inputOutputBindingEClass;
     }
@@ -5034,8 +5031,8 @@
      */
     public EClass getInputOutputSpecification() {
         if (inputOutputSpecificationEClass == null) {
-            inputOutputSpecificationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(85);
+            inputOutputSpecificationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(85);
         }
         return inputOutputSpecificationEClass;
     }
@@ -5141,8 +5138,8 @@
      */
     public EClass getInteractionNode() {
         if (interactionNodeEClass == null) {
-            interactionNodeEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(87);
+            interactionNodeEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(87);
         }
         return interactionNodeEClass;
     }
@@ -5212,8 +5209,8 @@
      */
     public EClass getIntermediateCatchEvent() {
         if (intermediateCatchEventEClass == null) {
-            intermediateCatchEventEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(89);
+            intermediateCatchEventEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(89);
         }
         return intermediateCatchEventEClass;
     }
@@ -5225,8 +5222,8 @@
      */
     public EClass getIntermediateThrowEvent() {
         if (intermediateThrowEventEClass == null) {
-            intermediateThrowEventEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(90);
+            intermediateThrowEventEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(90);
         }
         return intermediateThrowEventEClass;
     }
@@ -5238,8 +5235,8 @@
      */
     public EClass getItemAwareElement() {
         if (itemAwareElementEClass == null) {
-            itemAwareElementEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(91);
+            itemAwareElementEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(91);
         }
         return itemAwareElementEClass;
     }
@@ -5269,8 +5266,8 @@
      */
     public EClass getItemDefinition() {
         if (itemDefinitionEClass == null) {
-            itemDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(92);
+            itemDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(92);
         }
         return itemDefinitionEClass;
     }
@@ -5407,8 +5404,8 @@
      */
     public EClass getLinkEventDefinition() {
         if (linkEventDefinitionEClass == null) {
-            linkEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(96);
+            linkEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(96);
         }
         return linkEventDefinitionEClass;
     }
@@ -5447,8 +5444,8 @@
      */
     public EClass getLoopCharacteristics() {
         if (loopCharacteristicsEClass == null) {
-            loopCharacteristicsEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(97);
+            loopCharacteristicsEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(97);
         }
         return loopCharacteristicsEClass;
     }
@@ -5504,8 +5501,8 @@
      */
     public EClass getMessageEventDefinition() {
         if (messageEventDefinitionEClass == null) {
-            messageEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(100);
+            messageEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(100);
         }
         return messageEventDefinitionEClass;
     }
@@ -5535,8 +5532,8 @@
      */
     public EClass getMessageFlow() {
         if (messageFlowEClass == null) {
-            messageFlowEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(101);
+            messageFlowEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(101);
         }
         return messageFlowEClass;
     }
@@ -5584,8 +5581,8 @@
      */
     public EClass getMessageFlowAssociation() {
         if (messageFlowAssociationEClass == null) {
-            messageFlowAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(102);
+            messageFlowAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(102);
         }
         return messageFlowAssociationEClass;
     }
@@ -5856,8 +5853,8 @@
      */
     public EClass getParallelGateway() {
         if (parallelGatewayEClass == null) {
-            parallelGatewayEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(108);
+            parallelGatewayEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(108);
         }
         return parallelGatewayEClass;
     }
@@ -5869,8 +5866,8 @@
      */
     public EClass getParticipant() {
         if (participantEClass == null) {
-            participantEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(109);
+            participantEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(109);
         }
         return participantEClass;
     }
@@ -5927,8 +5924,8 @@
      */
     public EClass getParticipantAssociation() {
         if (participantAssociationEClass == null) {
-            participantAssociationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(110);
+            participantAssociationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(110);
         }
         return participantAssociationEClass;
     }
@@ -5958,8 +5955,8 @@
      */
     public EClass getParticipantMultiplicity() {
         if (participantMultiplicityEClass == null) {
-            participantMultiplicityEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(111);
+            participantMultiplicityEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(111);
         }
         return participantMultiplicityEClass;
     }
@@ -5989,8 +5986,8 @@
      */
     public EClass getPartnerEntity() {
         if (partnerEntityEClass == null) {
-            partnerEntityEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(112);
+            partnerEntityEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(112);
         }
         return partnerEntityEClass;
     }
@@ -6020,8 +6017,8 @@
      */
     public EClass getPartnerRole() {
         if (partnerRoleEClass == null) {
-            partnerRoleEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(113);
+            partnerRoleEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(113);
         }
         return partnerRoleEClass;
     }
@@ -6064,8 +6061,8 @@
      */
     public EClass getPotentialOwner() {
         if (potentialOwnerEClass == null) {
-            potentialOwnerEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(115);
+            potentialOwnerEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(115);
         }
         return potentialOwnerEClass;
     }
@@ -6211,8 +6208,8 @@
      */
     public EClass getReceiveTask() {
         if (receiveTaskEClass == null) {
-            receiveTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(119);
+            receiveTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(119);
         }
         return receiveTaskEClass;
     }
@@ -6260,8 +6257,8 @@
      */
     public EClass getRelationship() {
         if (relationshipEClass == null) {
-            relationshipEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(120);
+            relationshipEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(120);
         }
         return relationshipEClass;
     }
@@ -6353,8 +6350,8 @@
      */
     public EClass getResourceAssignmentExpression() {
         if (resourceAssignmentExpressionEClass == null) {
-            resourceAssignmentExpressionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(124);
+            resourceAssignmentExpressionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(124);
         }
         return resourceAssignmentExpressionEClass;
     }
@@ -6375,8 +6372,8 @@
      */
     public EClass getResourceParameter() {
         if (resourceParameterEClass == null) {
-            resourceParameterEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(125);
+            resourceParameterEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(125);
         }
         return resourceParameterEClass;
     }
@@ -6415,8 +6412,8 @@
      */
     public EClass getResourceParameterBinding() {
         if (resourceParameterBindingEClass == null) {
-            resourceParameterBindingEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(126);
+            resourceParameterBindingEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(126);
         }
         return resourceParameterBindingEClass;
     }
@@ -6446,8 +6443,8 @@
      */
     public EClass getResourceRole() {
         if (resourceRoleEClass == null) {
-            resourceRoleEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(127);
+            resourceRoleEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(127);
         }
         return resourceRoleEClass;
     }
@@ -6495,8 +6492,8 @@
      */
     public EClass getRootElement() {
         if (rootElementEClass == null) {
-            rootElementEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(128);
+            rootElementEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(128);
         }
         return rootElementEClass;
     }
@@ -6579,8 +6576,8 @@
      */
     public EClass getSequenceFlow() {
         if (sequenceFlowEClass == null) {
-            sequenceFlowEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(131);
+            sequenceFlowEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(131);
         }
         return sequenceFlowEClass;
     }
@@ -6628,8 +6625,8 @@
      */
     public EClass getServiceTask() {
         if (serviceTaskEClass == null) {
-            serviceTaskEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(132);
+            serviceTaskEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(132);
         }
         return serviceTaskEClass;
     }
@@ -6690,8 +6687,8 @@
      */
     public EClass getSignalEventDefinition() {
         if (signalEventDefinitionEClass == null) {
-            signalEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(134);
+            signalEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(134);
         }
         return signalEventDefinitionEClass;
     }
@@ -6712,8 +6709,8 @@
      */
     public EClass getStandardLoopCharacteristics() {
         if (standardLoopCharacteristicsEClass == null) {
-            standardLoopCharacteristicsEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(135);
+            standardLoopCharacteristicsEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(135);
         }
         return standardLoopCharacteristicsEClass;
     }
@@ -6774,8 +6771,8 @@
      */
     public EClass getSubChoreography() {
         if (subChoreographyEClass == null) {
-            subChoreographyEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(137);
+            subChoreographyEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(137);
         }
         return subChoreographyEClass;
     }
@@ -6796,8 +6793,8 @@
      */
     public EClass getSubConversation() {
         if (subConversationEClass == null) {
-            subConversationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(138);
+            subConversationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(138);
         }
         return subConversationEClass;
     }
@@ -6862,8 +6859,8 @@
      */
     public EClass getTerminateEventDefinition() {
         if (terminateEventDefinitionEClass == null) {
-            terminateEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(141);
+            terminateEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(141);
         }
         return terminateEventDefinitionEClass;
     }
@@ -6875,8 +6872,8 @@
      */
     public EClass getTextAnnotation() {
         if (textAnnotationEClass == null) {
-            textAnnotationEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(142);
+            textAnnotationEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(142);
         }
         return textAnnotationEClass;
     }
@@ -6964,8 +6961,8 @@
      */
     public EClass getTimerEventDefinition() {
         if (timerEventDefinitionEClass == null) {
-            timerEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(144);
+            timerEventDefinitionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(144);
         }
         return timerEventDefinitionEClass;
     }
@@ -7004,8 +7001,8 @@
      */
     public EClass getTransaction() {
         if (transactionEClass == null) {
-            transactionEClass = (EClass) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(145);
+            transactionEClass = (EClass) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(145);
         }
         return transactionEClass;
     }
@@ -7066,8 +7063,8 @@
      */
     public EEnum getAdHocOrdering() {
         if (adHocOrderingEEnum == null) {
-            adHocOrderingEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(2);
+            adHocOrderingEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(2);
         }
         return adHocOrderingEEnum;
     }
@@ -7079,8 +7076,8 @@
      */
     public EEnum getAssociationDirection() {
         if (associationDirectionEEnum == null) {
-            associationDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(7);
+            associationDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(7);
         }
         return associationDirectionEEnum;
     }
@@ -7092,8 +7089,8 @@
      */
     public EEnum getChoreographyLoopType() {
         if (choreographyLoopTypeEEnum == null) {
-            choreographyLoopTypeEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(22);
+            choreographyLoopTypeEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(22);
         }
         return choreographyLoopTypeEEnum;
     }
@@ -7105,8 +7102,8 @@
      */
     public EEnum getEventBasedGatewayType() {
         if (eventBasedGatewayTypeEEnum == null) {
-            eventBasedGatewayTypeEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(58);
+            eventBasedGatewayTypeEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(58);
         }
         return eventBasedGatewayTypeEEnum;
     }
@@ -7118,8 +7115,8 @@
      */
     public EEnum getGatewayDirection() {
         if (gatewayDirectionEEnum == null) {
-            gatewayDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(71);
+            gatewayDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(71);
         }
         return gatewayDirectionEEnum;
     }
@@ -7144,8 +7141,8 @@
      */
     public EEnum getMultiInstanceBehavior() {
         if (multiInstanceBehaviorEEnum == null) {
-            multiInstanceBehaviorEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(104);
+            multiInstanceBehaviorEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(104);
         }
         return multiInstanceBehaviorEEnum;
     }
@@ -7170,8 +7167,8 @@
      */
     public EEnum getRelationshipDirection() {
         if (relationshipDirectionEEnum == null) {
-            relationshipDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE.getEPackage(
-                    Bpmn2Package.eNS_URI).getEClassifiers().get(121);
+            relationshipDirectionEEnum = (EEnum) EPackage.Registry.INSTANCE
+                    .getEPackage(Bpmn2Package.eNS_URI).getEClassifiers().get(121);
         }
         return relationshipDirectionEEnum;
     }
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationLinkImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationLinkImpl.java
index 44972db..24f3e7f 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationLinkImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationLinkImpl.java
@@ -126,6 +126,24 @@
      * @generated
      */
     public InteractionNode getSourceRef() {
+        if (sourceRef != null && sourceRef.eIsProxy()) {
+            InternalEObject oldSourceRef = (InternalEObject) sourceRef;
+            sourceRef = (InteractionNode) eResolveProxy(oldSourceRef);
+            if (sourceRef != oldSourceRef) {
+                if (eNotificationRequired())
+                    eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+                            Bpmn2Package.CONVERSATION_LINK__SOURCE_REF, oldSourceRef, sourceRef));
+            }
+        }
+        return sourceRef;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public InteractionNode basicGetSourceRef() {
         return sourceRef;
     }
 
@@ -178,6 +196,24 @@
      * @generated
      */
     public InteractionNode getTargetRef() {
+        if (targetRef != null && targetRef.eIsProxy()) {
+            InternalEObject oldTargetRef = (InternalEObject) targetRef;
+            targetRef = (InteractionNode) eResolveProxy(oldTargetRef);
+            if (targetRef != oldTargetRef) {
+                if (eNotificationRequired())
+                    eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+                            Bpmn2Package.CONVERSATION_LINK__TARGET_REF, oldTargetRef, targetRef));
+            }
+        }
+        return targetRef;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    public InteractionNode basicGetTargetRef() {
         return targetRef;
     }
 
@@ -277,9 +313,13 @@
         case Bpmn2Package.CONVERSATION_LINK__NAME:
             return getName();
         case Bpmn2Package.CONVERSATION_LINK__SOURCE_REF:
-            return getSourceRef();
+            if (resolve)
+                return getSourceRef();
+            return basicGetSourceRef();
         case Bpmn2Package.CONVERSATION_LINK__TARGET_REF:
-            return getTargetRef();
+            if (resolve)
+                return getTargetRef();
+            return basicGetTargetRef();
         }
         return super.eGet(featureID, resolve, coreType);
     }
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/DocumentRootImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/DocumentRootImpl.java
index ab9e0f5..8045642 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/DocumentRootImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/DocumentRootImpl.java
@@ -16,6 +16,137 @@
 
 import java.util.Map;
 
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.AdHocSubProcess;
+import org.eclipse.bpmn2.Artifact;
+import org.eclipse.bpmn2.Assignment;
+import org.eclipse.bpmn2.Association;
+import org.eclipse.bpmn2.Auditing;
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.BoundaryEvent;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.BusinessRuleTask;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CallableElement;
+import org.eclipse.bpmn2.CancelEventDefinition;
+import org.eclipse.bpmn2.CatchEvent;
+import org.eclipse.bpmn2.Category;
+import org.eclipse.bpmn2.CategoryValue;
+import org.eclipse.bpmn2.Choreography;
+import org.eclipse.bpmn2.ChoreographyActivity;
+import org.eclipse.bpmn2.ChoreographyTask;
+import org.eclipse.bpmn2.Collaboration;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.ComplexBehaviorDefinition;
+import org.eclipse.bpmn2.ComplexGateway;
+import org.eclipse.bpmn2.ConditionalEventDefinition;
+import org.eclipse.bpmn2.Conversation;
+import org.eclipse.bpmn2.ConversationAssociation;
+import org.eclipse.bpmn2.ConversationLink;
+import org.eclipse.bpmn2.ConversationNode;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationProperty;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.CorrelationSubscription;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataInputAssociation;
+import org.eclipse.bpmn2.DataObject;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.DataOutputAssociation;
+import org.eclipse.bpmn2.DataState;
+import org.eclipse.bpmn2.DataStore;
+import org.eclipse.bpmn2.DataStoreReference;
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.DocumentRoot;
+import org.eclipse.bpmn2.Documentation;
+import org.eclipse.bpmn2.EndEvent;
+import org.eclipse.bpmn2.EndPoint;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.Event;
+import org.eclipse.bpmn2.EventBasedGateway;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.ExclusiveGateway;
+import org.eclipse.bpmn2.Expression;
+import org.eclipse.bpmn2.Extension;
+import org.eclipse.bpmn2.FlowElement;
+import org.eclipse.bpmn2.FlowNode;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.Gateway;
+import org.eclipse.bpmn2.GlobalBusinessRuleTask;
+import org.eclipse.bpmn2.GlobalChoreographyTask;
+import org.eclipse.bpmn2.GlobalConversation;
+import org.eclipse.bpmn2.GlobalManualTask;
+import org.eclipse.bpmn2.GlobalScriptTask;
+import org.eclipse.bpmn2.GlobalTask;
+import org.eclipse.bpmn2.GlobalUserTask;
+import org.eclipse.bpmn2.Group;
+import org.eclipse.bpmn2.HumanPerformer;
+import org.eclipse.bpmn2.ImplicitThrowEvent;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.InclusiveGateway;
+import org.eclipse.bpmn2.InputOutputBinding;
+import org.eclipse.bpmn2.InputOutputSpecification;
+import org.eclipse.bpmn2.InputSet;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.IntermediateCatchEvent;
+import org.eclipse.bpmn2.IntermediateThrowEvent;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.LaneSet;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.LoopCharacteristics;
+import org.eclipse.bpmn2.ManualTask;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MessageFlowAssociation;
+import org.eclipse.bpmn2.Monitoring;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.OutputSet;
+import org.eclipse.bpmn2.ParallelGateway;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.ParticipantAssociation;
+import org.eclipse.bpmn2.ParticipantMultiplicity;
+import org.eclipse.bpmn2.PartnerEntity;
+import org.eclipse.bpmn2.PartnerRole;
+import org.eclipse.bpmn2.Performer;
+import org.eclipse.bpmn2.PotentialOwner;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.Relationship;
+import org.eclipse.bpmn2.Rendering;
+import org.eclipse.bpmn2.Resource;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameter;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.StandardLoopCharacteristics;
+import org.eclipse.bpmn2.StartEvent;
+import org.eclipse.bpmn2.SubChoreography;
+import org.eclipse.bpmn2.SubConversation;
+import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.TerminateEventDefinition;
+import org.eclipse.bpmn2.TextAnnotation;
+import org.eclipse.bpmn2.ThrowEvent;
+import org.eclipse.bpmn2.TimerEventDefinition;
+import org.eclipse.bpmn2.Transaction;
+import org.eclipse.bpmn2.UserTask;
 import org.eclipse.bpmn2.*;
 import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EMap;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/EventDefinitionImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/EventDefinitionImpl.java
index 76c3f57..af40c21 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/EventDefinitionImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/EventDefinitionImpl.java
@@ -27,7 +27,7 @@
  *
  * @generated
  */
-public abstract class EventDefinitionImpl extends RootElementImpl implements EventDefinition {
+public class EventDefinitionImpl extends RootElementImpl implements EventDefinition {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/FlowElementImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/FlowElementImpl.java
index 7aa25d4..4f2313e 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/FlowElementImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/FlowElementImpl.java
@@ -28,6 +28,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
 import org.eclipse.emf.ecore.util.EObjectWithInverseEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -224,7 +225,7 @@
      */
     public List<CategoryValue> getCategoryValueRef() {
         if (categoryValueRef == null) {
-            categoryValueRef = new EObjectWithInverseEList.ManyInverse<CategoryValue>(
+            categoryValueRef = new EObjectWithInverseResolvingEList.ManyInverse<CategoryValue>(
                     CategoryValue.class, this, Bpmn2Package.FLOW_ELEMENT__CATEGORY_VALUE_REF,
                     Bpmn2Package.CATEGORY_VALUE__CATEGORIZED_FLOW_ELEMENTS);
         }
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/InteractionNodeImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/InteractionNodeImpl.java
index 78e57dc..96b6e2b 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/InteractionNodeImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/InteractionNodeImpl.java
@@ -43,7 +43,7 @@
  *
  * @generated
  */
-public abstract class InteractionNodeImpl extends EObjectImpl implements InteractionNode {
+public class InteractionNodeImpl extends EObjectImpl implements InteractionNode {
     /**
      * The cached value of the '{@link #getIncomingConversationLinks() <em>Incoming Conversation Links</em>}' reference list.
      * <!-- begin-user-doc -->
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ThrowEventImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ThrowEventImpl.java
index 006189b..9e23acd 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ThrowEventImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ThrowEventImpl.java
@@ -30,6 +30,7 @@
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.EObjectEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 
@@ -217,8 +218,8 @@
      */
     public List<EventDefinition> getEventDefinitionRefs() {
         if (eventDefinitionRefs == null) {
-            eventDefinitionRefs = new EObjectEList<EventDefinition>(EventDefinition.class, this,
-                    Bpmn2Package.THROW_EVENT__EVENT_DEFINITION_REFS);
+            eventDefinitionRefs = new EObjectResolvingEList<EventDefinition>(EventDefinition.class,
+                    this, Bpmn2Package.THROW_EVENT__EVENT_DEFINITION_REFS);
         }
         return eventDefinitionRefs;
     }
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore
index 67424ae..8924820 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore
@@ -1321,7 +1321,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Activity" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="Activity" eSuperTypes="#//FlowNode">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tActivity"/>
       <details key="kind" value="elementOnly"/>
@@ -1547,7 +1547,7 @@
       <details key="kind" value="elementOnly"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="attachedToRef" ordered="false"
-        lowerBound="1" eType="#//Activity" resolveProxies="false" eOpposite="#//Activity/boundaryEventRefs">
+        lowerBound="1" eType="#//Activity" transient="true" eOpposite="#//Activity/boundaryEventRefs">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="attachedToRef"/>
@@ -2044,14 +2044,14 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="sourceRef" ordered="false"
-        lowerBound="1" eType="#//InteractionNode" resolveProxies="false" eOpposite="#//InteractionNode/outgoingConversationLinks">
+        lowerBound="1" eType="#//InteractionNode" transient="true" eOpposite="#//InteractionNode/outgoingConversationLinks">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="sourceRef"/>
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="targetRef" ordered="false"
-        lowerBound="1" eType="#//InteractionNode" resolveProxies="false" eOpposite="#//InteractionNode/incomingConversationLinks">
+        lowerBound="1" eType="#//InteractionNode" transient="true" eOpposite="#//InteractionNode/incomingConversationLinks">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="attribute"/>
         <details key="name" value="targetRef"/>
@@ -2635,7 +2635,7 @@
     <eLiterals name="Parallel"/>
     <eLiterals name="Exclusive" value="1"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" abstract="true" eSuperTypes="#//RootElement">
+  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" eSuperTypes="#//RootElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tEventDefinition"/>
       <details key="kind" value="elementOnly"/>
@@ -2733,7 +2733,7 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="categoryValueRef" ordered="false"
-        upperBound="-1" eType="#//CategoryValue" resolveProxies="false" eOpposite="#//CategoryValue/categorizedFlowElements">
+        upperBound="-1" eType="#//CategoryValue" transient="true" eOpposite="#//CategoryValue/categorizedFlowElements">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="element"/>
         <details key="name" value="categoryValueRef"/>
@@ -3105,7 +3105,7 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode">
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" transient="true"
         derived="true" resolveProxies="false" eOpposite="#//ConversationLink/targetRef"/>
@@ -4370,7 +4370,7 @@
       </eAnnotations>
     </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="eventDefinitionRefs" ordered="false"
-        upperBound="-1" eType="#//EventDefinition" resolveProxies="false">
+        upperBound="-1" eType="#//EventDefinition">
       <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
         <details key="kind" value="element"/>
         <details key="name" value="eventDefinitionRef"/>
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2AdapterFactory.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2AdapterFactory.java
index 44dad55..a147a58 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2AdapterFactory.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2AdapterFactory.java
@@ -14,6 +14,143 @@
  */
 package org.eclipse.bpmn2.util;
 
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.AdHocSubProcess;
+import org.eclipse.bpmn2.Artifact;
+import org.eclipse.bpmn2.Assignment;
+import org.eclipse.bpmn2.Association;
+import org.eclipse.bpmn2.Auditing;
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.BoundaryEvent;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.BusinessRuleTask;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CallableElement;
+import org.eclipse.bpmn2.CancelEventDefinition;
+import org.eclipse.bpmn2.CatchEvent;
+import org.eclipse.bpmn2.Category;
+import org.eclipse.bpmn2.CategoryValue;
+import org.eclipse.bpmn2.Choreography;
+import org.eclipse.bpmn2.ChoreographyActivity;
+import org.eclipse.bpmn2.ChoreographyTask;
+import org.eclipse.bpmn2.Collaboration;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.ComplexBehaviorDefinition;
+import org.eclipse.bpmn2.ComplexGateway;
+import org.eclipse.bpmn2.ConditionalEventDefinition;
+import org.eclipse.bpmn2.Conversation;
+import org.eclipse.bpmn2.ConversationAssociation;
+import org.eclipse.bpmn2.ConversationLink;
+import org.eclipse.bpmn2.ConversationNode;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationProperty;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.CorrelationSubscription;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataInputAssociation;
+import org.eclipse.bpmn2.DataObject;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.DataOutputAssociation;
+import org.eclipse.bpmn2.DataState;
+import org.eclipse.bpmn2.DataStore;
+import org.eclipse.bpmn2.DataStoreReference;
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.DocumentRoot;
+import org.eclipse.bpmn2.Documentation;
+import org.eclipse.bpmn2.EndEvent;
+import org.eclipse.bpmn2.EndPoint;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.Event;
+import org.eclipse.bpmn2.EventBasedGateway;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.ExclusiveGateway;
+import org.eclipse.bpmn2.Expression;
+import org.eclipse.bpmn2.Extension;
+import org.eclipse.bpmn2.ExtensionAttributeDefinition;
+import org.eclipse.bpmn2.ExtensionAttributeValue;
+import org.eclipse.bpmn2.ExtensionDefinition;
+import org.eclipse.bpmn2.FlowElement;
+import org.eclipse.bpmn2.FlowElementsContainer;
+import org.eclipse.bpmn2.FlowNode;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.Gateway;
+import org.eclipse.bpmn2.GlobalBusinessRuleTask;
+import org.eclipse.bpmn2.GlobalChoreographyTask;
+import org.eclipse.bpmn2.GlobalConversation;
+import org.eclipse.bpmn2.GlobalManualTask;
+import org.eclipse.bpmn2.GlobalScriptTask;
+import org.eclipse.bpmn2.GlobalTask;
+import org.eclipse.bpmn2.GlobalUserTask;
+import org.eclipse.bpmn2.Group;
+import org.eclipse.bpmn2.HumanPerformer;
+import org.eclipse.bpmn2.ImplicitThrowEvent;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.InclusiveGateway;
+import org.eclipse.bpmn2.InputOutputBinding;
+import org.eclipse.bpmn2.InputOutputSpecification;
+import org.eclipse.bpmn2.InputSet;
+import org.eclipse.bpmn2.InteractionNode;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.IntermediateCatchEvent;
+import org.eclipse.bpmn2.IntermediateThrowEvent;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.LaneSet;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.LoopCharacteristics;
+import org.eclipse.bpmn2.ManualTask;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MessageFlowAssociation;
+import org.eclipse.bpmn2.Monitoring;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.OutputSet;
+import org.eclipse.bpmn2.ParallelGateway;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.ParticipantAssociation;
+import org.eclipse.bpmn2.ParticipantMultiplicity;
+import org.eclipse.bpmn2.PartnerEntity;
+import org.eclipse.bpmn2.PartnerRole;
+import org.eclipse.bpmn2.Performer;
+import org.eclipse.bpmn2.PotentialOwner;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.Relationship;
+import org.eclipse.bpmn2.Rendering;
+import org.eclipse.bpmn2.Resource;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameter;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.StandardLoopCharacteristics;
+import org.eclipse.bpmn2.StartEvent;
+import org.eclipse.bpmn2.SubChoreography;
+import org.eclipse.bpmn2.SubConversation;
+import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.TerminateEventDefinition;
+import org.eclipse.bpmn2.TextAnnotation;
+import org.eclipse.bpmn2.ThrowEvent;
+import org.eclipse.bpmn2.TimerEventDefinition;
+import org.eclipse.bpmn2.Transaction;
+import org.eclipse.bpmn2.UserTask;
 import org.eclipse.bpmn2.*;
 import org.eclipse.emf.common.notify.Adapter;
 import org.eclipse.emf.common.notify.Notifier;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
index c37d0e6..72c4463 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2ResourceImpl.java
@@ -53,7 +53,7 @@
      * <!-- begin-user-doc -->

      * <!-- end-user-doc -->

      * @param uri the URI of the new resource.

-     * @generated

+     * @generated NOT

      */

     public Bpmn2ResourceImpl(URI uri) {

         super(uri);

@@ -61,7 +61,6 @@
         this.uriHandler = new QNameURIHandler(xmlHelper);

         this.getDefaultLoadOptions().put(XMLResource.OPTION_URI_HANDLER, uriHandler);

         this.getDefaultSaveOptions().put(XMLResource.OPTION_URI_HANDLER, uriHandler);

-

     }

 

     // This method is called by all save methods - save(Document,...), doSave(Writer/OutputStream, ...) - in superclasses.

diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2Switch.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2Switch.java
index fcb1f5d..9eba7b1 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2Switch.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/util/Bpmn2Switch.java
@@ -16,6 +16,143 @@
 
 import java.util.List;
 
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.AdHocSubProcess;
+import org.eclipse.bpmn2.Artifact;
+import org.eclipse.bpmn2.Assignment;
+import org.eclipse.bpmn2.Association;
+import org.eclipse.bpmn2.Auditing;
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.BoundaryEvent;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.BusinessRuleTask;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CallableElement;
+import org.eclipse.bpmn2.CancelEventDefinition;
+import org.eclipse.bpmn2.CatchEvent;
+import org.eclipse.bpmn2.Category;
+import org.eclipse.bpmn2.CategoryValue;
+import org.eclipse.bpmn2.Choreography;
+import org.eclipse.bpmn2.ChoreographyActivity;
+import org.eclipse.bpmn2.ChoreographyTask;
+import org.eclipse.bpmn2.Collaboration;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.ComplexBehaviorDefinition;
+import org.eclipse.bpmn2.ComplexGateway;
+import org.eclipse.bpmn2.ConditionalEventDefinition;
+import org.eclipse.bpmn2.Conversation;
+import org.eclipse.bpmn2.ConversationAssociation;
+import org.eclipse.bpmn2.ConversationLink;
+import org.eclipse.bpmn2.ConversationNode;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationProperty;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.CorrelationSubscription;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataInputAssociation;
+import org.eclipse.bpmn2.DataObject;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.DataOutputAssociation;
+import org.eclipse.bpmn2.DataState;
+import org.eclipse.bpmn2.DataStore;
+import org.eclipse.bpmn2.DataStoreReference;
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.DocumentRoot;
+import org.eclipse.bpmn2.Documentation;
+import org.eclipse.bpmn2.EndEvent;
+import org.eclipse.bpmn2.EndPoint;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.Event;
+import org.eclipse.bpmn2.EventBasedGateway;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.ExclusiveGateway;
+import org.eclipse.bpmn2.Expression;
+import org.eclipse.bpmn2.Extension;
+import org.eclipse.bpmn2.ExtensionAttributeDefinition;
+import org.eclipse.bpmn2.ExtensionAttributeValue;
+import org.eclipse.bpmn2.ExtensionDefinition;
+import org.eclipse.bpmn2.FlowElement;
+import org.eclipse.bpmn2.FlowElementsContainer;
+import org.eclipse.bpmn2.FlowNode;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.Gateway;
+import org.eclipse.bpmn2.GlobalBusinessRuleTask;
+import org.eclipse.bpmn2.GlobalChoreographyTask;
+import org.eclipse.bpmn2.GlobalConversation;
+import org.eclipse.bpmn2.GlobalManualTask;
+import org.eclipse.bpmn2.GlobalScriptTask;
+import org.eclipse.bpmn2.GlobalTask;
+import org.eclipse.bpmn2.GlobalUserTask;
+import org.eclipse.bpmn2.Group;
+import org.eclipse.bpmn2.HumanPerformer;
+import org.eclipse.bpmn2.ImplicitThrowEvent;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.InclusiveGateway;
+import org.eclipse.bpmn2.InputOutputBinding;
+import org.eclipse.bpmn2.InputOutputSpecification;
+import org.eclipse.bpmn2.InputSet;
+import org.eclipse.bpmn2.InteractionNode;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.IntermediateCatchEvent;
+import org.eclipse.bpmn2.IntermediateThrowEvent;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.LaneSet;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.LoopCharacteristics;
+import org.eclipse.bpmn2.ManualTask;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MessageFlowAssociation;
+import org.eclipse.bpmn2.Monitoring;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.OutputSet;
+import org.eclipse.bpmn2.ParallelGateway;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.ParticipantAssociation;
+import org.eclipse.bpmn2.ParticipantMultiplicity;
+import org.eclipse.bpmn2.PartnerEntity;
+import org.eclipse.bpmn2.PartnerRole;
+import org.eclipse.bpmn2.Performer;
+import org.eclipse.bpmn2.PotentialOwner;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.Relationship;
+import org.eclipse.bpmn2.Rendering;
+import org.eclipse.bpmn2.Resource;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameter;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.StandardLoopCharacteristics;
+import org.eclipse.bpmn2.StartEvent;
+import org.eclipse.bpmn2.SubChoreography;
+import org.eclipse.bpmn2.SubConversation;
+import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.TerminateEventDefinition;
+import org.eclipse.bpmn2.TextAnnotation;
+import org.eclipse.bpmn2.ThrowEvent;
+import org.eclipse.bpmn2.TimerEventDefinition;
+import org.eclipse.bpmn2.Transaction;
+import org.eclipse.bpmn2.UserTask;
 import org.eclipse.bpmn2.*;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcFactoryImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcFactoryImpl.java
index c0a89b0..4f76170 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcFactoryImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcFactoryImpl.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.dd.dc.impl;
 
+import org.eclipse.dd.dc.*;
 import org.eclipse.dd.dc.Bounds;
 import org.eclipse.dd.dc.DcFactory;
 import org.eclipse.dd.dc.DcPackage;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcPackageImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcPackageImpl.java
index 996a783..57f6da7 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcPackageImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/DcPackageImpl.java
@@ -126,24 +126,20 @@
 
         // Obtain or create and register package
         DcPackageImpl theDcPackage = (DcPackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof DcPackageImpl ? EPackage.Registry.INSTANCE
-                .get(eNS_URI)
-                : new DcPackageImpl());
+                .get(eNS_URI) : new DcPackageImpl());
 
         isInited = true;
 
         // Obtain or create and register interdependencies
         Bpmn2PackageImpl theBpmn2Package = (Bpmn2PackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(Bpmn2Package.eNS_URI) instanceof Bpmn2PackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(Bpmn2Package.eNS_URI)
-                : Bpmn2Package.eINSTANCE);
+                .getEPackage(Bpmn2Package.eNS_URI) : Bpmn2Package.eINSTANCE);
         BpmnDiPackageImpl theBpmnDiPackage = (BpmnDiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(BpmnDiPackage.eNS_URI) instanceof BpmnDiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(BpmnDiPackage.eNS_URI)
-                : BpmnDiPackage.eINSTANCE);
+                .getEPackage(BpmnDiPackage.eNS_URI) : BpmnDiPackage.eINSTANCE);
         DiPackageImpl theDiPackage = (DiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DiPackage.eNS_URI) instanceof DiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DiPackage.eNS_URI)
-                : DiPackage.eINSTANCE);
+                .getEPackage(DiPackage.eNS_URI) : DiPackage.eINSTANCE);
 
         // Load packages
         theBpmn2Package.loadPackage();
@@ -470,9 +466,9 @@
                 null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE,
                 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED);
-        initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage
-                .getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+        initEReference(getDocumentRoot_XSISchemaLocation(),
+                ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1,
+                null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDocumentRoot_Bounds(), this.getBounds(), null, "bounds", null, 0, -2,
                 null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/FontImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/FontImpl.java
index e8104db..388f34e 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/FontImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/impl/FontImpl.java
@@ -333,7 +333,8 @@
             if (diagnostics != null) {
                 diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR,
                         DcValidator.DIAGNOSTIC_SOURCE, DcValidator.FONT__NON_NEGATIVE_SIZE,
-                        EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic",
+                        EcorePlugin.INSTANCE.getString(
+                                "_UI_GenericInvariant_diagnostic",
                                 new Object[] { "non_negative_size",
                                         EObjectValidator.getObjectLabel(this, context) }),
                         new Object[] { this }));
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcAdapterFactory.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcAdapterFactory.java
index dbcdd9d..4013947 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcAdapterFactory.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcAdapterFactory.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.dd.dc.util;
 
+import org.eclipse.dd.dc.*;
 import org.eclipse.dd.dc.Bounds;
 import org.eclipse.dd.dc.DcPackage;
 import org.eclipse.dd.dc.DocumentRoot;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcSwitch.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcSwitch.java
index 50f4aa1..1fa07f7 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcSwitch.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcSwitch.java
@@ -16,6 +16,7 @@
 
 import java.util.List;
 
+import org.eclipse.dd.dc.*;
 import org.eclipse.dd.dc.Bounds;
 import org.eclipse.dd.dc.DcPackage;
 import org.eclipse.dd.dc.DocumentRoot;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcValidator.java b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcValidator.java
index e51b94c..1243081 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcValidator.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/dc/util/DcValidator.java
@@ -16,6 +16,7 @@
 
 import java.util.Map;
 
+import org.eclipse.dd.dc.*;
 import org.eclipse.dd.dc.Bounds;
 import org.eclipse.dd.dc.DcPackage;
 import org.eclipse.dd.dc.DocumentRoot;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiFactoryImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiFactoryImpl.java
index 5a88831..312811a 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiFactoryImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiFactoryImpl.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.dd.di.impl;
 
+import org.eclipse.dd.di.*;
 import org.eclipse.dd.di.DiFactory;
 import org.eclipse.dd.di.DiPackage;
 import org.eclipse.dd.di.DocumentRoot;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiPackageImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiPackageImpl.java
index 37dd75f..a678a79 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiPackageImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/DiPackageImpl.java
@@ -183,8 +183,7 @@
 
         // Obtain or create and register package
         DiPackageImpl theDiPackage = (DiPackageImpl) (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof DiPackageImpl ? EPackage.Registry.INSTANCE
-                .get(eNS_URI)
-                : new DiPackageImpl());
+                .get(eNS_URI) : new DiPackageImpl());
 
         isInited = true;
 
@@ -194,16 +193,13 @@
         // Obtain or create and register interdependencies
         Bpmn2PackageImpl theBpmn2Package = (Bpmn2PackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(Bpmn2Package.eNS_URI) instanceof Bpmn2PackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(Bpmn2Package.eNS_URI)
-                : Bpmn2Package.eINSTANCE);
+                .getEPackage(Bpmn2Package.eNS_URI) : Bpmn2Package.eINSTANCE);
         BpmnDiPackageImpl theBpmnDiPackage = (BpmnDiPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(BpmnDiPackage.eNS_URI) instanceof BpmnDiPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(BpmnDiPackage.eNS_URI)
-                : BpmnDiPackage.eINSTANCE);
+                .getEPackage(BpmnDiPackage.eNS_URI) : BpmnDiPackage.eINSTANCE);
         DcPackageImpl theDcPackage = (DcPackageImpl) (EPackage.Registry.INSTANCE
                 .getEPackage(DcPackage.eNS_URI) instanceof DcPackageImpl ? EPackage.Registry.INSTANCE
-                .getEPackage(DcPackage.eNS_URI)
-                : DcPackage.eINSTANCE);
+                .getEPackage(DcPackage.eNS_URI) : DcPackage.eINSTANCE);
 
         // Load packages
         theBpmn2Package.loadPackage();
@@ -780,9 +776,9 @@
                 null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE,
                 IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE,
                 !IS_DERIVED, IS_ORDERED);
-        initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage
-                .getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null,
-                IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
+        initEReference(getDocumentRoot_XSISchemaLocation(),
+                ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1,
+                null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
         initEReference(getDocumentRoot_DiagramElement(), this.getDiagramElement(), null,
                 "diagramElement", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE,
@@ -825,8 +821,8 @@
         initEReference(getDiagram_OwnedStyle(), this.getStyle(), null, "ownedStyle", null, 0, -1,
                 Diagram.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE,
                 IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
-        initEReference(getDiagram_RootElement(), this.getDiagramElement(), this
-                .getDiagramElement_OwningDiagram(), "rootElement", null, 1, 1, Diagram.class,
+        initEReference(getDiagram_RootElement(), this.getDiagramElement(),
+                this.getDiagramElement_OwningDiagram(), "rootElement", null, 1, 1, Diagram.class,
                 IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
         initEAttribute(getDiagram_Id(), theXMLTypePackage.getID(), "id", null, 0, 1, Diagram.class,
@@ -841,16 +837,16 @@
 
         initEClass(diagramElementEClass, DiagramElement.class, "DiagramElement", IS_ABSTRACT,
                 !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-        initEReference(getDiagramElement_OwningDiagram(), this.getDiagram(), this
-                .getDiagram_RootElement(), "owningDiagram", null, 0, 1, DiagramElement.class,
+        initEReference(getDiagramElement_OwningDiagram(), this.getDiagram(),
+                this.getDiagram_RootElement(), "owningDiagram", null, 0, 1, DiagramElement.class,
                 IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES,
                 !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
-        initEReference(getDiagramElement_OwningElement(), this.getDiagramElement(), this
-                .getDiagramElement_OwnedElement(), "owningElement", null, 0, 1,
+        initEReference(getDiagramElement_OwningElement(), this.getDiagramElement(),
+                this.getDiagramElement_OwnedElement(), "owningElement", null, 0, 1,
                 DiagramElement.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
-        initEReference(getDiagramElement_OwnedElement(), this.getDiagramElement(), this
-                .getDiagramElement_OwningElement(), "ownedElement", null, 0, -1,
+        initEReference(getDiagramElement_OwnedElement(), this.getDiagramElement(),
+                this.getDiagramElement_OwningElement(), "ownedElement", null, 0, -1,
                 DiagramElement.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE,
                 !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
         initEReference(getDiagramElement_ModelElement(), ecorePackage.getEObject(), null,
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/PlaneImpl.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/PlaneImpl.java
index c9bf9d0..5ffc495 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/PlaneImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/impl/PlaneImpl.java
@@ -104,7 +104,8 @@
             if (diagnostics != null) {
                 diagnostics.add(new BasicDiagnostic(Diagnostic.ERROR,
                         DiValidator.DIAGNOSTIC_SOURCE, DiValidator.PLANE__PLANE_ELEMENT_TYPE,
-                        EcorePlugin.INSTANCE.getString("_UI_GenericInvariant_diagnostic",
+                        EcorePlugin.INSTANCE.getString(
+                                "_UI_GenericInvariant_diagnostic",
                                 new Object[] { "plane_element_type",
                                         EObjectValidator.getObjectLabel(this, context) }),
                         new Object[] { this }));
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiAdapterFactory.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiAdapterFactory.java
index 7d9fb25..e8430d6 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiAdapterFactory.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiAdapterFactory.java
@@ -14,6 +14,7 @@
  */
 package org.eclipse.dd.di.util;
 
+import org.eclipse.dd.di.*;
 import org.eclipse.dd.di.DiPackage;
 import org.eclipse.dd.di.Diagram;
 import org.eclipse.dd.di.DiagramElement;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiSwitch.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiSwitch.java
index 1d65078..30858d8 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiSwitch.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiSwitch.java
@@ -16,6 +16,7 @@
 
 import java.util.List;
 
+import org.eclipse.dd.di.*;
 import org.eclipse.dd.di.DiPackage;
 import org.eclipse.dd.di.Diagram;
 import org.eclipse.dd.di.DiagramElement;
diff --git a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiValidator.java b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiValidator.java
index 8d52783..8e35f3b 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiValidator.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/dd/di/util/DiValidator.java
@@ -16,6 +16,7 @@
 
 import java.util.Map;
 
+import org.eclipse.dd.di.*;
 import org.eclipse.dd.di.DiPackage;
 import org.eclipse.dd.di.Diagram;
 import org.eclipse.dd.di.DiagramElement;