Bug 514260 - [BPMN] IllegalArgumentException: incomingConversationLinks /
outgoingConversationLinks
  merge from papurys/streams/2.0-maintenance fcb00b6afd

Change-Id: I519ed8c9fbc58ae740d148bc8658641815f5b297
Signed-off-by: Géry Deloge <gery.deloge@cea.fr>
diff --git a/org.eclipse.papyrus.bpmn/custom-src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowElementCustom.java b/org.eclipse.papyrus.bpmn/custom-src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowElementCustom.java
index a581520..b761eae 100755
--- a/org.eclipse.papyrus.bpmn/custom-src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowElementCustom.java
+++ b/org.eclipse.papyrus.bpmn/custom-src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowElementCustom.java
@@ -69,7 +69,7 @@
 			}
 		}
 		if (flowElementsContainer == null) {
-			log.error("no container for " + flowElement);
+			log.info("no container for " + flowElement);
 		}
 		return flowElementsContainer;
 	}
diff --git a/org.eclipse.papyrus.bpmn/model/BPMNProfile.ecore b/org.eclipse.papyrus.bpmn/model/BPMNProfile.ecore
index 4223f5b..fd4a3b6 100755
--- a/org.eclipse.papyrus.bpmn/model/BPMNProfile.ecore
+++ b/org.eclipse.papyrus.bpmn/model/BPMNProfile.ecore
@@ -42,6 +42,16 @@
         eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//ActivityGroup"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FlowNode" abstract="true" eSuperTypes="#//FlowElement">
+    <eAnnotations source="duplicates">
+      <contents xsi:type="ecore:EReference" name="incoming" ordered="false" upperBound="-1"
+          eType="#//SequenceFlow" eOpposite="#//SequenceFlow/targetRef">
+        <eAnnotations source="redefines" references="#//BaseElement/incoming"/>
+      </contents>
+      <contents xsi:type="ecore:EReference" name="outgoing" ordered="false" upperBound="-1"
+          eType="#//SequenceFlow" eOpposite="#//SequenceFlow/sourceRef">
+        <eAnnotations source="redefines" references="#//BaseElement/outgoing"/>
+      </contents>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_ActivityNode" ordered="false"
         eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//ActivityNode"/>
   </eClassifiers>
@@ -445,6 +455,10 @@
         lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="conditionExpression" ordered="false"
         eType="#//BPMNExpression"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceRef" ordered="false"
+        lowerBound="1" eType="#//FlowNode" volatile="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="targetRef" ordered="false"
+        lowerBound="1" eType="#//FlowNode" volatile="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BPMNExpression" eSuperTypes="#//BaseElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_OpaqueExpression"
@@ -1462,6 +1476,17 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
       <details key="documentation" value="self.structureRef = self.base_Class"/>
     </eAnnotations>
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="errorCode" ordered="false"
         eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
   </eClassifiers>
@@ -1575,7 +1600,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="outerParticipantRef" ordered="false"
         lowerBound="1" eType="#//Participant"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Participant" eSuperTypes="#//BaseElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Participant" eSuperTypes="#//BaseElement #//InteractionNode">
     <eOperations name="Participantownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="Participant.ownership"/>
@@ -1792,8 +1817,12 @@
         upperBound="-1" eType="#//BPMNInterface"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
-        lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_InteractionNode_Element"
+        ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element">
+      <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <details key="originalName" value="base_Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" eOpposite="#//ConversationLink/sourceRef"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
@@ -2001,7 +2030,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="messageRef" ordered="false"
         eType="#//BPMNMessage"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//InteractionNode">
+  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//BaseElement #//InteractionNode">
     <eOperations name="ConversationNodeparticipantRefs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="ConversationNode.participantRefs"/>
@@ -2274,6 +2303,15 @@
         eType="#//BPMNProcess" eOpposite="#//BPMNProcess/resources"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ResourceAssignmentExpression" eSuperTypes="#//BPMNExpression">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_OpaqueExpression">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_OpaqueExpression" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//OpaqueExpression">
+        <eAnnotations source="redefines" references="#//BPMNExpression/base_OpaqueExpression"/>
+      </contents>
+    </eAnnotations>
     <eOperations name="ResourceAssignmentExpressionexpression" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="ResourceAssignmentExpression.expression"/>
@@ -2572,7 +2610,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_Event" ordered="false"
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Event"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BPMNActivity" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="BPMNActivity" abstract="true" eSuperTypes="#//FlowNode #//InteractionNode">
     <eOperations name="BPMNActivityresources" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="BPMNActivity.resources"/>
@@ -2734,6 +2772,15 @@
         upperBound="-1" eType="#//ResourceRole"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BoundaryEvent" eSuperTypes="#//CatchEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_AcceptEventAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_AcceptEventAction" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//AcceptEventAction">
+        <eAnnotations source="redefines" references="#//CatchEvent/base_AcceptEventAction"/>
+      </contents>
+    </eAnnotations>
     <eOperations name="boundaryEventattachedToRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="boundaryEvent.attachedToRef"/>
@@ -2795,7 +2842,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataOutputAssociation"
         ordered="false" upperBound="-1" eType="#//DataOutputAssociation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BPMNEvent" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="BPMNEvent" abstract="true" eSuperTypes="#//FlowNode #//InteractionNode">
     <eStructuralFeatures xsi:type="ecore:EReference" name="eventClass" ordered="false"
         eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="_eventDefinitions" ordered="false"
@@ -2999,6 +3046,17 @@
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallEvent"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Escalation" eSuperTypes="#//ItemDefinition">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eOperations name="EscalationstructureRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="Escalation.structureRef"/>
@@ -3041,6 +3099,18 @@
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallEvent"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BPMNSignal" eSuperTypes="#//ItemDefinition">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="lowerBound" value="1"/>
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eOperations name="BPMNSignalstructureRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="BPMNSignal.structureRef"/>
@@ -3157,7 +3227,17 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallEvent"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="IntermediateCatchEvent" eSuperTypes="#//CatchEvent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IntermediateCatchEvent" eSuperTypes="#//CatchEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_AcceptEventAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_AcceptEventAction" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//AcceptEventAction">
+        <eAnnotations source="redefines" references="#//CatchEvent/base_AcceptEventAction"/>
+      </contents>
+    </eAnnotations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IntermediateThrowEvent" eSuperTypes="#//ThrowEvent">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_SendObjectAction"
         ordered="false" lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//SendObjectAction"/>
@@ -3166,7 +3246,17 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallEvent"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ImplicitThrowEvent" eSuperTypes="#//ThrowEvent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ImplicitThrowEvent" eSuperTypes="#//ThrowEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_CallOperationAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_CallOperationAction" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallOperationAction">
+        <eAnnotations source="redefines" references="#//ThrowEvent/base_CallOperationAction"/>
+      </contents>
+    </eAnnotations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CancelEventDefinition" eSuperTypes="#//EventDefinition">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//CallEvent"/>
diff --git a/org.eclipse.papyrus.bpmn/model/bpmn.profile.genmodel b/org.eclipse.papyrus.bpmn/model/bpmn.profile.genmodel
index 8bb4ca3..c853f21 100755
--- a/org.eclipse.papyrus.bpmn/model/bpmn.profile.genmodel
+++ b/org.eclipse.papyrus.bpmn/model/bpmn.profile.genmodel
@@ -10,12 +10,12 @@
     <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
     <details key="UNION_PROPERTIES" value="REPORT"/>
     <details key="UNTYPED_PROPERTIES" value="REPORT"/>
-    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="DUPLICATE_FEATURES" value="PROCESS"/>
     <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
     <details key="VALIDATION_DELEGATES" value="IGNORE"/>
     <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
     <details key="COMMENTS" value="PROCESS"/>
-    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="PROCESS"/>
     <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
     <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
     <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
@@ -245,6 +245,10 @@
       <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute BPMNProfile.ecore#//SequenceFlow/isImmediate"/>
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//SequenceFlow/conditionExpression"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//SequenceFlow/sourceRef"/>
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//SequenceFlow/targetRef"/>
       <genOperations xsi:type="genmodel:GenOperation" ecoreOperation="BPMNProfile.ecore#//SequenceFlow/SequenceFlowconditionExpression">
         <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="BPMNProfile.ecore#//SequenceFlow/SequenceFlowconditionExpression/diagnostics"/>
         <genParameters xsi:type="genmodel:GenParameter" ecoreParameter="BPMNProfile.ecore#//SequenceFlow/SequenceFlowconditionExpression/context"/>
@@ -717,7 +721,7 @@
     </genClasses>
     <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="BPMNProfile.ecore#//InteractionNode">
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
-          propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//InteractionNode/base_Element"/>
+          propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//InteractionNode/base_InteractionNode_Element"/>
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
           propertySortChoices="true" ecoreFeature="ecore:EReference BPMNProfile.ecore#//InteractionNode/outgoingConversationLinks"/>
       <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNActivity.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNActivity.java
index dda361f..f203ac7 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNActivity.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNActivity.java
@@ -35,7 +35,7 @@
  * @model abstract="true"
  * @generated
  */
-public interface BPMNActivity extends FlowNode {
+public interface BPMNActivity extends FlowNode, InteractionNode {
 	/**
 	 * Returns the value of the '<em><b>Is For Compensation</b></em>' attribute.
 	 * The default value is <code>"false"</code>.
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNEvent.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNEvent.java
index 3d82053..97dbbb6 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNEvent.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNEvent.java
@@ -23,7 +23,7 @@
  * @model abstract="true"
  * @generated
  */
-public interface BPMNEvent extends FlowNode {
+public interface BPMNEvent extends FlowNode, InteractionNode {
 	/**
 	 * Returns the value of the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNProfilePackage.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNProfilePackage.java
index 832a2cd..0889af2 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNProfilePackage.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/BPMNProfilePackage.java
@@ -2328,13 +2328,31 @@
 	int SEQUENCE_FLOW__CONDITION_EXPRESSION = FLOW_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
+	 * The feature id for the '<em><b>Source Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEQUENCE_FLOW__SOURCE_REF = FLOW_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Target Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEQUENCE_FLOW__TARGET_REF = FLOW_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
 	 * The number of structural features of the '<em>Sequence Flow</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int SEQUENCE_FLOW_FEATURE_COUNT = FLOW_ELEMENT_FEATURE_COUNT + 3;
+	int SEQUENCE_FLOW_FEATURE_COUNT = FLOW_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The operation id for the '<em>Sequence Flowcondition Expression</em>' operation.
@@ -6811,13 +6829,40 @@
 	int PARTICIPANT__INCOMING = BASE_ELEMENT__INCOMING;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT = BASE_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARTICIPANT__OUTGOING_CONVERSATION_LINKS = BASE_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARTICIPANT__INCOMING_CONVERSATION_LINKS = BASE_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
 	 * The feature id for the '<em><b>Base Property</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__BASE_PROPERTY = BASE_ELEMENT_FEATURE_COUNT + 0;
+	int PARTICIPANT__BASE_PROPERTY = BASE_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Process Ref</b></em>' reference.
@@ -6826,7 +6871,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__PROCESS_REF = BASE_ELEMENT_FEATURE_COUNT + 1;
+	int PARTICIPANT__PROCESS_REF = BASE_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Participant Multiplicity</b></em>' reference.
@@ -6835,7 +6880,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__PARTICIPANT_MULTIPLICITY = BASE_ELEMENT_FEATURE_COUNT + 2;
+	int PARTICIPANT__PARTICIPANT_MULTIPLICITY = BASE_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Partner Entity Ref</b></em>' reference list.
@@ -6844,7 +6889,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__PARTNER_ENTITY_REF = BASE_ELEMENT_FEATURE_COUNT + 3;
+	int PARTICIPANT__PARTNER_ENTITY_REF = BASE_ELEMENT_FEATURE_COUNT + 6;
 
 	/**
 	 * The feature id for the '<em><b>Partner Role Ref</b></em>' reference list.
@@ -6853,7 +6898,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__PARTNER_ROLE_REF = BASE_ELEMENT_FEATURE_COUNT + 4;
+	int PARTICIPANT__PARTNER_ROLE_REF = BASE_ELEMENT_FEATURE_COUNT + 7;
 
 	/**
 	 * The feature id for the '<em><b>Interface Refs</b></em>' reference list.
@@ -6862,7 +6907,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT__INTERFACE_REFS = BASE_ELEMENT_FEATURE_COUNT + 5;
+	int PARTICIPANT__INTERFACE_REFS = BASE_ELEMENT_FEATURE_COUNT + 8;
 
 	/**
 	 * The number of structural features of the '<em>Participant</em>' class.
@@ -6871,7 +6916,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int PARTICIPANT_FEATURE_COUNT = BASE_ELEMENT_FEATURE_COUNT + 6;
+	int PARTICIPANT_FEATURE_COUNT = BASE_ELEMENT_FEATURE_COUNT + 9;
 
 	/**
 	 * The operation id for the '<em>Participantownership</em>' operation.
@@ -6974,13 +7019,13 @@
 	int INTERACTION_NODE = 47;
 
 	/**
-	 * The feature id for the '<em><b>Base Element</b></em>' reference.
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int INTERACTION_NODE__BASE_ELEMENT = 0;
+	int INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT = 0;
 
 	/**
 	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
@@ -7836,13 +7881,76 @@
 	int CONVERSATION_NODE = 54;
 
 	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__ID = BASE_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Extension Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__EXTENSION_VALUES = BASE_ELEMENT__EXTENSION_VALUES;
+
+	/**
 	 * The feature id for the '<em><b>Base Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__BASE_ELEMENT = INTERACTION_NODE__BASE_ELEMENT;
+	int CONVERSATION_NODE__BASE_ELEMENT = BASE_ELEMENT__BASE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Documentation</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__DOCUMENTATION = BASE_ELEMENT__DOCUMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Extension Definitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__EXTENSION_DEFINITIONS = BASE_ELEMENT__EXTENSION_DEFINITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__OUTGOING = BASE_ELEMENT__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__INCOMING = BASE_ELEMENT__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT = BASE_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
@@ -7851,7 +7959,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS = INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS;
+	int CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS = BASE_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
@@ -7860,7 +7968,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS = INTERACTION_NODE__INCOMING_CONVERSATION_LINKS;
+	int CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS = BASE_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Base Information Flow</b></em>' reference.
@@ -7869,7 +7977,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__BASE_INFORMATION_FLOW = INTERACTION_NODE_FEATURE_COUNT + 0;
+	int CONVERSATION_NODE__BASE_INFORMATION_FLOW = BASE_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Message Flow Refs</b></em>' reference list.
@@ -7878,7 +7986,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__MESSAGE_FLOW_REFS = INTERACTION_NODE_FEATURE_COUNT + 1;
+	int CONVERSATION_NODE__MESSAGE_FLOW_REFS = BASE_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Correlation Keys</b></em>' reference list.
@@ -7887,7 +7995,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__CORRELATION_KEYS = INTERACTION_NODE_FEATURE_COUNT + 2;
+	int CONVERSATION_NODE__CORRELATION_KEYS = BASE_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Participant Refs</b></em>' reference list.
@@ -7896,7 +8004,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE__PARTICIPANT_REFS = INTERACTION_NODE_FEATURE_COUNT + 3;
+	int CONVERSATION_NODE__PARTICIPANT_REFS = BASE_ELEMENT_FEATURE_COUNT + 6;
 
 	/**
 	 * The number of structural features of the '<em>Conversation Node</em>' class.
@@ -7905,7 +8013,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE_FEATURE_COUNT = INTERACTION_NODE_FEATURE_COUNT + 4;
+	int CONVERSATION_NODE_FEATURE_COUNT = BASE_ELEMENT_FEATURE_COUNT + 7;
 
 	/**
 	 * The operation id for the '<em>Conversation Nodeparticipant Refs</em>' operation.
@@ -7914,7 +8022,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE___CONVERSATION_NODEPARTICIPANT_REFS__DIAGNOSTICCHAIN_MAP = INTERACTION_NODE_OPERATION_COUNT + 0;
+	int CONVERSATION_NODE___CONVERSATION_NODEPARTICIPANT_REFS__DIAGNOSTICCHAIN_MAP = BASE_ELEMENT_OPERATION_COUNT + 0;
 
 	/**
 	 * The number of operations of the '<em>Conversation Node</em>' class.
@@ -7923,7 +8031,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CONVERSATION_NODE_OPERATION_COUNT = INTERACTION_NODE_OPERATION_COUNT + 1;
+	int CONVERSATION_NODE_OPERATION_COUNT = BASE_ELEMENT_OPERATION_COUNT + 1;
 
 	/**
 	 * The meta object id for the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.CorrelationKeyImpl <em>Correlation Key</em>}' class.
@@ -10554,13 +10662,40 @@
 	int BPMN_ACTIVITY__BASE_ACTIVITY_NODE = FLOW_NODE__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT = FLOW_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS = FLOW_NODE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS = FLOW_NODE_FEATURE_COUNT + 2;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__IS_FOR_COMPENSATION = FLOW_NODE_FEATURE_COUNT + 0;
+	int BPMN_ACTIVITY__IS_FOR_COMPENSATION = FLOW_NODE_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Start Quantity</b></em>' attribute.
@@ -10569,7 +10704,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__START_QUANTITY = FLOW_NODE_FEATURE_COUNT + 1;
+	int BPMN_ACTIVITY__START_QUANTITY = FLOW_NODE_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Completion Quantity</b></em>' attribute.
@@ -10578,7 +10713,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__COMPLETION_QUANTITY = FLOW_NODE_FEATURE_COUNT + 2;
+	int BPMN_ACTIVITY__COMPLETION_QUANTITY = FLOW_NODE_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Base Action</b></em>' reference.
@@ -10587,7 +10722,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__BASE_ACTION = FLOW_NODE_FEATURE_COUNT + 3;
+	int BPMN_ACTIVITY__BASE_ACTION = FLOW_NODE_FEATURE_COUNT + 6;
 
 	/**
 	 * The feature id for the '<em><b>Activity Class</b></em>' reference.
@@ -10596,7 +10731,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__ACTIVITY_CLASS = FLOW_NODE_FEATURE_COUNT + 4;
+	int BPMN_ACTIVITY__ACTIVITY_CLASS = FLOW_NODE_FEATURE_COUNT + 7;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' reference list.
@@ -10605,7 +10740,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__PROPERTIES = FLOW_NODE_FEATURE_COUNT + 5;
+	int BPMN_ACTIVITY__PROPERTIES = FLOW_NODE_FEATURE_COUNT + 8;
 
 	/**
 	 * The feature id for the '<em><b>Default</b></em>' reference.
@@ -10614,7 +10749,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__DEFAULT = FLOW_NODE_FEATURE_COUNT + 6;
+	int BPMN_ACTIVITY__DEFAULT = FLOW_NODE_FEATURE_COUNT + 9;
 
 	/**
 	 * The feature id for the '<em><b>Boundary Event Refs</b></em>' reference list.
@@ -10623,7 +10758,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__BOUNDARY_EVENT_REFS = FLOW_NODE_FEATURE_COUNT + 7;
+	int BPMN_ACTIVITY__BOUNDARY_EVENT_REFS = FLOW_NODE_FEATURE_COUNT + 10;
 
 	/**
 	 * The feature id for the '<em><b>Data Input Associations</b></em>' reference list.
@@ -10632,7 +10767,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__DATA_INPUT_ASSOCIATIONS = FLOW_NODE_FEATURE_COUNT + 8;
+	int BPMN_ACTIVITY__DATA_INPUT_ASSOCIATIONS = FLOW_NODE_FEATURE_COUNT + 11;
 
 	/**
 	 * The feature id for the '<em><b>Data Output Associations</b></em>' reference list.
@@ -10641,7 +10776,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__DATA_OUTPUT_ASSOCIATIONS = FLOW_NODE_FEATURE_COUNT + 9;
+	int BPMN_ACTIVITY__DATA_OUTPUT_ASSOCIATIONS = FLOW_NODE_FEATURE_COUNT + 12;
 
 	/**
 	 * The feature id for the '<em><b>Loop Characteristics</b></em>' reference.
@@ -10650,7 +10785,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__LOOP_CHARACTERISTICS = FLOW_NODE_FEATURE_COUNT + 10;
+	int BPMN_ACTIVITY__LOOP_CHARACTERISTICS = FLOW_NODE_FEATURE_COUNT + 13;
 
 	/**
 	 * The feature id for the '<em><b>Resources</b></em>' reference list.
@@ -10659,7 +10794,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY__RESOURCES = FLOW_NODE_FEATURE_COUNT + 11;
+	int BPMN_ACTIVITY__RESOURCES = FLOW_NODE_FEATURE_COUNT + 14;
 
 	/**
 	 * The number of structural features of the '<em>BPMN Activity</em>' class.
@@ -10668,7 +10803,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_ACTIVITY_FEATURE_COUNT = FLOW_NODE_FEATURE_COUNT + 12;
+	int BPMN_ACTIVITY_FEATURE_COUNT = FLOW_NODE_FEATURE_COUNT + 15;
 
 	/**
 	 * The operation id for the '<em>BPMN Activityresources</em>' operation.
@@ -10852,13 +10987,40 @@
 	int BPMN_EVENT__BASE_ACTIVITY_NODE = FLOW_NODE__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT = FLOW_NODE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_EVENT__OUTGOING_CONVERSATION_LINKS = FLOW_NODE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BPMN_EVENT__INCOMING_CONVERSATION_LINKS = FLOW_NODE_FEATURE_COUNT + 2;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_EVENT__EVENT_CLASS = FLOW_NODE_FEATURE_COUNT + 0;
+	int BPMN_EVENT__EVENT_CLASS = FLOW_NODE_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>event Definitions</b></em>' reference list.
@@ -10867,7 +11029,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_EVENT__EVENT_DEFINITIONS = FLOW_NODE_FEATURE_COUNT + 1;
+	int BPMN_EVENT__EVENT_DEFINITIONS = FLOW_NODE_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Properties</b></em>' reference list.
@@ -10876,7 +11038,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_EVENT__PROPERTIES = FLOW_NODE_FEATURE_COUNT + 2;
+	int BPMN_EVENT__PROPERTIES = FLOW_NODE_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Event Definition Refs</b></em>' reference list.
@@ -10885,7 +11047,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_EVENT__EVENT_DEFINITION_REFS = FLOW_NODE_FEATURE_COUNT + 3;
+	int BPMN_EVENT__EVENT_DEFINITION_REFS = FLOW_NODE_FEATURE_COUNT + 6;
 
 	/**
 	 * The number of structural features of the '<em>BPMN Event</em>' class.
@@ -10894,7 +11056,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int BPMN_EVENT_FEATURE_COUNT = FLOW_NODE_FEATURE_COUNT + 4;
+	int BPMN_EVENT_FEATURE_COUNT = FLOW_NODE_FEATURE_COUNT + 7;
 
 	/**
 	 * The number of operations of the '<em>BPMN Event</em>' class.
@@ -11024,6 +11186,33 @@
 	int CATCH_EVENT__BASE_ACTIVITY_NODE = BPMN_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CATCH_EVENT__BASE_INTERACTION_NODE_ELEMENT = BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CATCH_EVENT__OUTGOING_CONVERSATION_LINKS = BPMN_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CATCH_EVENT__INCOMING_CONVERSATION_LINKS = BPMN_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -11241,6 +11430,33 @@
 	int BOUNDARY_EVENT__BASE_ACTIVITY_NODE = CATCH_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOUNDARY_EVENT__BASE_INTERACTION_NODE_ELEMENT = CATCH_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOUNDARY_EVENT__OUTGOING_CONVERSATION_LINKS = CATCH_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BOUNDARY_EVENT__INCOMING_CONVERSATION_LINKS = CATCH_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13007,6 +13223,33 @@
 	int THROW_EVENT__BASE_ACTIVITY_NODE = BPMN_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT = BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THROW_EVENT__OUTGOING_CONVERSATION_LINKS = BPMN_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THROW_EVENT__INCOMING_CONVERSATION_LINKS = BPMN_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13215,6 +13458,33 @@
 	int END_EVENT__BASE_ACTIVITY_NODE = THROW_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_EVENT__BASE_INTERACTION_NODE_ELEMENT = THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_EVENT__OUTGOING_CONVERSATION_LINKS = THROW_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int END_EVENT__INCOMING_CONVERSATION_LINKS = THROW_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -13577,6 +13847,33 @@
 	int START_EVENT__BASE_ACTIVITY_NODE = CATCH_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int START_EVENT__BASE_INTERACTION_NODE_ELEMENT = CATCH_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int START_EVENT__OUTGOING_CONVERSATION_LINKS = CATCH_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int START_EVENT__INCOMING_CONVERSATION_LINKS = CATCH_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14229,6 +14526,33 @@
 	int INTERMEDIATE_CATCH_EVENT__BASE_ACTIVITY_NODE = CATCH_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_CATCH_EVENT__BASE_INTERACTION_NODE_ELEMENT = CATCH_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_CATCH_EVENT__OUTGOING_CONVERSATION_LINKS = CATCH_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_CATCH_EVENT__INCOMING_CONVERSATION_LINKS = CATCH_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14446,6 +14770,33 @@
 	int INTERMEDIATE_THROW_EVENT__BASE_ACTIVITY_NODE = THROW_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT = THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_THROW_EVENT__OUTGOING_CONVERSATION_LINKS = THROW_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INTERMEDIATE_THROW_EVENT__INCOMING_CONVERSATION_LINKS = THROW_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -14790,6 +15141,33 @@
 	int IMPLICIT_THROW_EVENT__BASE_ACTIVITY_NODE = THROW_EVENT__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLICIT_THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT = THROW_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLICIT_THROW_EVENT__OUTGOING_CONVERSATION_LINKS = THROW_EVENT__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPLICIT_THROW_EVENT__INCOMING_CONVERSATION_LINKS = THROW_EVENT__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Event Class</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -16194,6 +16572,33 @@
 	int TASK__BASE_ACTIVITY_NODE = BPMN_ACTIVITY__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK__BASE_INTERACTION_NODE_ELEMENT = BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK__OUTGOING_CONVERSATION_LINKS = BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TASK__INCOMING_CONVERSATION_LINKS = BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -16501,6 +16906,33 @@
 	int USER_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USER_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USER_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int USER_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -17731,6 +18163,33 @@
 	int MANUAL_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUAL_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUAL_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MANUAL_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18120,6 +18579,24 @@
 	int SUB_CONVERSATION = 114;
 
 	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__ID = CONVERSATION_NODE__ID;
+
+	/**
+	 * The feature id for the '<em><b>Extension Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__EXTENSION_VALUES = CONVERSATION_NODE__EXTENSION_VALUES;
+
+	/**
 	 * The feature id for the '<em><b>Base Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18129,6 +18606,51 @@
 	int SUB_CONVERSATION__BASE_ELEMENT = CONVERSATION_NODE__BASE_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Documentation</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__DOCUMENTATION = CONVERSATION_NODE__DOCUMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Extension Definitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__EXTENSION_DEFINITIONS = CONVERSATION_NODE__EXTENSION_DEFINITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__OUTGOING = CONVERSATION_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__INCOMING = CONVERSATION_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_CONVERSATION__BASE_INTERACTION_NODE_ELEMENT = CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
 	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18446,6 +18968,24 @@
 	int CALL_CONVERSATION = 116;
 
 	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__ID = CONVERSATION_NODE__ID;
+
+	/**
+	 * The feature id for the '<em><b>Extension Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__EXTENSION_VALUES = CONVERSATION_NODE__EXTENSION_VALUES;
+
+	/**
 	 * The feature id for the '<em><b>Base Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18455,6 +18995,51 @@
 	int CALL_CONVERSATION__BASE_ELEMENT = CONVERSATION_NODE__BASE_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Documentation</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__DOCUMENTATION = CONVERSATION_NODE__DOCUMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Extension Definitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__EXTENSION_DEFINITIONS = CONVERSATION_NODE__EXTENSION_DEFINITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__OUTGOING = CONVERSATION_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__INCOMING = CONVERSATION_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_CONVERSATION__BASE_INTERACTION_NODE_ELEMENT = CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
 	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18591,6 +19176,24 @@
 	int CONVERSATION = 117;
 
 	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__ID = CONVERSATION_NODE__ID;
+
+	/**
+	 * The feature id for the '<em><b>Extension Values</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__EXTENSION_VALUES = CONVERSATION_NODE__EXTENSION_VALUES;
+
+	/**
 	 * The feature id for the '<em><b>Base Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18600,6 +19203,51 @@
 	int CONVERSATION__BASE_ELEMENT = CONVERSATION_NODE__BASE_ELEMENT;
 
 	/**
+	 * The feature id for the '<em><b>Documentation</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__DOCUMENTATION = CONVERSATION_NODE__DOCUMENTATION;
+
+	/**
+	 * The feature id for the '<em><b>Extension Definitions</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__EXTENSION_DEFINITIONS = CONVERSATION_NODE__EXTENSION_DEFINITIONS;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__OUTGOING = CONVERSATION_NODE__OUTGOING;
+
+	/**
+	 * The feature id for the '<em><b>Incoming</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__INCOMING = CONVERSATION_NODE__INCOMING;
+
+	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVERSATION__BASE_INTERACTION_NODE_ELEMENT = CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
 	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -18799,6 +19447,33 @@
 	int SUB_PROCESS__BASE_ACTIVITY_NODE = BPMN_ACTIVITY__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_PROCESS__BASE_INTERACTION_NODE_ELEMENT = BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_PROCESS__OUTGOING_CONVERSATION_LINKS = BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SUB_PROCESS__INCOMING_CONVERSATION_LINKS = BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -19151,6 +19826,33 @@
 	int CALL_ACTIVITY__BASE_ACTIVITY_NODE = BPMN_ACTIVITY__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT = BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_ACTIVITY__OUTGOING_CONVERSATION_LINKS = BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CALL_ACTIVITY__INCOMING_CONVERSATION_LINKS = BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -19476,6 +20178,33 @@
 	int BUSINESS_RULE_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BUSINESS_RULE_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BUSINESS_RULE_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BUSINESS_RULE_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -19928,6 +20657,33 @@
 	int AD_HOC_SUB_PROCESS__BASE_ACTIVITY_NODE = SUB_PROCESS__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AD_HOC_SUB_PROCESS__BASE_INTERACTION_NODE_ELEMENT = SUB_PROCESS__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AD_HOC_SUB_PROCESS__OUTGOING_CONVERSATION_LINKS = SUB_PROCESS__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AD_HOC_SUB_PROCESS__INCOMING_CONVERSATION_LINKS = SUB_PROCESS__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -20316,6 +21072,33 @@
 	int SCRIPT_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPT_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPT_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SCRIPT_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -20668,6 +21451,33 @@
 	int SEND_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEND_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEND_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEND_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -21020,6 +21830,33 @@
 	int TRANSACTION__BASE_ACTIVITY_NODE = SUB_PROCESS__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSACTION__BASE_INTERACTION_NODE_ELEMENT = SUB_PROCESS__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSACTION__OUTGOING_CONVERSATION_LINKS = SUB_PROCESS__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSACTION__INCOMING_CONVERSATION_LINKS = SUB_PROCESS__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -21535,6 +22372,33 @@
 	int RECEIVE_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECEIVE_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECEIVE_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECEIVE_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -21896,6 +22760,33 @@
 	int SERVICE_TASK__BASE_ACTIVITY_NODE = TASK__BASE_ACTIVITY_NODE;
 
 	/**
+	 * The feature id for the '<em><b>Base Interaction Node Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE_TASK__BASE_INTERACTION_NODE_ELEMENT = TASK__BASE_INTERACTION_NODE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Conversation Links</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE_TASK__OUTGOING_CONVERSATION_LINKS = TASK__OUTGOING_CONVERSATION_LINKS;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Conversation Links</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SERVICE_TASK__INCOMING_CONVERSATION_LINKS = TASK__INCOMING_CONVERSATION_LINKS;
+
+	/**
 	 * The feature id for the '<em><b>Is For Compensation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -23288,6 +24179,28 @@
 	EReference getSequenceFlow_ConditionExpression();
 
 	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getSourceRef <em>Source Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Source Ref</em>'.
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getSourceRef()
+	 * @see #getSequenceFlow()
+	 * @generated
+	 */
+	EReference getSequenceFlow_SourceRef();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getTargetRef <em>Target Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Target Ref</em>'.
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getTargetRef()
+	 * @see #getSequenceFlow()
+	 * @generated
+	 */
+	EReference getSequenceFlow_TargetRef();
+
+	/**
 	 * Returns the meta object for the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#SequenceFlowconditionExpression(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Sequence Flowcondition Expression</em>}' operation.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -25400,15 +26313,15 @@
 	EClass getInteractionNode();
 
 	/**
-	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_Element <em>Base Element</em>}'.
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for the reference '<em>Base Element</em>'.
-	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_Element()
+	 * @return the meta object for the reference '<em>Base Interaction Node Element</em>'.
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_InteractionNode_Element()
 	 * @see #getInteractionNode()
 	 * @generated
 	 */
-	EReference getInteractionNode_Base_Element();
+	EReference getInteractionNode_Base_InteractionNode_Element();
 
 	/**
 	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}'.
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/ConversationNode.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/ConversationNode.java
index 2da0c39..81b3b4e 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/ConversationNode.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/ConversationNode.java
@@ -27,7 +27,7 @@
  * @model abstract="true"
  * @generated
  */
-public interface ConversationNode extends InteractionNode {
+public interface ConversationNode extends BaseElement, InteractionNode {
 	/**
 	 * Returns the value of the '<em><b>Base Information Flow</b></em>' reference.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/InteractionNode.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/InteractionNode.java
index 4ae1277..4afbe6c 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/InteractionNode.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/InteractionNode.java
@@ -15,7 +15,7 @@
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_Element <em>Base Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  * </ul>
@@ -26,30 +26,31 @@
  */
 public interface InteractionNode extends EObject {
 	/**
-	 * Returns the value of the '<em><b>Base Element</b></em>' reference.
+	 * Returns the value of the '<em><b>Base Interaction Node Element</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
-	 * If the meaning of the '<em>Base Element</em>' reference isn't clear,
+	 * If the meaning of the '<em>Base Interaction Node Element</em>' reference isn't clear,
 	 * there really should be more of a description here...
 	 * </p>
 	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Base Element</em>' reference.
-	 * @see #setBase_Element(Element)
-	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage#getInteractionNode_Base_Element()
+	 * @return the value of the '<em>Base Interaction Node Element</em>' reference.
+	 * @see #setBase_InteractionNode_Element(Element)
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage#getInteractionNode_Base_InteractionNode_Element()
 	 * @model required="true" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='base_Element'"
 	 * @generated
 	 */
-	Element getBase_Element();
+	Element getBase_InteractionNode_Element();
 
 	/**
-	 * Sets the value of the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_Element <em>Base Element</em>}' reference.
+	 * Sets the value of the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Base Element</em>' reference.
-	 * @see #getBase_Element()
+	 * @param value the new value of the '<em>Base Interaction Node Element</em>' reference.
+	 * @see #getBase_InteractionNode_Element()
 	 * @generated
 	 */
-	void setBase_Element(Element value);
+	void setBase_InteractionNode_Element(Element value);
 
 	/**
 	 * Returns the value of the '<em><b>Outgoing Conversation Links</b></em>' reference list.
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/Participant.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/Participant.java
index 82e3914..4972031 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/Participant.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/Participant.java
@@ -29,7 +29,7 @@
  * @model
  * @generated
  */
-public interface Participant extends BaseElement {
+public interface Participant extends BaseElement, InteractionNode {
 	/**
 	 * Returns the value of the '<em><b>Base Property</b></em>' reference.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/SequenceFlow.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/SequenceFlow.java
index 07fef75..70202ad 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/SequenceFlow.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/SequenceFlow.java
@@ -19,6 +19,8 @@
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getBase_ControlFlow <em>Base Control Flow</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#isImmediate <em>Is Immediate</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getConditionExpression <em>Condition Expression</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getSourceRef <em>Source Ref</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getTargetRef <em>Target Ref</em>}</li>
  * </ul>
  *
  * @see org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage#getSequenceFlow()
@@ -105,6 +107,58 @@
 	void setConditionExpression(BPMNExpression value);
 
 	/**
+	 * Returns the value of the '<em><b>Source Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source Ref</em>' reference.
+	 * @see #setSourceRef(FlowNode)
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage#getSequenceFlow_SourceRef()
+	 * @model required="true" volatile="true" ordered="false"
+	 * @generated
+	 */
+	FlowNode getSourceRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getSourceRef <em>Source Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source Ref</em>' reference.
+	 * @see #getSourceRef()
+	 * @generated
+	 */
+	void setSourceRef(FlowNode value);
+
+	/**
+	 * Returns the value of the '<em><b>Target Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target Ref</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Target Ref</em>' reference.
+	 * @see #setTargetRef(FlowNode)
+	 * @see org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage#getSequenceFlow_TargetRef()
+	 * @model required="true" volatile="true" ordered="false"
+	 * @generated
+	 */
+	FlowNode getTargetRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow#getTargetRef <em>Target Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Target Ref</em>' reference.
+	 * @see #getTargetRef()
+	 * @generated
+	 */
+	void setTargetRef(FlowNode value);
+
+	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * <!-- begin-model-doc -->
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNActivityImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNActivityImpl.java
index e2bec10..7c3629b 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNActivityImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNActivityImpl.java
@@ -7,6 +7,7 @@
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
@@ -17,17 +18,22 @@
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNActivity;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProperty;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BoundaryEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationLink;
 import org.eclipse.papyrus.bpmn.BPMNProfile.DataInputAssociation;
 import org.eclipse.papyrus.bpmn.BPMNProfile.DataOutputAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode;
 import org.eclipse.papyrus.bpmn.BPMNProfile.LoopCharacteristics;
 import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceRole;
 import org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
 import org.eclipse.uml2.uml.Action;
+import org.eclipse.uml2.uml.Element;
 
 /**
  * <!-- begin-user-doc -->
@@ -37,6 +43,9 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#isForCompensation <em>Is For Compensation</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#getStartQuantity <em>Start Quantity</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNActivityImpl#getCompletionQuantity <em>Completion Quantity</em>}</li>
@@ -55,6 +64,36 @@
  */
 public abstract class BPMNActivityImpl extends FlowNodeImpl implements BPMNActivity {
 	/**
+	 * The cached value of the '{@link #getBase_InteractionNode_Element() <em>Base Interaction Node Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_InteractionNode_Element()
+	 * @generated
+	 * @ordered
+	 */
+	protected Element base_InteractionNode_Element;
+
+	/**
+	 * The cached value of the '{@link #getOutgoingConversationLinks() <em>Outgoing Conversation Links</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutgoingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ConversationLink> outgoingConversationLinks;
+
+	/**
+	 * The cached value of the '{@link #getIncomingConversationLinks() <em>Incoming Conversation Links</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncomingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected ConversationLink incomingConversationLinks;
+
+	/**
 	 * The default value of the '{@link #isForCompensation() <em>Is For Compensation</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -228,6 +267,116 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public Element getBase_InteractionNode_Element() {
+		if (base_InteractionNode_Element != null && base_InteractionNode_Element.eIsProxy()) {
+			InternalEObject oldBase_InteractionNode_Element = (InternalEObject)base_InteractionNode_Element;
+			base_InteractionNode_Element = (Element)eResolveProxy(oldBase_InteractionNode_Element);
+			if (base_InteractionNode_Element != oldBase_InteractionNode_Element) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+			}
+		}
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element basicGetBase_InteractionNode_Element() {
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_InteractionNode_Element(Element newBase_InteractionNode_Element) {
+		Element oldBase_InteractionNode_Element = base_InteractionNode_Element;
+		base_InteractionNode_Element = newBase_InteractionNode_Element;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ConversationLink> getOutgoingConversationLinks() {
+		if (outgoingConversationLinks == null) {
+			outgoingConversationLinks = new EObjectWithInverseResolvingEList<ConversationLink>(ConversationLink.class, this, BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS, BPMNProfilePackage.CONVERSATION_LINK__SOURCE_REF);
+		}
+		return outgoingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink getIncomingConversationLinks() {
+		if (incomingConversationLinks != null && incomingConversationLinks.eIsProxy()) {
+			InternalEObject oldIncomingConversationLinks = (InternalEObject)incomingConversationLinks;
+			incomingConversationLinks = (ConversationLink)eResolveProxy(oldIncomingConversationLinks);
+			if (incomingConversationLinks != oldIncomingConversationLinks) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, incomingConversationLinks));
+			}
+		}
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink basicGetIncomingConversationLinks() {
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIncomingConversationLinks(ConversationLink newIncomingConversationLinks, NotificationChain msgs) {
+		ConversationLink oldIncomingConversationLinks = incomingConversationLinks;
+		incomingConversationLinks = newIncomingConversationLinks;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, newIncomingConversationLinks);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncomingConversationLinks(ConversationLink newIncomingConversationLinks) {
+		if (newIncomingConversationLinks != incomingConversationLinks) {
+			NotificationChain msgs = null;
+			if (incomingConversationLinks != null)
+				msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			if (newIncomingConversationLinks != null)
+				msgs = ((InternalEObject)newIncomingConversationLinks).eInverseAdd(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			msgs = basicSetIncomingConversationLinks(newIncomingConversationLinks, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS, newIncomingConversationLinks, newIncomingConversationLinks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean isForCompensation() {
 		return isForCompensation;
 	}
@@ -653,9 +802,52 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingConversationLinks()).basicAdd(otherEnd, msgs);
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				if (incomingConversationLinks != null)
+					msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+				return basicSetIncomingConversationLinks((ConversationLink)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<?>)getOutgoingConversationLinks()).basicRemove(otherEnd, msgs);
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				return basicSetIncomingConversationLinks(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT:
+				if (resolve) return getBase_InteractionNode_Element();
+				return basicGetBase_InteractionNode_Element();
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				return getOutgoingConversationLinks();
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				if (resolve) return getIncomingConversationLinks();
+				return basicGetIncomingConversationLinks();
 			case BPMNProfilePackage.BPMN_ACTIVITY__IS_FOR_COMPENSATION:
 				return isForCompensation();
 			case BPMNProfilePackage.BPMN_ACTIVITY__START_QUANTITY:
@@ -697,6 +889,16 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)newValue);
+				return;
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				getOutgoingConversationLinks().addAll((Collection<? extends ConversationLink>)newValue);
+				return;
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)newValue);
+				return;
 			case BPMNProfilePackage.BPMN_ACTIVITY__IS_FOR_COMPENSATION:
 				setIsForCompensation((Boolean)newValue);
 				return;
@@ -750,6 +952,15 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)null);
+				return;
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				return;
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)null);
+				return;
 			case BPMNProfilePackage.BPMN_ACTIVITY__IS_FOR_COMPENSATION:
 				setIsForCompensation(IS_FOR_COMPENSATION_EDEFAULT);
 				return;
@@ -798,6 +1009,12 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT:
+				return base_InteractionNode_Element != null;
+			case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS:
+				return outgoingConversationLinks != null && !outgoingConversationLinks.isEmpty();
+			case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS:
+				return incomingConversationLinks != null;
 			case BPMNProfilePackage.BPMN_ACTIVITY__IS_FOR_COMPENSATION:
 				return isForCompensation != IS_FOR_COMPENSATION_EDEFAULT;
 			case BPMNProfilePackage.BPMN_ACTIVITY__START_QUANTITY:
@@ -832,6 +1049,42 @@
 	 * @generated
 	 */
 	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (derivedFeatureID) {
+				case BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (baseFeatureID) {
+				case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.BPMN_ACTIVITY__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.BPMN_ACTIVITY__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.BPMN_ACTIVITY__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	@SuppressWarnings("unchecked")
 	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
 		switch (operationID) {
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNEventImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNEventImpl.java
index 2d57321..001ecf6 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNEventImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNEventImpl.java
@@ -5,15 +5,21 @@
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNEvent;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProperty;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationLink;
 import org.eclipse.papyrus.bpmn.BPMNProfile.EventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode;
+import org.eclipse.uml2.uml.Element;
 
 /**
  * <!-- begin-user-doc -->
@@ -23,6 +29,9 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#getEventClass <em>Event Class</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#get_eventDefinitions <em>event Definitions</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNEventImpl#getProperties <em>Properties</em>}</li>
@@ -33,6 +42,36 @@
  */
 public abstract class BPMNEventImpl extends FlowNodeImpl implements BPMNEvent {
 	/**
+	 * The cached value of the '{@link #getBase_InteractionNode_Element() <em>Base Interaction Node Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_InteractionNode_Element()
+	 * @generated
+	 * @ordered
+	 */
+	protected Element base_InteractionNode_Element;
+
+	/**
+	 * The cached value of the '{@link #getOutgoingConversationLinks() <em>Outgoing Conversation Links</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutgoingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ConversationLink> outgoingConversationLinks;
+
+	/**
+	 * The cached value of the '{@link #getIncomingConversationLinks() <em>Incoming Conversation Links</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncomingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected ConversationLink incomingConversationLinks;
+
+	/**
 	 * The cached value of the '{@link #getEventClass() <em>Event Class</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -96,6 +135,116 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public Element getBase_InteractionNode_Element() {
+		if (base_InteractionNode_Element != null && base_InteractionNode_Element.eIsProxy()) {
+			InternalEObject oldBase_InteractionNode_Element = (InternalEObject)base_InteractionNode_Element;
+			base_InteractionNode_Element = (Element)eResolveProxy(oldBase_InteractionNode_Element);
+			if (base_InteractionNode_Element != oldBase_InteractionNode_Element) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+			}
+		}
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element basicGetBase_InteractionNode_Element() {
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_InteractionNode_Element(Element newBase_InteractionNode_Element) {
+		Element oldBase_InteractionNode_Element = base_InteractionNode_Element;
+		base_InteractionNode_Element = newBase_InteractionNode_Element;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ConversationLink> getOutgoingConversationLinks() {
+		if (outgoingConversationLinks == null) {
+			outgoingConversationLinks = new EObjectWithInverseResolvingEList<ConversationLink>(ConversationLink.class, this, BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS, BPMNProfilePackage.CONVERSATION_LINK__SOURCE_REF);
+		}
+		return outgoingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink getIncomingConversationLinks() {
+		if (incomingConversationLinks != null && incomingConversationLinks.eIsProxy()) {
+			InternalEObject oldIncomingConversationLinks = (InternalEObject)incomingConversationLinks;
+			incomingConversationLinks = (ConversationLink)eResolveProxy(oldIncomingConversationLinks);
+			if (incomingConversationLinks != oldIncomingConversationLinks) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, incomingConversationLinks));
+			}
+		}
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink basicGetIncomingConversationLinks() {
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIncomingConversationLinks(ConversationLink newIncomingConversationLinks, NotificationChain msgs) {
+		ConversationLink oldIncomingConversationLinks = incomingConversationLinks;
+		incomingConversationLinks = newIncomingConversationLinks;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, newIncomingConversationLinks);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncomingConversationLinks(ConversationLink newIncomingConversationLinks) {
+		if (newIncomingConversationLinks != incomingConversationLinks) {
+			NotificationChain msgs = null;
+			if (incomingConversationLinks != null)
+				msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			if (newIncomingConversationLinks != null)
+				msgs = ((InternalEObject)newIncomingConversationLinks).eInverseAdd(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			msgs = basicSetIncomingConversationLinks(newIncomingConversationLinks, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS, newIncomingConversationLinks, newIncomingConversationLinks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public org.eclipse.uml2.uml.Class getEventClass() {
 		if (eventClass != null && eventClass.eIsProxy()) {
 			InternalEObject oldEventClass = (InternalEObject)eventClass;
@@ -170,9 +319,52 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingConversationLinks()).basicAdd(otherEnd, msgs);
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				if (incomingConversationLinks != null)
+					msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+				return basicSetIncomingConversationLinks((ConversationLink)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<?>)getOutgoingConversationLinks()).basicRemove(otherEnd, msgs);
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				return basicSetIncomingConversationLinks(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT:
+				if (resolve) return getBase_InteractionNode_Element();
+				return basicGetBase_InteractionNode_Element();
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				return getOutgoingConversationLinks();
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				if (resolve) return getIncomingConversationLinks();
+				return basicGetIncomingConversationLinks();
 			case BPMNProfilePackage.BPMN_EVENT__EVENT_CLASS:
 				if (resolve) return getEventClass();
 				return basicGetEventClass();
@@ -195,6 +387,16 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)newValue);
+				return;
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				getOutgoingConversationLinks().addAll((Collection<? extends ConversationLink>)newValue);
+				return;
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)newValue);
+				return;
 			case BPMNProfilePackage.BPMN_EVENT__EVENT_CLASS:
 				setEventClass((org.eclipse.uml2.uml.Class)newValue);
 				return;
@@ -222,6 +424,15 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)null);
+				return;
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				return;
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)null);
+				return;
 			case BPMNProfilePackage.BPMN_EVENT__EVENT_CLASS:
 				setEventClass((org.eclipse.uml2.uml.Class)null);
 				return;
@@ -246,6 +457,12 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT:
+				return base_InteractionNode_Element != null;
+			case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS:
+				return outgoingConversationLinks != null && !outgoingConversationLinks.isEmpty();
+			case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS:
+				return incomingConversationLinks != null;
 			case BPMNProfilePackage.BPMN_EVENT__EVENT_CLASS:
 				return eventClass != null;
 			case BPMNProfilePackage.BPMN_EVENT__EVENT_DEFINITIONS:
@@ -258,4 +475,40 @@
 		return super.eIsSet(featureID);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (derivedFeatureID) {
+				case BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (baseFeatureID) {
+				case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.BPMN_EVENT__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.BPMN_EVENT__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.BPMN_EVENT__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
 } //BPMNEventImpl
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfile.ecore b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfile.ecore
index 6e5c2d1..49923b5 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfile.ecore
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfile.ecore
@@ -32,6 +32,16 @@
         eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//ActivityGroup"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FlowNode" abstract="true" eSuperTypes="#//FlowElement">
+    <eAnnotations source="duplicates">
+      <contents xsi:type="ecore:EReference" name="incoming" ordered="false" upperBound="-1"
+          eType="#//SequenceFlow" eOpposite="#//SequenceFlow/targetRef">
+        <eAnnotations source="redefines" references="#//BaseElement/incoming"/>
+      </contents>
+      <contents xsi:type="ecore:EReference" name="outgoing" ordered="false" upperBound="-1"
+          eType="#//SequenceFlow" eOpposite="#//SequenceFlow/sourceRef">
+        <eAnnotations source="redefines" references="#//BaseElement/outgoing"/>
+      </contents>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_ActivityNode" ordered="false"
         eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//ActivityNode"/>
   </eClassifiers>
@@ -315,6 +325,10 @@
         lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/uml2/5.0.0/Types#//Boolean"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="conditionExpression" ordered="false"
         eType="#//BPMNExpression"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="sourceRef" ordered="false"
+        lowerBound="1" eType="#//FlowNode" volatile="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="targetRef" ordered="false"
+        lowerBound="1" eType="#//FlowNode" volatile="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BPMNExpression" eSuperTypes="#//BaseElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_OpaqueExpression"
@@ -999,6 +1013,17 @@
         eType="#//ItemDefinition"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Error" eSuperTypes="#//ItemDefinition">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="errorCode" ordered="false"
         eType="ecore:EDataType http://www.eclipse.org/uml2/5.0.0/Types#//String"/>
   </eClassifiers>
@@ -1082,7 +1107,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="outerParticipantRef" ordered="false"
         lowerBound="1" eType="#//Participant"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Participant" eSuperTypes="#//BaseElement">
+  <eClassifiers xsi:type="ecore:EClass" name="Participant" eSuperTypes="#//BaseElement #//InteractionNode">
     <eOperations name="Participantownership" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="Participant.ownership"/>
@@ -1209,8 +1234,12 @@
         upperBound="-1" eType="#//BPMNInterface"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InteractionNode" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
-        lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Element"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_InteractionNode_Element"
+        ordered="false" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Element">
+      <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <details key="originalName" value="base_Element"/>
+      </eAnnotations>
+    </eStructuralFeatures>
     <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingConversationLinks"
         ordered="false" upperBound="-1" eType="#//ConversationLink" eOpposite="#//ConversationLink/sourceRef"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConversationLinks"
@@ -1348,7 +1377,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="messageRef" ordered="false"
         eType="#//BPMNMessage"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//InteractionNode">
+  <eClassifiers xsi:type="ecore:EClass" name="ConversationNode" abstract="true" eSuperTypes="#//BaseElement #//InteractionNode">
     <eOperations name="ConversationNodeparticipantRefs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="ConversationNode.participantRefs"/>
@@ -1531,6 +1560,15 @@
         eType="#//BPMNProcess" eOpposite="#//BPMNProcess/resources"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ResourceAssignmentExpression" eSuperTypes="#//BPMNExpression">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_OpaqueExpression">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_OpaqueExpression" ordered="false"
+          eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//OpaqueExpression">
+        <eAnnotations source="redefines" references="#//BPMNExpression/base_OpaqueExpression"/>
+      </contents>
+    </eAnnotations>
     <eOperations name="ResourceAssignmentExpressionexpression" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="ResourceAssignmentExpression.expression"/>
@@ -1719,7 +1757,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_Event" ordered="false"
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Event"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BPMNActivity" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="BPMNActivity" abstract="true" eSuperTypes="#//FlowNode #//InteractionNode">
     <eOperations name="BPMNActivityresources" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="BPMNActivity.resources"/>
@@ -1821,6 +1859,15 @@
         upperBound="-1" eType="#//ResourceRole"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BoundaryEvent" eSuperTypes="#//CatchEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_AcceptEventAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_AcceptEventAction" ordered="false"
+          eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//AcceptEventAction">
+        <eAnnotations source="redefines" references="#//CatchEvent/base_AcceptEventAction"/>
+      </contents>
+    </eAnnotations>
     <eOperations name="boundaryEventattachedToRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="boundaryEvent.attachedToRef"/>
@@ -1862,7 +1909,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataOutputAssociation"
         ordered="false" upperBound="-1" eType="#//DataOutputAssociation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BPMNEvent" abstract="true" eSuperTypes="#//FlowNode">
+  <eClassifiers xsi:type="ecore:EClass" name="BPMNEvent" abstract="true" eSuperTypes="#//FlowNode #//InteractionNode">
     <eStructuralFeatures xsi:type="ecore:EReference" name="eventClass" ordered="false"
         eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="_eventDefinitions" ordered="false"
@@ -1996,6 +2043,17 @@
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallEvent"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Escalation" eSuperTypes="#//ItemDefinition">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eOperations name="EscalationstructureRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="Escalation.structureRef"/>
@@ -2028,6 +2086,18 @@
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallEvent"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BPMNSignal" eSuperTypes="#//ItemDefinition">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="structureRef">
+        <details key="lowerBound" value="1"/>
+        <details key="eType" value="uml::Class"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="structureRef" ordered="false" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//Element">
+        <eAnnotations source="redefines" references="#//ItemDefinition/structureRef"/>
+        <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+          <details key="derivation" value="self.base_Class"/>
+        </eAnnotations>
+      </contents>
+    </eAnnotations>
     <eOperations name="BPMNSignalstructureRef" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
       <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
         <details key="originalName" value="BPMNSignal.structureRef"/>
@@ -2114,7 +2184,17 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallEvent"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="IntermediateCatchEvent" eSuperTypes="#//CatchEvent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="IntermediateCatchEvent" eSuperTypes="#//CatchEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_AcceptEventAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_AcceptEventAction" ordered="false"
+          eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//AcceptEventAction">
+        <eAnnotations source="redefines" references="#//CatchEvent/base_AcceptEventAction"/>
+      </contents>
+    </eAnnotations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="IntermediateThrowEvent" eSuperTypes="#//ThrowEvent">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_SendObjectAction"
         ordered="false" lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//SendObjectAction"/>
@@ -2123,7 +2203,17 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallEvent"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ImplicitThrowEvent" eSuperTypes="#//ThrowEvent"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ImplicitThrowEvent" eSuperTypes="#//ThrowEvent">
+    <eAnnotations source="duplicates">
+      <eAnnotations source="base_CallOperationAction">
+        <details key="lowerBound" value="1"/>
+      </eAnnotations>
+      <contents xsi:type="ecore:EReference" name="base_CallOperationAction" ordered="false"
+          eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallOperationAction">
+        <eAnnotations source="redefines" references="#//ThrowEvent/base_CallOperationAction"/>
+      </contents>
+    </eAnnotations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="CancelEventDefinition" eSuperTypes="#//EventDefinition">
     <eStructuralFeatures xsi:type="ecore:EReference" name="base_CallEvent" ordered="false"
         lowerBound="1" eType="ecore:EClass http://www.eclipse.org/uml2/5.0.0/UML#//CallEvent"/>
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfilePackageImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfilePackageImpl.java
index f0e3e0d..a999218 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfilePackageImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNProfilePackageImpl.java
@@ -15,14 +15,12 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
-import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfileFactory;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
-import org.eclipse.uml2.types.TypesPackage;
 import org.eclipse.uml2.uml.UMLPackage;
 
 /**
@@ -1050,8 +1048,6 @@
 		isInited = true;
 
 		// Initialize simple dependencies
-		EcorePackage.eINSTANCE.eClass();
-		TypesPackage.eINSTANCE.eClass();
 		UMLPackage.eINSTANCE.eClass();
 
 		// Load packages
@@ -1860,6 +1856,24 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getSequenceFlow_SourceRef() {
+        return (EReference)getSequenceFlow().getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSequenceFlow_TargetRef() {
+        return (EReference)getSequenceFlow().getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EOperation getSequenceFlow__SequenceFlowconditionExpression__DiagnosticChain_Map() {
         return getSequenceFlow().getEOperations().get(0);
 	}
@@ -3738,7 +3752,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getInteractionNode_Base_Element() {
+	public EReference getInteractionNode_Base_InteractionNode_Element() {
         return (EReference)getInteractionNode().getEStructuralFeatures().get(0);
 	}
 
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNSignalImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNSignalImpl.java
index 6193ed0..cd63c58 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNSignalImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BPMNSignalImpl.java
@@ -5,21 +5,31 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.emf.ecore.util.EObjectValidator;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNSignal;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.Element;
 
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>BPMN Signal</b></em>'.
  * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BPMNSignalImpl#getStructureRef <em>Structure Ref</em>}</li>
+ * </ul>
  *
  * @generated
  */
@@ -48,6 +58,59 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public Element getStructureRef() {
+		if (structureRef != null && structureRef.eIsProxy()) {
+			InternalEObject oldStructureRef = (InternalEObject)structureRef;
+			structureRef = (Element)eResolveProxy(oldStructureRef);
+			if (structureRef != oldStructureRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BPMN_SIGNAL__STRUCTURE_REF, oldStructureRef, structureRef));
+			}
+		}
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Element basicGetStructureRef() {
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setStructureRef(Element newStructureRef) {
+		if (newStructureRef != null && !(newStructureRef instanceof org.eclipse.uml2.uml.Class)) {
+			throw new IllegalArgumentException("newStructureRef must be an instance of org.eclipse.uml2.uml.Class");
+		}
+		Element oldStructureRef = structureRef;
+		structureRef = newStructureRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BPMN_SIGNAL__STRUCTURE_REF, oldStructureRef, structureRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetStructureRef() {
+		return structureRef != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean BPMNSignalstructureRef(DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
@@ -74,6 +137,20 @@
 	 * @generated
 	 */
 	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case BPMNProfilePackage.BPMN_SIGNAL__STRUCTURE_REF:
+				return isSetStructureRef();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	@SuppressWarnings("unchecked")
 	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
 		switch (operationID) {
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BoundaryEventImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BoundaryEventImpl.java
index c337720..6e23b01 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BoundaryEventImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/BoundaryEventImpl.java
@@ -19,6 +19,7 @@
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BoundaryEvent;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.AcceptEventAction;
 
 /**
  * <!-- begin-user-doc -->
@@ -30,6 +31,7 @@
  * <ul>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BoundaryEventImpl#isCancelActivity <em>Cancel Activity</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BoundaryEventImpl#getAttachedToRef <em>Attached To Ref</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.BoundaryEventImpl#getBase_AcceptEventAction <em>Base Accept Event Action</em>}</li>
  * </ul>
  *
  * @generated
@@ -119,6 +121,56 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public AcceptEventAction getBase_AcceptEventAction() {
+		if (base_AcceptEventAction != null && base_AcceptEventAction.eIsProxy()) {
+			InternalEObject oldBase_AcceptEventAction = (InternalEObject)base_AcceptEventAction;
+			base_AcceptEventAction = (AcceptEventAction)eResolveProxy(oldBase_AcceptEventAction);
+			if (base_AcceptEventAction != oldBase_AcceptEventAction) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.BOUNDARY_EVENT__BASE_ACCEPT_EVENT_ACTION, oldBase_AcceptEventAction, base_AcceptEventAction));
+			}
+		}
+		return base_AcceptEventAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AcceptEventAction basicGetBase_AcceptEventAction() {
+		return base_AcceptEventAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_AcceptEventAction(AcceptEventAction newBase_AcceptEventAction) {
+		AcceptEventAction oldBase_AcceptEventAction = base_AcceptEventAction;
+		base_AcceptEventAction = newBase_AcceptEventAction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.BOUNDARY_EVENT__BASE_ACCEPT_EVENT_ACTION, oldBase_AcceptEventAction, base_AcceptEventAction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_AcceptEventAction() {
+		return base_AcceptEventAction != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean boundaryEventattachedToRef(DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
@@ -198,6 +250,8 @@
 				return cancelActivity != CANCEL_ACTIVITY_EDEFAULT;
 			case BPMNProfilePackage.BOUNDARY_EVENT__ATTACHED_TO_REF:
 				return basicGetAttachedToRef() != null;
+			case BPMNProfilePackage.BOUNDARY_EVENT__BASE_ACCEPT_EVENT_ACTION:
+				return isSetBase_AcceptEventAction();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ConversationNodeImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ConversationNodeImpl.java
index b501a1f..c437c7f 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ConversationNodeImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ConversationNodeImpl.java
@@ -7,6 +7,7 @@
 import java.util.Map;
 
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.BasicDiagnostic;
 import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
@@ -17,12 +18,17 @@
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationLink;
 import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationNode;
 import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationKey;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode;
 import org.eclipse.papyrus.bpmn.BPMNProfile.MessageFlow;
 import org.eclipse.papyrus.bpmn.BPMNProfile.Participant;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.InformationFlow;
 
 /**
@@ -33,6 +39,9 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getBase_InformationFlow <em>Base Information Flow</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getMessageFlowRefs <em>Message Flow Refs</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ConversationNodeImpl#getCorrelationKeys <em>Correlation Keys</em>}</li>
@@ -41,7 +50,37 @@
  *
  * @generated
  */
-public abstract class ConversationNodeImpl extends InteractionNodeImpl implements ConversationNode {
+public abstract class ConversationNodeImpl extends BaseElementImpl implements ConversationNode {
+	/**
+	 * The cached value of the '{@link #getBase_InteractionNode_Element() <em>Base Interaction Node Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_InteractionNode_Element()
+	 * @generated
+	 * @ordered
+	 */
+	protected Element base_InteractionNode_Element;
+
+	/**
+	 * The cached value of the '{@link #getOutgoingConversationLinks() <em>Outgoing Conversation Links</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutgoingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ConversationLink> outgoingConversationLinks;
+
+	/**
+	 * The cached value of the '{@link #getIncomingConversationLinks() <em>Incoming Conversation Links</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncomingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected ConversationLink incomingConversationLinks;
+
 	/**
 	 * The cached value of the '{@link #getBase_InformationFlow() <em>Base Information Flow</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -106,6 +145,116 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public Element getBase_InteractionNode_Element() {
+		if (base_InteractionNode_Element != null && base_InteractionNode_Element.eIsProxy()) {
+			InternalEObject oldBase_InteractionNode_Element = (InternalEObject)base_InteractionNode_Element;
+			base_InteractionNode_Element = (Element)eResolveProxy(oldBase_InteractionNode_Element);
+			if (base_InteractionNode_Element != oldBase_InteractionNode_Element) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+			}
+		}
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element basicGetBase_InteractionNode_Element() {
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_InteractionNode_Element(Element newBase_InteractionNode_Element) {
+		Element oldBase_InteractionNode_Element = base_InteractionNode_Element;
+		base_InteractionNode_Element = newBase_InteractionNode_Element;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ConversationLink> getOutgoingConversationLinks() {
+		if (outgoingConversationLinks == null) {
+			outgoingConversationLinks = new EObjectWithInverseResolvingEList<ConversationLink>(ConversationLink.class, this, BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS, BPMNProfilePackage.CONVERSATION_LINK__SOURCE_REF);
+		}
+		return outgoingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink getIncomingConversationLinks() {
+		if (incomingConversationLinks != null && incomingConversationLinks.eIsProxy()) {
+			InternalEObject oldIncomingConversationLinks = (InternalEObject)incomingConversationLinks;
+			incomingConversationLinks = (ConversationLink)eResolveProxy(oldIncomingConversationLinks);
+			if (incomingConversationLinks != oldIncomingConversationLinks) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, incomingConversationLinks));
+			}
+		}
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink basicGetIncomingConversationLinks() {
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIncomingConversationLinks(ConversationLink newIncomingConversationLinks, NotificationChain msgs) {
+		ConversationLink oldIncomingConversationLinks = incomingConversationLinks;
+		incomingConversationLinks = newIncomingConversationLinks;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, newIncomingConversationLinks);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncomingConversationLinks(ConversationLink newIncomingConversationLinks) {
+		if (newIncomingConversationLinks != incomingConversationLinks) {
+			NotificationChain msgs = null;
+			if (incomingConversationLinks != null)
+				msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			if (newIncomingConversationLinks != null)
+				msgs = ((InternalEObject)newIncomingConversationLinks).eInverseAdd(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			msgs = basicSetIncomingConversationLinks(newIncomingConversationLinks, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS, newIncomingConversationLinks, newIncomingConversationLinks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public InformationFlow getBase_InformationFlow() {
 		if (base_InformationFlow != null && base_InformationFlow.eIsProxy()) {
 			InternalEObject oldBase_InformationFlow = (InternalEObject)base_InformationFlow;
@@ -205,9 +354,52 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingConversationLinks()).basicAdd(otherEnd, msgs);
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				if (incomingConversationLinks != null)
+					msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+				return basicSetIncomingConversationLinks((ConversationLink)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<?>)getOutgoingConversationLinks()).basicRemove(otherEnd, msgs);
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				return basicSetIncomingConversationLinks(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				if (resolve) return getBase_InteractionNode_Element();
+				return basicGetBase_InteractionNode_Element();
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				return getOutgoingConversationLinks();
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				if (resolve) return getIncomingConversationLinks();
+				return basicGetIncomingConversationLinks();
 			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INFORMATION_FLOW:
 				if (resolve) return getBase_InformationFlow();
 				return basicGetBase_InformationFlow();
@@ -230,6 +422,16 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)newValue);
+				return;
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				getOutgoingConversationLinks().addAll((Collection<? extends ConversationLink>)newValue);
+				return;
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)newValue);
+				return;
 			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INFORMATION_FLOW:
 				setBase_InformationFlow((InformationFlow)newValue);
 				return;
@@ -257,6 +459,15 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)null);
+				return;
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				return;
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)null);
+				return;
 			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INFORMATION_FLOW:
 				setBase_InformationFlow((InformationFlow)null);
 				return;
@@ -281,6 +492,12 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				return base_InteractionNode_Element != null;
+			case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS:
+				return outgoingConversationLinks != null && !outgoingConversationLinks.isEmpty();
+			case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS:
+				return incomingConversationLinks != null;
 			case BPMNProfilePackage.CONVERSATION_NODE__BASE_INFORMATION_FLOW:
 				return base_InformationFlow != null;
 			case BPMNProfilePackage.CONVERSATION_NODE__MESSAGE_FLOW_REFS:
@@ -299,6 +516,42 @@
 	 * @generated
 	 */
 	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (derivedFeatureID) {
+				case BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (baseFeatureID) {
+				case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.CONVERSATION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.CONVERSATION_NODE__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.CONVERSATION_NODE__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	@SuppressWarnings("unchecked")
 	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
 		switch (operationID) {
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ErrorImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ErrorImpl.java
index 8dd2450..3bf4dc3 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ErrorImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ErrorImpl.java
@@ -4,8 +4,10 @@
 
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
+import org.eclipse.uml2.uml.Element;
 
 /**
  * <!-- begin-user-doc -->
@@ -16,6 +18,7 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ErrorImpl#getErrorCode <em>Error Code</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ErrorImpl#getStructureRef <em>Structure Ref</em>}</li>
  * </ul>
  *
  * @generated
@@ -87,6 +90,59 @@
 	 * @generated
 	 */
 	@Override
+	public Element getStructureRef() {
+		if (structureRef != null && structureRef.eIsProxy()) {
+			InternalEObject oldStructureRef = (InternalEObject)structureRef;
+			structureRef = (Element)eResolveProxy(oldStructureRef);
+			if (structureRef != oldStructureRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.ERROR__STRUCTURE_REF, oldStructureRef, structureRef));
+			}
+		}
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Element basicGetStructureRef() {
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setStructureRef(Element newStructureRef) {
+		if (newStructureRef != null && !(newStructureRef instanceof org.eclipse.uml2.uml.Class)) {
+			throw new IllegalArgumentException("newStructureRef must be an instance of org.eclipse.uml2.uml.Class");
+		}
+		Element oldStructureRef = structureRef;
+		structureRef = newStructureRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.ERROR__STRUCTURE_REF, oldStructureRef, structureRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetStructureRef() {
+		return structureRef != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case BPMNProfilePackage.ERROR__ERROR_CODE:
@@ -135,6 +191,8 @@
 		switch (featureID) {
 			case BPMNProfilePackage.ERROR__ERROR_CODE:
 				return ERROR_CODE_EDEFAULT == null ? errorCode != null : !ERROR_CODE_EDEFAULT.equals(errorCode);
+			case BPMNProfilePackage.ERROR__STRUCTURE_REF:
+				return isSetStructureRef();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/EscalationImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/EscalationImpl.java
index 125f41b..25ad01a 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/EscalationImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/EscalationImpl.java
@@ -11,12 +11,14 @@
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
 import org.eclipse.emf.ecore.util.EObjectValidator;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.Escalation;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.Element;
 
 /**
  * <!-- begin-user-doc -->
@@ -27,6 +29,7 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.EscalationImpl#getEscalationCode <em>Escalation Code</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.EscalationImpl#getStructureRef <em>Structure Ref</em>}</li>
  * </ul>
  *
  * @generated
@@ -97,6 +100,59 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public Element getStructureRef() {
+		if (structureRef != null && structureRef.eIsProxy()) {
+			InternalEObject oldStructureRef = (InternalEObject)structureRef;
+			structureRef = (Element)eResolveProxy(oldStructureRef);
+			if (structureRef != oldStructureRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.ESCALATION__STRUCTURE_REF, oldStructureRef, structureRef));
+			}
+		}
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Element basicGetStructureRef() {
+		return structureRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setStructureRef(Element newStructureRef) {
+		if (newStructureRef != null && !(newStructureRef instanceof org.eclipse.uml2.uml.Class)) {
+			throw new IllegalArgumentException("newStructureRef must be an instance of org.eclipse.uml2.uml.Class");
+		}
+		Element oldStructureRef = structureRef;
+		structureRef = newStructureRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.ESCALATION__STRUCTURE_REF, oldStructureRef, structureRef));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetStructureRef() {
+		return structureRef != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean EscalationstructureRef(DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
@@ -171,6 +227,8 @@
 		switch (featureID) {
 			case BPMNProfilePackage.ESCALATION__ESCALATION_CODE:
 				return ESCALATION_CODE_EDEFAULT == null ? escalationCode != null : !ESCALATION_CODE_EDEFAULT.equals(escalationCode);
+			case BPMNProfilePackage.ESCALATION__STRUCTURE_REF:
+				return isSetStructureRef();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowNodeImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowNodeImpl.java
index d3fd65c..fa5bfbc 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowNodeImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/FlowNodeImpl.java
@@ -3,11 +3,17 @@
 package org.eclipse.papyrus.bpmn.BPMNProfile.impl;
 
 import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.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.InternalEList;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNAssociation;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.FlowNode;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow;
 import org.eclipse.uml2.uml.ActivityNode;
 
 /**
@@ -19,6 +25,8 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.FlowNodeImpl#getBase_ActivityNode <em>Base Activity Node</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.FlowNodeImpl#getIncoming <em>Incoming</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.FlowNodeImpl#getOutgoing <em>Outgoing</em>}</li>
  * </ul>
  *
  * @generated
@@ -97,6 +105,83 @@
 	 * @generated
 	 */
 	@Override
+	public EList<BPMNAssociation> getIncoming() {
+		if (incoming == null) {
+			incoming = new EObjectWithInverseResolvingEList<BPMNAssociation>(SequenceFlow.class, this, BPMNProfilePackage.FLOW_NODE__INCOMING, BPMNProfilePackage.BPMN_ASSOCIATION__TARGET_REF);
+		}
+		return incoming;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetIncoming() {
+		return incoming != null && !incoming.isEmpty();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<BPMNAssociation> getOutgoing() {
+		if (outgoing == null) {
+			outgoing = new EObjectWithInverseResolvingEList<BPMNAssociation>(SequenceFlow.class, this, BPMNProfilePackage.FLOW_NODE__OUTGOING, BPMNProfilePackage.BPMN_ASSOCIATION__SOURCE_REF);
+		}
+		return outgoing;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetOutgoing() {
+		return outgoing != null && !outgoing.isEmpty();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.FLOW_NODE__INCOMING:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncoming()).basicAdd(otherEnd, msgs);
+			case BPMNProfilePackage.FLOW_NODE__OUTGOING:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoing()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case BPMNProfilePackage.FLOW_NODE__INCOMING:
+				return ((InternalEList<?>)getIncoming()).basicRemove(otherEnd, msgs);
+			case BPMNProfilePackage.FLOW_NODE__OUTGOING:
+				return ((InternalEList<?>)getOutgoing()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case BPMNProfilePackage.FLOW_NODE__BASE_ACTIVITY_NODE:
@@ -146,6 +231,10 @@
 		switch (featureID) {
 			case BPMNProfilePackage.FLOW_NODE__BASE_ACTIVITY_NODE:
 				return base_ActivityNode != null;
+			case BPMNProfilePackage.FLOW_NODE__INCOMING:
+				return isSetIncoming();
+			case BPMNProfilePackage.FLOW_NODE__OUTGOING:
+				return isSetOutgoing();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ImplicitThrowEventImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ImplicitThrowEventImpl.java
index 976c4f0..16e1fd7 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ImplicitThrowEventImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ImplicitThrowEventImpl.java
@@ -2,14 +2,24 @@
  */
 package org.eclipse.papyrus.bpmn.BPMNProfile.impl;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.ImplicitThrowEvent;
+import org.eclipse.uml2.uml.CallOperationAction;
 
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Implicit Throw Event</b></em>'.
  * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ImplicitThrowEventImpl#getBase_CallOperationAction <em>Base Call Operation Action</em>}</li>
+ * </ul>
  *
  * @generated
  */
@@ -33,4 +43,68 @@
 		return BPMNProfilePackage.eINSTANCE.getImplicitThrowEvent();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CallOperationAction getBase_CallOperationAction() {
+		if (base_CallOperationAction != null && base_CallOperationAction.eIsProxy()) {
+			InternalEObject oldBase_CallOperationAction = (InternalEObject)base_CallOperationAction;
+			base_CallOperationAction = (CallOperationAction)eResolveProxy(oldBase_CallOperationAction);
+			if (base_CallOperationAction != oldBase_CallOperationAction) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.IMPLICIT_THROW_EVENT__BASE_CALL_OPERATION_ACTION, oldBase_CallOperationAction, base_CallOperationAction));
+			}
+		}
+		return base_CallOperationAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CallOperationAction basicGetBase_CallOperationAction() {
+		return base_CallOperationAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_CallOperationAction(CallOperationAction newBase_CallOperationAction) {
+		CallOperationAction oldBase_CallOperationAction = base_CallOperationAction;
+		base_CallOperationAction = newBase_CallOperationAction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.IMPLICIT_THROW_EVENT__BASE_CALL_OPERATION_ACTION, oldBase_CallOperationAction, base_CallOperationAction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_CallOperationAction() {
+		return base_CallOperationAction != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case BPMNProfilePackage.IMPLICIT_THROW_EVENT__BASE_CALL_OPERATION_ACTION:
+				return isSetBase_CallOperationAction();
+		}
+		return super.eIsSet(featureID);
+	}
+
 } //ImplicitThrowEventImpl
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/InteractionNodeImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/InteractionNodeImpl.java
index 2764780..2ebc206 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/InteractionNodeImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/InteractionNodeImpl.java
@@ -26,7 +26,7 @@
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.InteractionNodeImpl#getBase_Element <em>Base Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.InteractionNodeImpl#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.InteractionNodeImpl#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.InteractionNodeImpl#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  * </ul>
@@ -35,14 +35,14 @@
  */
 public abstract class InteractionNodeImpl extends MinimalEObjectImpl.Container implements InteractionNode {
 	/**
-	 * The cached value of the '{@link #getBase_Element() <em>Base Element</em>}' reference.
+	 * The cached value of the '{@link #getBase_InteractionNode_Element() <em>Base Interaction Node Element</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see #getBase_Element()
+	 * @see #getBase_InteractionNode_Element()
 	 * @generated
 	 * @ordered
 	 */
-	protected Element base_Element;
+	protected Element base_InteractionNode_Element;
 
 	/**
 	 * The cached value of the '{@link #getOutgoingConversationLinks() <em>Outgoing Conversation Links</em>}' reference list.
@@ -87,16 +87,16 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Element getBase_Element() {
-		if (base_Element != null && base_Element.eIsProxy()) {
-			InternalEObject oldBase_Element = (InternalEObject)base_Element;
-			base_Element = (Element)eResolveProxy(oldBase_Element);
-			if (base_Element != oldBase_Element) {
+	public Element getBase_InteractionNode_Element() {
+		if (base_InteractionNode_Element != null && base_InteractionNode_Element.eIsProxy()) {
+			InternalEObject oldBase_InteractionNode_Element = (InternalEObject)base_InteractionNode_Element;
+			base_InteractionNode_Element = (Element)eResolveProxy(oldBase_InteractionNode_Element);
+			if (base_InteractionNode_Element != oldBase_InteractionNode_Element) {
 				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT, oldBase_Element, base_Element));
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
 			}
 		}
-		return base_Element;
+		return base_InteractionNode_Element;
 	}
 
 	/**
@@ -104,8 +104,8 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public Element basicGetBase_Element() {
-		return base_Element;
+	public Element basicGetBase_InteractionNode_Element() {
+		return base_InteractionNode_Element;
 	}
 
 	/**
@@ -113,11 +113,11 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public void setBase_Element(Element newBase_Element) {
-		Element oldBase_Element = base_Element;
-		base_Element = newBase_Element;
+	public void setBase_InteractionNode_Element(Element newBase_InteractionNode_Element) {
+		Element oldBase_InteractionNode_Element = base_InteractionNode_Element;
+		base_InteractionNode_Element = newBase_InteractionNode_Element;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT, oldBase_Element, base_Element));
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
 	}
 
 	/**
@@ -235,9 +235,9 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT:
-				if (resolve) return getBase_Element();
-				return basicGetBase_Element();
+			case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				if (resolve) return getBase_InteractionNode_Element();
+				return basicGetBase_InteractionNode_Element();
 			case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS:
 				return getOutgoingConversationLinks();
 			case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS:
@@ -256,8 +256,8 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT:
-				setBase_Element((Element)newValue);
+			case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)newValue);
 				return;
 			case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS:
 				getOutgoingConversationLinks().clear();
@@ -278,8 +278,8 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT:
-				setBase_Element((Element)null);
+			case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)null);
 				return;
 			case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS:
 				getOutgoingConversationLinks().clear();
@@ -299,8 +299,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case BPMNProfilePackage.INTERACTION_NODE__BASE_ELEMENT:
-				return base_Element != null;
+			case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT:
+				return base_InteractionNode_Element != null;
 			case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS:
 				return outgoingConversationLinks != null && !outgoingConversationLinks.isEmpty();
 			case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS:
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/IntermediateCatchEventImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/IntermediateCatchEventImpl.java
index dd66e5e..40f0405 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/IntermediateCatchEventImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/IntermediateCatchEventImpl.java
@@ -2,14 +2,24 @@
  */
 package org.eclipse.papyrus.bpmn.BPMNProfile.impl;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.IntermediateCatchEvent;
+import org.eclipse.uml2.uml.AcceptEventAction;
 
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Intermediate Catch Event</b></em>'.
  * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.IntermediateCatchEventImpl#getBase_AcceptEventAction <em>Base Accept Event Action</em>}</li>
+ * </ul>
  *
  * @generated
  */
@@ -33,4 +43,68 @@
 		return BPMNProfilePackage.eINSTANCE.getIntermediateCatchEvent();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AcceptEventAction getBase_AcceptEventAction() {
+		if (base_AcceptEventAction != null && base_AcceptEventAction.eIsProxy()) {
+			InternalEObject oldBase_AcceptEventAction = (InternalEObject)base_AcceptEventAction;
+			base_AcceptEventAction = (AcceptEventAction)eResolveProxy(oldBase_AcceptEventAction);
+			if (base_AcceptEventAction != oldBase_AcceptEventAction) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.INTERMEDIATE_CATCH_EVENT__BASE_ACCEPT_EVENT_ACTION, oldBase_AcceptEventAction, base_AcceptEventAction));
+			}
+		}
+		return base_AcceptEventAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AcceptEventAction basicGetBase_AcceptEventAction() {
+		return base_AcceptEventAction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_AcceptEventAction(AcceptEventAction newBase_AcceptEventAction) {
+		AcceptEventAction oldBase_AcceptEventAction = base_AcceptEventAction;
+		base_AcceptEventAction = newBase_AcceptEventAction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.INTERMEDIATE_CATCH_EVENT__BASE_ACCEPT_EVENT_ACTION, oldBase_AcceptEventAction, base_AcceptEventAction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_AcceptEventAction() {
+		return base_AcceptEventAction != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case BPMNProfilePackage.INTERMEDIATE_CATCH_EVENT__BASE_ACCEPT_EVENT_ACTION:
+				return isSetBase_AcceptEventAction();
+		}
+		return super.eIsSet(featureID);
+	}
+
 } //IntermediateCatchEventImpl
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ParticipantImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ParticipantImpl.java
index e33c6e6..400638b 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ParticipantImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ParticipantImpl.java
@@ -23,11 +23,14 @@
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNInterface;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProcess;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationLink;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode;
 import org.eclipse.papyrus.bpmn.BPMNProfile.Participant;
 import org.eclipse.papyrus.bpmn.BPMNProfile.ParticipantMultiplicity;
 import org.eclipse.papyrus.bpmn.BPMNProfile.PartnerEntity;
 import org.eclipse.papyrus.bpmn.BPMNProfile.PartnerRole;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.Element;
 import org.eclipse.uml2.uml.Property;
 
 /**
@@ -38,6 +41,9 @@
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getBase_InteractionNode_Element <em>Base Interaction Node Element</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getOutgoingConversationLinks <em>Outgoing Conversation Links</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getIncomingConversationLinks <em>Incoming Conversation Links</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getBase_Property <em>Base Property</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getProcessRef <em>Process Ref</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ParticipantImpl#getParticipantMultiplicity <em>Participant Multiplicity</em>}</li>
@@ -50,6 +56,36 @@
  */
 public class ParticipantImpl extends BaseElementImpl implements Participant {
 	/**
+	 * The cached value of the '{@link #getBase_InteractionNode_Element() <em>Base Interaction Node Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_InteractionNode_Element()
+	 * @generated
+	 * @ordered
+	 */
+	protected Element base_InteractionNode_Element;
+
+	/**
+	 * The cached value of the '{@link #getOutgoingConversationLinks() <em>Outgoing Conversation Links</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutgoingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ConversationLink> outgoingConversationLinks;
+
+	/**
+	 * The cached value of the '{@link #getIncomingConversationLinks() <em>Incoming Conversation Links</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncomingConversationLinks()
+	 * @generated
+	 * @ordered
+	 */
+	protected ConversationLink incomingConversationLinks;
+
+	/**
 	 * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -129,6 +165,116 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public Element getBase_InteractionNode_Element() {
+		if (base_InteractionNode_Element != null && base_InteractionNode_Element.eIsProxy()) {
+			InternalEObject oldBase_InteractionNode_Element = (InternalEObject)base_InteractionNode_Element;
+			base_InteractionNode_Element = (Element)eResolveProxy(oldBase_InteractionNode_Element);
+			if (base_InteractionNode_Element != oldBase_InteractionNode_Element) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+			}
+		}
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element basicGetBase_InteractionNode_Element() {
+		return base_InteractionNode_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_InteractionNode_Element(Element newBase_InteractionNode_Element) {
+		Element oldBase_InteractionNode_Element = base_InteractionNode_Element;
+		base_InteractionNode_Element = newBase_InteractionNode_Element;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT, oldBase_InteractionNode_Element, base_InteractionNode_Element));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ConversationLink> getOutgoingConversationLinks() {
+		if (outgoingConversationLinks == null) {
+			outgoingConversationLinks = new EObjectWithInverseResolvingEList<ConversationLink>(ConversationLink.class, this, BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS, BPMNProfilePackage.CONVERSATION_LINK__SOURCE_REF);
+		}
+		return outgoingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink getIncomingConversationLinks() {
+		if (incomingConversationLinks != null && incomingConversationLinks.eIsProxy()) {
+			InternalEObject oldIncomingConversationLinks = (InternalEObject)incomingConversationLinks;
+			incomingConversationLinks = (ConversationLink)eResolveProxy(oldIncomingConversationLinks);
+			if (incomingConversationLinks != oldIncomingConversationLinks) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, incomingConversationLinks));
+			}
+		}
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ConversationLink basicGetIncomingConversationLinks() {
+		return incomingConversationLinks;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIncomingConversationLinks(ConversationLink newIncomingConversationLinks, NotificationChain msgs) {
+		ConversationLink oldIncomingConversationLinks = incomingConversationLinks;
+		incomingConversationLinks = newIncomingConversationLinks;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS, oldIncomingConversationLinks, newIncomingConversationLinks);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIncomingConversationLinks(ConversationLink newIncomingConversationLinks) {
+		if (newIncomingConversationLinks != incomingConversationLinks) {
+			NotificationChain msgs = null;
+			if (incomingConversationLinks != null)
+				msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			if (newIncomingConversationLinks != null)
+				msgs = ((InternalEObject)newIncomingConversationLinks).eInverseAdd(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+			msgs = basicSetIncomingConversationLinks(newIncomingConversationLinks, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS, newIncomingConversationLinks, newIncomingConversationLinks));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public Property getBase_Property() {
 		if (base_Property != null && base_Property.eIsProxy()) {
 			InternalEObject oldBase_Property = (InternalEObject)base_Property;
@@ -508,6 +654,12 @@
 	@Override
 	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoingConversationLinks()).basicAdd(otherEnd, msgs);
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				if (incomingConversationLinks != null)
+					msgs = ((InternalEObject)incomingConversationLinks).eInverseRemove(this, BPMNProfilePackage.CONVERSATION_LINK__TARGET_REF, ConversationLink.class, msgs);
+				return basicSetIncomingConversationLinks((ConversationLink)otherEnd, msgs);
 			case BPMNProfilePackage.PARTICIPANT__PARTNER_ENTITY_REF:
 				return ((InternalEList<InternalEObject>)(InternalEList<?>)getPartnerEntityRef()).basicAdd(otherEnd, msgs);
 			case BPMNProfilePackage.PARTICIPANT__PARTNER_ROLE_REF:
@@ -524,6 +676,10 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				return ((InternalEList<?>)getOutgoingConversationLinks()).basicRemove(otherEnd, msgs);
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				return basicSetIncomingConversationLinks(null, msgs);
 			case BPMNProfilePackage.PARTICIPANT__PARTNER_ENTITY_REF:
 				return ((InternalEList<?>)getPartnerEntityRef()).basicRemove(otherEnd, msgs);
 			case BPMNProfilePackage.PARTICIPANT__PARTNER_ROLE_REF:
@@ -540,6 +696,14 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT:
+				if (resolve) return getBase_InteractionNode_Element();
+				return basicGetBase_InteractionNode_Element();
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				return getOutgoingConversationLinks();
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				if (resolve) return getIncomingConversationLinks();
+				return basicGetIncomingConversationLinks();
 			case BPMNProfilePackage.PARTICIPANT__BASE_PROPERTY:
 				if (resolve) return getBase_Property();
 				return basicGetBase_Property();
@@ -568,6 +732,16 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)newValue);
+				return;
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				getOutgoingConversationLinks().addAll((Collection<? extends ConversationLink>)newValue);
+				return;
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)newValue);
+				return;
 			case BPMNProfilePackage.PARTICIPANT__BASE_PROPERTY:
 				setBase_Property((Property)newValue);
 				return;
@@ -601,6 +775,15 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT:
+				setBase_InteractionNode_Element((Element)null);
+				return;
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				getOutgoingConversationLinks().clear();
+				return;
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				setIncomingConversationLinks((ConversationLink)null);
+				return;
 			case BPMNProfilePackage.PARTICIPANT__BASE_PROPERTY:
 				setBase_Property((Property)null);
 				return;
@@ -631,6 +814,12 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT:
+				return base_InteractionNode_Element != null;
+			case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS:
+				return outgoingConversationLinks != null && !outgoingConversationLinks.isEmpty();
+			case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS:
+				return incomingConversationLinks != null;
 			case BPMNProfilePackage.PARTICIPANT__BASE_PROPERTY:
 				return base_Property != null;
 			case BPMNProfilePackage.PARTICIPANT__PROCESS_REF:
@@ -653,6 +842,42 @@
 	 * @generated
 	 */
 	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (derivedFeatureID) {
+				case BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == InteractionNode.class) {
+			switch (baseFeatureID) {
+				case BPMNProfilePackage.INTERACTION_NODE__BASE_INTERACTION_NODE_ELEMENT: return BPMNProfilePackage.PARTICIPANT__BASE_INTERACTION_NODE_ELEMENT;
+				case BPMNProfilePackage.INTERACTION_NODE__OUTGOING_CONVERSATION_LINKS: return BPMNProfilePackage.PARTICIPANT__OUTGOING_CONVERSATION_LINKS;
+				case BPMNProfilePackage.INTERACTION_NODE__INCOMING_CONVERSATION_LINKS: return BPMNProfilePackage.PARTICIPANT__INCOMING_CONVERSATION_LINKS;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
 	@SuppressWarnings("unchecked")
 	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
 		switch (operationID) {
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ResourceAssignmentExpressionImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ResourceAssignmentExpressionImpl.java
index 9bdd9fe..4fe2795 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ResourceAssignmentExpressionImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/ResourceAssignmentExpressionImpl.java
@@ -19,6 +19,7 @@
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
 import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceAssignmentExpression;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
+import org.eclipse.uml2.uml.OpaqueExpression;
 
 /**
  * <!-- begin-user-doc -->
@@ -29,6 +30,7 @@
  * </p>
  * <ul>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ResourceAssignmentExpressionImpl#getExpression <em>Expression</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.ResourceAssignmentExpressionImpl#getBase_OpaqueExpression <em>Base Opaque Expression</em>}</li>
  * </ul>
  *
  * @generated
@@ -106,6 +108,56 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@Override
+	public OpaqueExpression getBase_OpaqueExpression() {
+		if (base_OpaqueExpression != null && base_OpaqueExpression.eIsProxy()) {
+			InternalEObject oldBase_OpaqueExpression = (InternalEObject)base_OpaqueExpression;
+			base_OpaqueExpression = (OpaqueExpression)eResolveProxy(oldBase_OpaqueExpression);
+			if (base_OpaqueExpression != oldBase_OpaqueExpression) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, BPMNProfilePackage.RESOURCE_ASSIGNMENT_EXPRESSION__BASE_OPAQUE_EXPRESSION, oldBase_OpaqueExpression, base_OpaqueExpression));
+			}
+		}
+		return base_OpaqueExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public OpaqueExpression basicGetBase_OpaqueExpression() {
+		return base_OpaqueExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_OpaqueExpression(OpaqueExpression newBase_OpaqueExpression) {
+		OpaqueExpression oldBase_OpaqueExpression = base_OpaqueExpression;
+		base_OpaqueExpression = newBase_OpaqueExpression;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, BPMNProfilePackage.RESOURCE_ASSIGNMENT_EXPRESSION__BASE_OPAQUE_EXPRESSION, oldBase_OpaqueExpression, base_OpaqueExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetBase_OpaqueExpression() {
+		return base_OpaqueExpression != null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean ResourceAssignmentExpressionexpression(DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
@@ -181,6 +233,8 @@
 		switch (featureID) {
 			case BPMNProfilePackage.RESOURCE_ASSIGNMENT_EXPRESSION__EXPRESSION:
 				return expression != null;
+			case BPMNProfilePackage.RESOURCE_ASSIGNMENT_EXPRESSION__BASE_OPAQUE_EXPRESSION:
+				return isSetBase_OpaqueExpression();
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/SequenceFlowImpl.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/SequenceFlowImpl.java
index 2eace80..92f881c 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/SequenceFlowImpl.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/impl/SequenceFlowImpl.java
@@ -17,6 +17,7 @@
 import org.eclipse.emf.ecore.util.EObjectValidator;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNExpression;
 import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
+import org.eclipse.papyrus.bpmn.BPMNProfile.FlowNode;
 import org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow;
 import org.eclipse.papyrus.bpmn.BPMNProfile.util.BPMNProfileValidator;
 import org.eclipse.uml2.uml.ControlFlow;
@@ -32,6 +33,8 @@
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.SequenceFlowImpl#getBase_ControlFlow <em>Base Control Flow</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.SequenceFlowImpl#isImmediate <em>Is Immediate</em>}</li>
  *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.SequenceFlowImpl#getConditionExpression <em>Condition Expression</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.SequenceFlowImpl#getSourceRef <em>Source Ref</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.bpmn.BPMNProfile.impl.SequenceFlowImpl#getTargetRef <em>Target Ref</em>}</li>
  * </ul>
  *
  * @generated
@@ -198,6 +201,72 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public FlowNode getSourceRef() {
+		FlowNode sourceRef = basicGetSourceRef();
+		return sourceRef != null && sourceRef.eIsProxy() ? (FlowNode)eResolveProxy((InternalEObject)sourceRef) : sourceRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlowNode basicGetSourceRef() {
+		// TODO: implement this method to return the 'Source Ref' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceRef(FlowNode newSourceRef) {
+		// TODO: implement this method to set the 'Source Ref' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlowNode getTargetRef() {
+		FlowNode targetRef = basicGetTargetRef();
+		return targetRef != null && targetRef.eIsProxy() ? (FlowNode)eResolveProxy((InternalEObject)targetRef) : targetRef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlowNode basicGetTargetRef() {
+		// TODO: implement this method to return the 'Target Ref' reference
+		// -> do not perform proxy resolution
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTargetRef(FlowNode newTargetRef) {
+		// TODO: implement this method to set the 'Target Ref' reference
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean SequenceFlowconditionExpression(DiagnosticChain diagnostics, Map<Object, Object> context) {
 		// TODO: implement this method
 		// -> specify the condition that violates the invariant
@@ -284,6 +353,12 @@
 			case BPMNProfilePackage.SEQUENCE_FLOW__CONDITION_EXPRESSION:
 				if (resolve) return getConditionExpression();
 				return basicGetConditionExpression();
+			case BPMNProfilePackage.SEQUENCE_FLOW__SOURCE_REF:
+				if (resolve) return getSourceRef();
+				return basicGetSourceRef();
+			case BPMNProfilePackage.SEQUENCE_FLOW__TARGET_REF:
+				if (resolve) return getTargetRef();
+				return basicGetTargetRef();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -305,6 +380,12 @@
 			case BPMNProfilePackage.SEQUENCE_FLOW__CONDITION_EXPRESSION:
 				setConditionExpression((BPMNExpression)newValue);
 				return;
+			case BPMNProfilePackage.SEQUENCE_FLOW__SOURCE_REF:
+				setSourceRef((FlowNode)newValue);
+				return;
+			case BPMNProfilePackage.SEQUENCE_FLOW__TARGET_REF:
+				setTargetRef((FlowNode)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -326,6 +407,12 @@
 			case BPMNProfilePackage.SEQUENCE_FLOW__CONDITION_EXPRESSION:
 				setConditionExpression((BPMNExpression)null);
 				return;
+			case BPMNProfilePackage.SEQUENCE_FLOW__SOURCE_REF:
+				setSourceRef((FlowNode)null);
+				return;
+			case BPMNProfilePackage.SEQUENCE_FLOW__TARGET_REF:
+				setTargetRef((FlowNode)null);
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -344,6 +431,10 @@
 				return isImmediate != IS_IMMEDIATE_EDEFAULT;
 			case BPMNProfilePackage.SEQUENCE_FLOW__CONDITION_EXPRESSION:
 				return conditionExpression != null;
+			case BPMNProfilePackage.SEQUENCE_FLOW__SOURCE_REF:
+				return basicGetSourceRef() != null;
+			case BPMNProfilePackage.SEQUENCE_FLOW__TARGET_REF:
+				return basicGetTargetRef() != null;
 		}
 		return super.eIsSet(featureID);
 	}
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileSwitch.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileSwitch.java
index 4869c4b..d571606 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileSwitch.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileSwitch.java
@@ -5,6 +5,136 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.bpmn.BPMNProfile.AdHocSubProcess;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Assignment;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Auditing;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNActivity;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNArtifact;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNCollaboration;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNExpression;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNExtension;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNInterface;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNMessage;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNOperation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProcess;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProfilePackage;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNProperty;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNRelationship;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BPMNSignal;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BaseElement;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BoundaryEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.BusinessRuleTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CallActivity;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CallConversation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CallableElement;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CancelEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CatchEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Category;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CategoryValue;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CompensateEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ComplexBehaviorDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ComplexGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConditionalEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Conversation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationLink;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ConversationNode;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationKey;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationProperty;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationPropertyBinding;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationPropertyRetrievalExpression;
+import org.eclipse.papyrus.bpmn.BPMNProfile.CorrelationSubscription;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataInput;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataInputAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataObject;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataObjectReference;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataOutput;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataOutputAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataState;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataStore;
+import org.eclipse.papyrus.bpmn.BPMNProfile.DataStoreReference;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Definitions;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Documentation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.EndEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ErrorEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Escalation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.EscalationEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.EventBasedGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.EventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ExclusiveGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ExtensionAttributeDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ExtensionAttributeValue;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ExtensionDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.FlowElement;
+import org.eclipse.papyrus.bpmn.BPMNProfile.FlowElementsContainer;
+import org.eclipse.papyrus.bpmn.BPMNProfile.FlowNode;
+import org.eclipse.papyrus.bpmn.BPMNProfile.FormalExpression;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Gateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalBusinessRuleTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalConversation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalManualTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalScriptTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.GlobalUserTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Group;
+import org.eclipse.papyrus.bpmn.BPMNProfile.HumanPerformer;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ImplicitThrowEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Import;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InclusiveGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InputOutputBinding;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InputOutputSpecification;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InputSet;
+import org.eclipse.papyrus.bpmn.BPMNProfile.InteractionNode;
+import org.eclipse.papyrus.bpmn.BPMNProfile.IntermediateCatchEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.IntermediateThrowEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ItemAwareElement;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ItemDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Lane;
+import org.eclipse.papyrus.bpmn.BPMNProfile.LaneSet;
+import org.eclipse.papyrus.bpmn.BPMNProfile.LinkEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.LoopCharacteristics;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ManualTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.MessageEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.MessageFlow;
+import org.eclipse.papyrus.bpmn.BPMNProfile.MessageFlowAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Monitoring;
+import org.eclipse.papyrus.bpmn.BPMNProfile.MultiInstanceLoopCharacteristics;
+import org.eclipse.papyrus.bpmn.BPMNProfile.NonExclusiveGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.OutputSet;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ParallelGateway;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Participant;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ParticipantAssociation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ParticipantMultiplicity;
+import org.eclipse.papyrus.bpmn.BPMNProfile.PartnerEntity;
+import org.eclipse.papyrus.bpmn.BPMNProfile.PartnerRole;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Performer;
+import org.eclipse.papyrus.bpmn.BPMNProfile.PotentialOwner;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ReceiveTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Rendering;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Resource;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceAssignmentExpression;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceParameter;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceParameterBinding;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ResourceRole;
+import org.eclipse.papyrus.bpmn.BPMNProfile.RootElement;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ScriptTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SendTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SequenceFlow;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ServiceTask;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SignalEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.StandardLoopCharacteristics;
+import org.eclipse.papyrus.bpmn.BPMNProfile.StartEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SubConversation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.SubProcess;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Task;
+import org.eclipse.papyrus.bpmn.BPMNProfile.TerminateEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.TextAnnotation;
+import org.eclipse.papyrus.bpmn.BPMNProfile.ThrowEvent;
+import org.eclipse.papyrus.bpmn.BPMNProfile.TimerEventDefinition;
+import org.eclipse.papyrus.bpmn.BPMNProfile.Transaction;
+import org.eclipse.papyrus.bpmn.BPMNProfile.UserTask;
 import org.eclipse.papyrus.bpmn.BPMNProfile.*;
 
 /**
@@ -423,6 +553,7 @@
 				Participant participant = (Participant)theEObject;
 				T result = caseParticipant(participant);
 				if (result == null) result = caseBaseElement(participant);
+				if (result == null) result = caseInteractionNode(participant);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
@@ -479,6 +610,7 @@
 			case BPMNProfilePackage.CONVERSATION_NODE: {
 				ConversationNode conversationNode = (ConversationNode)theEObject;
 				T result = caseConversationNode(conversationNode);
+				if (result == null) result = caseBaseElement(conversationNode);
 				if (result == null) result = caseInteractionNode(conversationNode);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -622,6 +754,7 @@
 				BPMNActivity bpmnActivity = (BPMNActivity)theEObject;
 				T result = caseBPMNActivity(bpmnActivity);
 				if (result == null) result = caseFlowNode(bpmnActivity);
+				if (result == null) result = caseInteractionNode(bpmnActivity);
 				if (result == null) result = caseFlowElement(bpmnActivity);
 				if (result == null) result = caseBaseElement(bpmnActivity);
 				if (result == null) result = defaultCase(theEObject);
@@ -633,6 +766,7 @@
 				if (result == null) result = caseCatchEvent(boundaryEvent);
 				if (result == null) result = caseBPMNEvent(boundaryEvent);
 				if (result == null) result = caseFlowNode(boundaryEvent);
+				if (result == null) result = caseInteractionNode(boundaryEvent);
 				if (result == null) result = caseFlowElement(boundaryEvent);
 				if (result == null) result = caseBaseElement(boundaryEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -643,6 +777,7 @@
 				T result = caseCatchEvent(catchEvent);
 				if (result == null) result = caseBPMNEvent(catchEvent);
 				if (result == null) result = caseFlowNode(catchEvent);
+				if (result == null) result = caseInteractionNode(catchEvent);
 				if (result == null) result = caseFlowElement(catchEvent);
 				if (result == null) result = caseBaseElement(catchEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -652,6 +787,7 @@
 				BPMNEvent bpmnEvent = (BPMNEvent)theEObject;
 				T result = caseBPMNEvent(bpmnEvent);
 				if (result == null) result = caseFlowNode(bpmnEvent);
+				if (result == null) result = caseInteractionNode(bpmnEvent);
 				if (result == null) result = caseFlowElement(bpmnEvent);
 				if (result == null) result = caseBaseElement(bpmnEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -745,6 +881,7 @@
 				if (result == null) result = caseThrowEvent(endEvent);
 				if (result == null) result = caseBPMNEvent(endEvent);
 				if (result == null) result = caseFlowNode(endEvent);
+				if (result == null) result = caseInteractionNode(endEvent);
 				if (result == null) result = caseFlowElement(endEvent);
 				if (result == null) result = caseBaseElement(endEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -755,6 +892,7 @@
 				T result = caseThrowEvent(throwEvent);
 				if (result == null) result = caseBPMNEvent(throwEvent);
 				if (result == null) result = caseFlowNode(throwEvent);
+				if (result == null) result = caseInteractionNode(throwEvent);
 				if (result == null) result = caseFlowElement(throwEvent);
 				if (result == null) result = caseBaseElement(throwEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -775,6 +913,7 @@
 				if (result == null) result = caseCatchEvent(startEvent);
 				if (result == null) result = caseBPMNEvent(startEvent);
 				if (result == null) result = caseFlowNode(startEvent);
+				if (result == null) result = caseInteractionNode(startEvent);
 				if (result == null) result = caseFlowElement(startEvent);
 				if (result == null) result = caseBaseElement(startEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -813,6 +952,7 @@
 				if (result == null) result = caseCatchEvent(intermediateCatchEvent);
 				if (result == null) result = caseBPMNEvent(intermediateCatchEvent);
 				if (result == null) result = caseFlowNode(intermediateCatchEvent);
+				if (result == null) result = caseInteractionNode(intermediateCatchEvent);
 				if (result == null) result = caseFlowElement(intermediateCatchEvent);
 				if (result == null) result = caseBaseElement(intermediateCatchEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -824,6 +964,7 @@
 				if (result == null) result = caseThrowEvent(intermediateThrowEvent);
 				if (result == null) result = caseBPMNEvent(intermediateThrowEvent);
 				if (result == null) result = caseFlowNode(intermediateThrowEvent);
+				if (result == null) result = caseInteractionNode(intermediateThrowEvent);
 				if (result == null) result = caseFlowElement(intermediateThrowEvent);
 				if (result == null) result = caseBaseElement(intermediateThrowEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -844,6 +985,7 @@
 				if (result == null) result = caseThrowEvent(implicitThrowEvent);
 				if (result == null) result = caseBPMNEvent(implicitThrowEvent);
 				if (result == null) result = caseFlowNode(implicitThrowEvent);
+				if (result == null) result = caseInteractionNode(implicitThrowEvent);
 				if (result == null) result = caseFlowElement(implicitThrowEvent);
 				if (result == null) result = caseBaseElement(implicitThrowEvent);
 				if (result == null) result = defaultCase(theEObject);
@@ -923,6 +1065,7 @@
 				if (result == null) result = caseTask(userTask);
 				if (result == null) result = caseBPMNActivity(userTask);
 				if (result == null) result = caseFlowNode(userTask);
+				if (result == null) result = caseInteractionNode(userTask);
 				if (result == null) result = caseFlowElement(userTask);
 				if (result == null) result = caseBaseElement(userTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -933,6 +1076,7 @@
 				T result = caseTask(task);
 				if (result == null) result = caseBPMNActivity(task);
 				if (result == null) result = caseFlowNode(task);
+				if (result == null) result = caseInteractionNode(task);
 				if (result == null) result = caseFlowElement(task);
 				if (result == null) result = caseBaseElement(task);
 				if (result == null) result = defaultCase(theEObject);
@@ -988,6 +1132,7 @@
 				if (result == null) result = caseTask(manualTask);
 				if (result == null) result = caseBPMNActivity(manualTask);
 				if (result == null) result = caseFlowNode(manualTask);
+				if (result == null) result = caseInteractionNode(manualTask);
 				if (result == null) result = caseFlowElement(manualTask);
 				if (result == null) result = caseBaseElement(manualTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -1007,6 +1152,7 @@
 				SubConversation subConversation = (SubConversation)theEObject;
 				T result = caseSubConversation(subConversation);
 				if (result == null) result = caseConversationNode(subConversation);
+				if (result == null) result = caseBaseElement(subConversation);
 				if (result == null) result = caseInteractionNode(subConversation);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -1024,6 +1170,7 @@
 				CallConversation callConversation = (CallConversation)theEObject;
 				T result = caseCallConversation(callConversation);
 				if (result == null) result = caseConversationNode(callConversation);
+				if (result == null) result = caseBaseElement(callConversation);
 				if (result == null) result = caseInteractionNode(callConversation);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -1032,6 +1179,7 @@
 				Conversation conversation = (Conversation)theEObject;
 				T result = caseConversation(conversation);
 				if (result == null) result = caseConversationNode(conversation);
+				if (result == null) result = caseBaseElement(conversation);
 				if (result == null) result = caseInteractionNode(conversation);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
@@ -1042,6 +1190,7 @@
 				if (result == null) result = caseBPMNActivity(subProcess);
 				if (result == null) result = caseFlowElementsContainer(subProcess);
 				if (result == null) result = caseFlowNode(subProcess);
+				if (result == null) result = caseInteractionNode(subProcess);
 				if (result == null) result = caseFlowElement(subProcess);
 				if (result == null) result = caseBaseElement(subProcess);
 				if (result == null) result = defaultCase(theEObject);
@@ -1052,6 +1201,7 @@
 				T result = caseCallActivity(callActivity);
 				if (result == null) result = caseBPMNActivity(callActivity);
 				if (result == null) result = caseFlowNode(callActivity);
+				if (result == null) result = caseInteractionNode(callActivity);
 				if (result == null) result = caseFlowElement(callActivity);
 				if (result == null) result = caseBaseElement(callActivity);
 				if (result == null) result = defaultCase(theEObject);
@@ -1063,6 +1213,7 @@
 				if (result == null) result = caseTask(businessRuleTask);
 				if (result == null) result = caseBPMNActivity(businessRuleTask);
 				if (result == null) result = caseFlowNode(businessRuleTask);
+				if (result == null) result = caseInteractionNode(businessRuleTask);
 				if (result == null) result = caseFlowElement(businessRuleTask);
 				if (result == null) result = caseBaseElement(businessRuleTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -1082,6 +1233,7 @@
 				if (result == null) result = caseBPMNActivity(adHocSubProcess);
 				if (result == null) result = caseFlowElementsContainer(adHocSubProcess);
 				if (result == null) result = caseFlowNode(adHocSubProcess);
+				if (result == null) result = caseInteractionNode(adHocSubProcess);
 				if (result == null) result = caseFlowElement(adHocSubProcess);
 				if (result == null) result = caseBaseElement(adHocSubProcess);
 				if (result == null) result = defaultCase(theEObject);
@@ -1093,6 +1245,7 @@
 				if (result == null) result = caseTask(scriptTask);
 				if (result == null) result = caseBPMNActivity(scriptTask);
 				if (result == null) result = caseFlowNode(scriptTask);
+				if (result == null) result = caseInteractionNode(scriptTask);
 				if (result == null) result = caseFlowElement(scriptTask);
 				if (result == null) result = caseBaseElement(scriptTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -1104,6 +1257,7 @@
 				if (result == null) result = caseTask(sendTask);
 				if (result == null) result = caseBPMNActivity(sendTask);
 				if (result == null) result = caseFlowNode(sendTask);
+				if (result == null) result = caseInteractionNode(sendTask);
 				if (result == null) result = caseFlowElement(sendTask);
 				if (result == null) result = caseBaseElement(sendTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -1116,6 +1270,7 @@
 				if (result == null) result = caseBPMNActivity(transaction);
 				if (result == null) result = caseFlowElementsContainer(transaction);
 				if (result == null) result = caseFlowNode(transaction);
+				if (result == null) result = caseInteractionNode(transaction);
 				if (result == null) result = caseFlowElement(transaction);
 				if (result == null) result = caseBaseElement(transaction);
 				if (result == null) result = defaultCase(theEObject);
@@ -1135,6 +1290,7 @@
 				if (result == null) result = caseTask(receiveTask);
 				if (result == null) result = caseBPMNActivity(receiveTask);
 				if (result == null) result = caseFlowNode(receiveTask);
+				if (result == null) result = caseInteractionNode(receiveTask);
 				if (result == null) result = caseFlowElement(receiveTask);
 				if (result == null) result = caseBaseElement(receiveTask);
 				if (result == null) result = defaultCase(theEObject);
@@ -1146,6 +1302,7 @@
 				if (result == null) result = caseTask(serviceTask);
 				if (result == null) result = caseBPMNActivity(serviceTask);
 				if (result == null) result = caseFlowNode(serviceTask);
+				if (result == null) result = caseInteractionNode(serviceTask);
 				if (result == null) result = caseFlowElement(serviceTask);
 				if (result == null) result = caseBaseElement(serviceTask);
 				if (result == null) result = defaultCase(theEObject);
diff --git a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileValidator.java b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileValidator.java
index 8d4ef26..70412c7 100755
--- a/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileValidator.java
+++ b/org.eclipse.papyrus.bpmn/src/org/eclipse/papyrus/bpmn/BPMNProfile/util/BPMNProfileValidator.java
@@ -2,12 +2,22 @@
  */
 package org.eclipse.papyrus.bpmn.BPMNProfile.util;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
+import org.eclipse.emf.common.util.Diagnostic;
 import org.eclipse.emf.common.util.DiagnosticChain;
 import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.util.ExtendedMetaData;
+import org.eclipse.emf.ecore.util.FeatureMapUtil;
 import org.eclipse.papyrus.bpmn.BPMNProfile.*;
 
 /**
@@ -4904,4 +4914,177 @@
 		return super.getResourceLocator();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private String getRedefinitionDetail(EClass eClass, String featureName, String key) {
+		List<EClass> eClasses = new ArrayList<EClass>();
+		eClasses.add(eClass);
+		eClasses.addAll(eClass.getEAllSuperTypes());
+		String redefinitionDetail = null;
+		for (Iterator<EClass> eClassesIterator = eClasses.iterator(); redefinitionDetail == null && eClassesIterator.hasNext(); ) {
+			EAnnotation eAnnotation = eClassesIterator.next().getEAnnotation("duplicates");
+			if (eAnnotation != null) {
+				EAnnotation nestedEAnnotation = eAnnotation.getEAnnotation(featureName);
+				if (nestedEAnnotation != null) {
+					redefinitionDetail = nestedEAnnotation.getDetails().get(key);
+				}
+			}
+		}
+		return redefinitionDetail;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected int getLowerBound(EObject eObject, EStructuralFeature eStructuralFeature) {
+		String redefinitionDetail = getRedefinitionDetail(eObject.eClass(), eStructuralFeature.getName(), "lowerBound");
+		if (redefinitionDetail != null && redefinitionDetail.length() > 0) {
+			try {
+				return Integer.parseInt(redefinitionDetail);
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+		}
+		return eStructuralFeature.getLowerBound();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected int getUpperBound(EObject eObject, EStructuralFeature eStructuralFeature) {
+		String redefinitionDetail = getRedefinitionDetail(eObject.eClass(), eStructuralFeature.getName(), "upperBound");
+		if (redefinitionDetail != null && redefinitionDetail.length() > 0) {
+			try {
+				return Integer.parseInt(redefinitionDetail);
+			}
+			catch (Exception e) {
+				// do nothing
+			}
+		}
+		return eStructuralFeature.getUpperBound();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean isEcoreString(String key) {
+		return super.isEcoreString(key)
+			|| "_UI_FeatureHasTooFewValues_diagnostic".equals(key)
+			|| "_UI_FeatureHasTooManyValues_diagnostic".equals(key)
+			|| "_UI_RequiredFeatureMustBeSet_diagnostic".equals(key);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean validate_MultiplicityConforms(EObject eObject, EStructuralFeature eStructuralFeature, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		boolean result = true;
+		if (eStructuralFeature.isMany()) {
+			if (FeatureMapUtil.isFeatureMap(eStructuralFeature) && ExtendedMetaData.INSTANCE.isDocumentRoot(eObject.eClass())) {
+				result = super.validate_MultiplicityConforms(eObject, eStructuralFeature, diagnostics, context);
+			}
+			else {
+				int lowerBound = getLowerBound(eObject, eStructuralFeature);
+				if (lowerBound > 0) {
+					int size = ((List<?>) eObject.eGet(eStructuralFeature)).size();
+					if (size < lowerBound) {
+						result = false;
+						if (diagnostics != null) {
+							diagnostics.add
+								(createDiagnostic
+									(Diagnostic.ERROR,
+									EObjectValidator.DIAGNOSTIC_SOURCE,
+									EObjectValidator.EOBJECT__EVERY_MULTIPCITY_CONFORMS,
+									"_UI_FeatureHasTooFewValues_diagnostic",
+									new Object [] {
+										getFeatureLabel(eStructuralFeature, context),
+										getObjectLabel(eObject, context),
+										size,
+										lowerBound
+									},
+									new Object [] { eObject, eStructuralFeature },
+									context));
+						}
+					}
+					int upperBound = getUpperBound(eObject, eStructuralFeature);
+					if (upperBound > 0 && size > upperBound) {
+						result = false;
+						if (diagnostics != null) {
+							diagnostics.add
+								(createDiagnostic
+									(Diagnostic.ERROR,
+									EObjectValidator.DIAGNOSTIC_SOURCE,
+									EObjectValidator.EOBJECT__EVERY_MULTIPCITY_CONFORMS,
+									"_UI_FeatureHasTooManyValues_diagnostic",
+									new Object [] {
+										getFeatureLabel(eStructuralFeature, context),
+										getObjectLabel(eObject, context),
+										size,
+										upperBound
+									},
+									new Object [] { eObject, eStructuralFeature },
+									context));
+						}
+					}
+				}
+				else {
+					int upperBound = getUpperBound(eObject, eStructuralFeature);
+					if (upperBound > 0) {
+						int size = ((List<?>) eObject.eGet(eStructuralFeature)).size();
+						if (size > upperBound) {
+							result = false;
+							if (diagnostics != null) {
+								diagnostics.add
+									(createDiagnostic
+										(Diagnostic.ERROR,
+										EObjectValidator.DIAGNOSTIC_SOURCE,
+										EObjectValidator.EOBJECT__EVERY_MULTIPCITY_CONFORMS,
+										"_UI_FeatureHasTooManyValues_diagnostic",
+										new Object [] {
+											getFeatureLabel(eStructuralFeature, context),
+											getObjectLabel(eObject, context),
+											size,
+											upperBound
+										},
+										new Object [] { eObject, eStructuralFeature },
+										context));
+							}
+						}
+					}
+				}
+			}
+		}
+		else if (getLowerBound(eObject, eStructuralFeature) >= 1) {
+			if (eStructuralFeature.isUnsettable() ? !eObject.eIsSet(eStructuralFeature) : eObject.eGet(eStructuralFeature, false) == null) {
+				result = false;
+				if (diagnostics != null) {
+					diagnostics.add
+						(createDiagnostic
+							(Diagnostic.ERROR,
+							EObjectValidator.DIAGNOSTIC_SOURCE,
+							EObjectValidator.EOBJECT__EVERY_MULTIPCITY_CONFORMS,
+							"_UI_RequiredFeatureMustBeSet_diagnostic",
+							new Object [] { getFeatureLabel(eStructuralFeature, context), getObjectLabel(eObject, context) },
+							new Object [] { eObject, eStructuralFeature },
+							context));
+				}
+			}
+		}
+		return result;
+	}
+
 } //BPMNProfileValidator