Classes appearing in cross-file references shouldn't be abstract

Make all classes that are the type of some reference with 
resolveProxies = false non-abstract to allow creation of proxies.
Mark them as originally abstract.

This concerns Activity, BaseElement, CallableElement, 
ConversationNode, InteractionNode.
diff --git a/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/Bpmn2ItemProviderAdapterFactory.java b/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/Bpmn2ItemProviderAdapterFactory.java
index 61073c9..a87d341 100644
--- a/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/Bpmn2ItemProviderAdapterFactory.java
+++ b/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/Bpmn2ItemProviderAdapterFactory.java
@@ -107,6 +107,29 @@
     }

 

     /**

+     * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.Activity} instances.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    protected ActivityItemProvider activityItemProvider;

+

+    /**

+     * This creates an adapter for a {@link org.eclipse.bpmn2.Activity}.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    @Override

+    public Adapter createActivityAdapter() {

+        if (activityItemProvider == null) {

+            activityItemProvider = new ActivityItemProvider(this);

+        }

+

+        return activityItemProvider;

+    }

+

+    /**

      * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.AdHocSubProcess} instances.

      * <!-- begin-user-doc -->

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

@@ -199,6 +222,29 @@
     }

 

     /**

+     * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.BaseElement} instances.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    protected BaseElementItemProvider baseElementItemProvider;

+

+    /**

+     * This creates an adapter for a {@link org.eclipse.bpmn2.BaseElement}.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    @Override

+    public Adapter createBaseElementAdapter() {

+        if (baseElementItemProvider == null) {

+            baseElementItemProvider = new BaseElementItemProvider(this);

+        }

+

+        return baseElementItemProvider;

+    }

+

+    /**

      * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.BoundaryEvent} instances.

      * <!-- begin-user-doc -->

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

@@ -314,6 +360,29 @@
     }

 

     /**

+     * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.CallableElement} instances.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    protected CallableElementItemProvider callableElementItemProvider;

+

+    /**

+     * This creates an adapter for a {@link org.eclipse.bpmn2.CallableElement}.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    @Override

+    public Adapter createCallableElementAdapter() {

+        if (callableElementItemProvider == null) {

+            callableElementItemProvider = new CallableElementItemProvider(this);

+        }

+

+        return callableElementItemProvider;

+    }

+

+    /**

      * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.CancelEventDefinition} instances.

      * <!-- begin-user-doc -->

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

@@ -614,6 +683,29 @@
     }

 

     /**

+     * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.ConversationNode} instances.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    protected ConversationNodeItemProvider conversationNodeItemProvider;

+

+    /**

+     * This creates an adapter for a {@link org.eclipse.bpmn2.ConversationNode}.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    @Override

+    public Adapter createConversationNodeAdapter() {

+        if (conversationNodeItemProvider == null) {

+            conversationNodeItemProvider = new ConversationNodeItemProvider(this);

+        }

+

+        return conversationNodeItemProvider;

+    }

+

+    /**

      * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.CorrelationKey} instances.

      * <!-- begin-user-doc -->

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

@@ -1698,6 +1790,29 @@
     }

 

     /**

+     * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.InteractionNode} instances.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    protected InteractionNodeItemProvider interactionNodeItemProvider;

+

+    /**

+     * This creates an adapter for a {@link org.eclipse.bpmn2.InteractionNode}.

+     * <!-- begin-user-doc -->

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

+     * @generated

+     */

+    @Override

+    public Adapter createInteractionNodeAdapter() {

+        if (interactionNodeItemProvider == null) {

+            interactionNodeItemProvider = new InteractionNodeItemProvider(this);

+        }

+

+        return interactionNodeItemProvider;

+    }

+

+    /**

      * This keeps track of the one adapter used for all {@link org.eclipse.bpmn2.Interface} instances.

      * <!-- begin-user-doc -->

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

@@ -2997,6 +3112,8 @@
     public void dispose() {

         if (documentRootItemProvider != null)

             documentRootItemProvider.dispose();

+        if (activityItemProvider != null)

+            activityItemProvider.dispose();

         if (adHocSubProcessItemProvider != null)

             adHocSubProcessItemProvider.dispose();

         if (assignmentItemProvider != null)

@@ -3005,6 +3122,8 @@
             associationItemProvider.dispose();

         if (auditingItemProvider != null)

             auditingItemProvider.dispose();

+        if (baseElementItemProvider != null)

+            baseElementItemProvider.dispose();

         if (boundaryEventItemProvider != null)

             boundaryEventItemProvider.dispose();

         if (businessRuleTaskItemProvider != null)

@@ -3015,6 +3134,8 @@
             callChoreographyItemProvider.dispose();

         if (callConversationItemProvider != null)

             callConversationItemProvider.dispose();

+        if (callableElementItemProvider != null)

+            callableElementItemProvider.dispose();

         if (cancelEventDefinitionItemProvider != null)

             cancelEventDefinitionItemProvider.dispose();

         if (categoryItemProvider != null)

@@ -3041,6 +3162,8 @@
             conversationAssociationItemProvider.dispose();

         if (conversationLinkItemProvider != null)

             conversationLinkItemProvider.dispose();

+        if (conversationNodeItemProvider != null)

+            conversationNodeItemProvider.dispose();

         if (correlationKeyItemProvider != null)

             correlationKeyItemProvider.dispose();

         if (correlationPropertyItemProvider != null)

@@ -3135,6 +3258,8 @@
             inputOutputSpecificationItemProvider.dispose();

         if (inputSetItemProvider != null)

             inputSetItemProvider.dispose();

+        if (interactionNodeItemProvider != null)

+            interactionNodeItemProvider.dispose();

         if (interfaceItemProvider != null)

             interfaceItemProvider.dispose();

         if (intermediateCatchEventItemProvider != null)

diff --git a/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/DocumentRootItemProvider.java b/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/DocumentRootItemProvider.java
index 3c56125..b929c4d 100644
--- a/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/DocumentRootItemProvider.java
+++ b/org.eclipse.bpmn2.edit/src/org/eclipse/bpmn2/provider/DocumentRootItemProvider.java
@@ -187,8 +187,8 @@
                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__EXTENSION_ELEMENTS

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__FLOW_NODE

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__SCRIPT

-                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__SUB_PROCESS

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__TEXT

+                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__SUB_PROCESS

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__AD_HOC_SUB_PROCESS

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__TASK

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__BUSINESS_RULE_TASK

@@ -228,10 +228,11 @@
                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__TEXT_ANNOTATION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__ASSIGNMENT

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__AUDITING

-                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CALL_CONVERSATION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CONVERSATION_NODE

-                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__EVENT_DEFINITION

+                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CALL_CONVERSATION

+                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CALLABLE_ELEMENT

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__ROOT_ELEMENT

+                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__EVENT_DEFINITION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CATEGORY

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CATEGORY_VALUE

@@ -263,7 +264,6 @@
                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__EXPRESSION

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__FORMAL_EXPRESSION

-                || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__CALLABLE_ELEMENT

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__GLOBAL_TASK

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK

                 || childFeature == Bpmn2Package.Literals.DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK

diff --git a/org.eclipse.bpmn2/model/BPMN20.ecore b/org.eclipse.bpmn2/model/BPMN20.ecore
index c701bab..69323c5 100644
--- a/org.eclipse.bpmn2/model/BPMN20.ecore
+++ b/org.eclipse.bpmn2/model/BPMN20.ecore
@@ -1321,10 +1321,11 @@
       </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"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ioSpecification" ordered="false"
         eType="#//InputOutputSpecification" containment="true">
@@ -1510,10 +1511,11 @@
       <details key="kind" value="elementOnly"/>
     </eAnnotations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BaseElement" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="BaseElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tBaseElement"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extensionValues" ordered="false"
         upperBound="-1" eType="#//ExtensionAttributeValue" transient="true" derived="true"
@@ -1631,10 +1633,11 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CallableElement" abstract="true" eSuperTypes="#//RootElement">
+  <eClassifiers xsi:type="ecore:EClass" name="CallableElement" eSuperTypes="#//RootElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tCallableElement"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="supportedInterfaceRefs"
         ordered="false" upperBound="-1" eType="#//Interface">
@@ -2059,10 +2062,11 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//BaseElement #//InteractionNode">
+  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" eSuperTypes="#//BaseElement #//InteractionNode">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tConversationNode"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="participantRefs" ordered="false"
         lowerBound="2" upperBound="-1" eType="#//Participant">
@@ -3114,7 +3118,10 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="abstract" value="true"/>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" changeable="false"
         volatile="true" transient="true" derived="true" resolveProxies="false"/>
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/Activity.java
index 74aff36..b02a3e3 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' abstract='true'"
  * @generated
  */
 public interface Activity extends FlowNode {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BaseElement.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BaseElement.java
index 957f07b..4962e2e 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BaseElement.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/BaseElement.java
@@ -34,8 +34,7 @@
  * </p>
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getBaseElement()
- * @model abstract="true"
- *        extendedMetaData="name='tBaseElement' kind='elementOnly'"
+ * @model extendedMetaData="name='tBaseElement' kind='elementOnly' abstract='true'"
  * @generated
  */
 public interface BaseElement extends EObject {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/CallableElement.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/CallableElement.java
index adf70c4..72db504 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/CallableElement.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/CallableElement.java
@@ -32,8 +32,7 @@
  * </p>
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getCallableElement()
- * @model abstract="true"
- *        extendedMetaData="name='tCallableElement' kind='elementOnly'"
+ * @model extendedMetaData="name='tCallableElement' kind='elementOnly' abstract='true'"
  * @generated
  */
 public interface CallableElement extends RootElement {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationNode.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationNode.java
index 973960b..9f5c55d 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationNode.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/ConversationNode.java
@@ -32,8 +32,7 @@
  * </p>
  *
  * @see org.eclipse.bpmn2.Bpmn2Package#getConversationNode()
- * @model abstract="true"
- *        extendedMetaData="name='tConversationNode' kind='elementOnly'"
+ * @model extendedMetaData="name='tConversationNode' kind='elementOnly' abstract='true'"
  * @generated
  */
 public interface ConversationNode extends BaseElement, InteractionNode {
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/InteractionNode.java
index 0f95190..0376deb 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 extendedMetaData="abstract='true'"
  * @generated
  */
 public interface InteractionNode extends EObject {
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 8c9862b..a48add2 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ActivityImpl.java
@@ -61,7 +61,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/BaseElementImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BaseElementImpl.java
index ab58bef..425ce21 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BaseElementImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/BaseElementImpl.java
@@ -49,7 +49,7 @@
  *
  * @generated
  */
-public abstract class BaseElementImpl extends EObjectImpl implements BaseElement {
+public class BaseElementImpl extends EObjectImpl implements BaseElement {
     /**
      * The cached value of the '{@link #getExtensionValues() <em>Extension Values</em>}' containment reference list.
      * <!-- begin-user-doc -->
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 a1e56cc..1ced415 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/Bpmn2FactoryImpl.java
@@ -21,6 +21,7 @@
 import org.eclipse.bpmn2.Association;
 import org.eclipse.bpmn2.AssociationDirection;
 import org.eclipse.bpmn2.Auditing;
+import org.eclipse.bpmn2.BaseElement;
 import org.eclipse.bpmn2.BoundaryEvent;
 import org.eclipse.bpmn2.Bpmn2Factory;
 import org.eclipse.bpmn2.Bpmn2Package;
@@ -28,6 +29,7 @@
 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.Category;
 import org.eclipse.bpmn2.CategoryValue;
@@ -42,6 +44,7 @@
 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;
@@ -201,6 +204,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:
@@ -209,6 +214,8 @@
             return createAssociation();
         case Bpmn2Package.AUDITING:
             return createAuditing();
+        case Bpmn2Package.BASE_ELEMENT:
+            return createBaseElement();
         case Bpmn2Package.BOUNDARY_EVENT:
             return createBoundaryEvent();
         case Bpmn2Package.BUSINESS_RULE_TASK:
@@ -219,6 +226,8 @@
             return createCallChoreography();
         case Bpmn2Package.CALL_CONVERSATION:
             return createCallConversation();
+        case Bpmn2Package.CALLABLE_ELEMENT:
+            return createCallableElement();
         case Bpmn2Package.CANCEL_EVENT_DEFINITION:
             return createCancelEventDefinition();
         case Bpmn2Package.CATEGORY:
@@ -245,6 +254,8 @@
             return createConversationAssociation();
         case Bpmn2Package.CONVERSATION_LINK:
             return createConversationLink();
+        case Bpmn2Package.CONVERSATION_NODE:
+            return createConversationNode();
         case Bpmn2Package.CORRELATION_KEY:
             return createCorrelationKey();
         case Bpmn2Package.CORRELATION_PROPERTY:
@@ -339,6 +350,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:
@@ -528,6 +541,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    protected Activity createActivity() {
+        ActivityImpl activity = new ActivityImpl();
+        return activity;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public AdHocSubProcess createAdHocSubProcess() {
         AdHocSubProcessImpl adHocSubProcess = new AdHocSubProcessImpl();
         return adHocSubProcess;
@@ -568,6 +591,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    protected BaseElement createBaseElement() {
+        BaseElementImpl baseElement = new BaseElementImpl();
+        return baseElement;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public BoundaryEvent createBoundaryEvent() {
         BoundaryEventImpl boundaryEvent = new BoundaryEventImpl();
         return boundaryEvent;
@@ -618,6 +651,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    protected CallableElement createCallableElement() {
+        CallableElementImpl callableElement = new CallableElementImpl();
+        return callableElement;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public CancelEventDefinition createCancelEventDefinition() {
         CancelEventDefinitionImpl cancelEventDefinition = new CancelEventDefinitionImpl();
         return cancelEventDefinition;
@@ -748,6 +791,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    protected ConversationNode createConversationNode() {
+        ConversationNodeImpl conversationNode = new ConversationNodeImpl();
+        return conversationNode;
+    }
+
+    /**
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
     public CorrelationKey createCorrelationKey() {
         CorrelationKeyImpl correlationKey = new CorrelationKeyImpl();
         return correlationKey;
@@ -1218,6 +1271,16 @@
      * <!-- end-user-doc -->
      * @generated
      */
+    protected 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/CallableElementImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/CallableElementImpl.java
index d552a82..6f4245e 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/CallableElementImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/CallableElementImpl.java
@@ -48,7 +48,7 @@
  *
  * @generated
  */
-public abstract class CallableElementImpl extends RootElementImpl implements CallableElement {
+public class CallableElementImpl extends RootElementImpl implements CallableElement {
     /**
      * The cached value of the '{@link #getSupportedInterfaceRefs() <em>Supported Interface Refs</em>}' reference list.
      * <!-- begin-user-doc -->
diff --git a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationNodeImpl.java b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationNodeImpl.java
index 91f5177..58a2c57 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationNodeImpl.java
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/ConversationNodeImpl.java
@@ -54,7 +54,7 @@
  *
  * @generated
  */
-public abstract class ConversationNodeImpl extends BaseElementImpl implements ConversationNode {
+public class ConversationNodeImpl extends BaseElementImpl implements ConversationNode {
     /**
      * The cached value of the '{@link #getParticipantRefs() <em>Participant Refs</em>}' reference list.
      * <!-- begin-user-doc -->
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 832e7a6..93901e4 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 {
     /**
      * <!-- begin-user-doc -->
      * <!-- end-user-doc -->
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 1091d05..4bf9464 100644
--- a/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore
+++ b/org.eclipse.bpmn2/src/org/eclipse/bpmn2/impl/bpmn2.ecore
@@ -1321,10 +1321,11 @@
       </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"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="ioSpecification" ordered="false"
         eType="#//InputOutputSpecification" containment="true">
@@ -1510,10 +1511,11 @@
       <details key="kind" value="elementOnly"/>
     </eAnnotations>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BaseElement" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="BaseElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tBaseElement"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="extensionValues" ordered="false"
         upperBound="-1" eType="#//ExtensionAttributeValue" transient="true" derived="true"
@@ -1631,10 +1633,11 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CallableElement" abstract="true" eSuperTypes="#//RootElement">
+  <eClassifiers xsi:type="ecore:EClass" name="CallableElement" eSuperTypes="#//RootElement">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tCallableElement"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="supportedInterfaceRefs"
         ordered="false" upperBound="-1" eType="#//Interface">
@@ -2059,10 +2062,11 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//BaseElement #//InteractionNode">
+  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" eSuperTypes="#//BaseElement #//InteractionNode">
     <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
       <details key="name" value="tConversationNode"/>
       <details key="kind" value="elementOnly"/>
+      <details key="abstract" value="true"/>
     </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="participantRefs" ordered="false"
         lowerBound="2" upperBound="-1" eType="#//Participant">
@@ -3115,7 +3119,10 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
+  <eClassifiers xsi:type="ecore:EClass" name="InteractionNode">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="abstract" value="true"/>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" changeable="false"
         volatile="true" transient="true" derived="true" resolveProxies="false"/>