diff --git a/plugins/org.etsi.mts.tdl.model/model/tdl.ecore b/plugins/org.etsi.mts.tdl.model/model/tdl.ecore
index 7a9763eb4849982510f66e3e50f3b0a9e5a7ff0e..652feee43f142fb8ed2cb616427ff633e4ab24f1 100644
--- a/plugins/org.etsi.mts.tdl.model/model/tdl.ecore
+++ b/plugins/org.etsi.mts.tdl.model/model/tdl.ecore
@@ -7,6 +7,16 @@
     <details key="validationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
   </eAnnotations>
   <eClassifiers xsi:type="ecore:EClass" name="Element" abstract="true">
+    <eOperations name="container" eType="#//Element">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.oclContainer().oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;self.oclContainer().oclAsType(Element)&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;endif"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="getParentTestDescription" eType="#//TestDescription">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#x9;&#xA;&#x9;&#x9;&#x9;if (not self.container().oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsKindOf(TestDescription)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(TestDescription)&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().getParentTestDescription()&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;endif"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="comment" upperBound="-1"
         eType="#//Comment" containment="true" eOpposite="#//Comment/commentedElement"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="annotation" upperBound="-1"
@@ -24,9 +34,19 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedElement" lowerBound="1"
         eType="#//Element" eOpposite="#//Element/annotation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="AnnotationType" eSuperTypes="#//PackageableElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AnnotationType" eSuperTypes="#//PackageableElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
+        containment="true"/>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="PackageableElement" abstract="true"
-      eSuperTypes="#//NamedElement"/>
+      eSuperTypes="#//NamedElement">
+    <eOperations name="conformsTo" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (self.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;self.oclAsType(AnnotationType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(AnnotationType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(GateType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(StructuredDataType).extension.extending(e)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eParameters name="e" eType="#//PackageableElement"/>
+    </eOperations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="#//Element">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="qualifiedName" lowerBound="1"
         eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString" changeable="false"
@@ -86,6 +106,16 @@
   <eClassifiers xsi:type="ecore:EClass" name="SimpleDataType" eSuperTypes="#//DataType"/>
   <eClassifiers xsi:type="ecore:EClass" name="SimpleDataInstance" eSuperTypes="#//DataInstance"/>
   <eClassifiers xsi:type="ecore:EClass" name="StructuredDataType" eSuperTypes="#//DataType">
+    <eOperations name="allMembers" upperBound="-1" eType="#//Member">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.extension.oclIsUndefined()) then&#xA;                self.extension.extending.oclAsType(StructuredDataType).allMembers()->union(self.member)->asOrderedSet()&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;self.member&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
+        containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="member" upperBound="-1"
         eType="#//Member" containment="true"/>
   </eClassifiers>
@@ -106,6 +136,11 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="StaticDataUse" abstract="true" eSuperTypes="#//DataUse"/>
   <eClassifiers xsi:type="ecore:EClass" name="DataUse" abstract="true" eSuperTypes="#//Element">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="null"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="argument" upperBound="-1"
         eType="#//ParameterBinding" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="reduction" upperBound="-1"
@@ -132,6 +167,11 @@
         eType="#//DataType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FormalParameterUse" eSuperTypes="#//DynamicDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="self.parameter.dataType"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameter" lowerBound="1"
         eType="#//FormalParameter"/>
   </eClassifiers>
@@ -141,10 +181,20 @@
         eType="#//DataType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="FunctionCall" eSuperTypes="#//DynamicDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="self.function.returnType"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="function" lowerBound="1"
         eType="#//Function"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VariableUse" eSuperTypes="#//DynamicDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="self.variable.dataType"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" lowerBound="1"
         eType="#//ComponentInstance"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
@@ -155,21 +205,57 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="role" lowerBound="1" eType="#//ComponentInstanceRole"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ComponentType" eSuperTypes="#//PackageableElement">
+    <eOperations name="allGates" upperBound="-1" eType="#//GateInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.extension.oclIsUndefined()) then&#xA;                self.extension.extending.oclAsType(ComponentType).allGates()->union(self.gateInstance)->asOrderedSet()&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;self.gateInstance&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="allTimers" upperBound="-1" eType="#//Timer">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.extension.oclIsUndefined()) then&#xA;                self.extension.extending.oclAsType(ComponentType).allTimers()->union(self.timer)->asOrderedSet()&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;self.timer&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="allVariables" upperBound="-1" eType="#//Variable">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.extension.oclIsUndefined()) then&#xA;                self.extension.extending.oclAsType(ComponentType).allVariables()->union(self.variable)->asOrderedSet()&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;self.variable&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="gateInstance" lowerBound="1"
         upperBound="-1" eType="#//GateInstance" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="timer" ordered="false"
-        upperBound="-1" eType="#//Timer" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false"
-        upperBound="-1" eType="#//Variable" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="timer" upperBound="-1"
+        eType="#//Timer" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="variable" upperBound="-1"
+        eType="#//Variable" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
+        containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GateInstance" eSuperTypes="#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" lowerBound="1" eType="#//GateType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="GateType" eSuperTypes="#//PackageableElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" ordered="false"
-        lowerBound="1" upperBound="-1" eType="#//DataType"/>
+    <eOperations name="allDataTypes" upperBound="-1" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;if (not self.extension.oclIsUndefined()) then&#xA;                self.extension.extending.oclAsType(GateType).allDataTypes()->union(self.dataType)->asOrderedSet()&#xA;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;self.dataType&#xA;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" lowerBound="1"
+        upperBound="-1" eType="#//DataType"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//GateTypeKind"
         defaultValueLiteral="Message"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extension" eType="#//Extension"
+        containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Timer" eSuperTypes="#//NamedElement"/>
   <eClassifiers xsi:type="ecore:EEnum" name="ComponentInstanceRole">
@@ -177,12 +263,23 @@
     <eLiterals name="Tester" value="1"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="OmitValue" eSuperTypes="#//SpecialValueUse"/>
-  <eClassifiers xsi:type="ecore:EClass" name="SpecialValueUse" abstract="true" eSuperTypes="#//StaticDataUse"/>
+  <eClassifiers xsi:type="ecore:EClass" name="SpecialValueUse" abstract="true" eSuperTypes="#//StaticDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(MemberAssignment)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(MemberAssignment).member.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(ParameterBinding)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(ParameterBinding).parameter.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(Interaction) and &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclIsTypeOf(AnyValue)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(AnyValue).dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+    </eOperations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="AnyValue" eSuperTypes="#//SpecialValueUse">
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="AnyValueOrOmit" eSuperTypes="#//SpecialValueUse"/>
   <eClassifiers xsi:type="ecore:EClass" name="DataInstanceUse" eSuperTypes="#//StaticDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (not self.dataInstance.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataInstance.dataType&#xA;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (not self.dataType.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(MemberAssignment)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(MemberAssignment).member.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.container().oclIsTypeOf(ParameterBinding)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.container().oclAsType(ParameterBinding).parameter.dataType&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataInstance" eType="#//DataInstance"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="unassignedMember" eType="#//UnassignedMemberTreatment"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
@@ -195,12 +292,25 @@
         eType="#//ComponentInstance"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="AtomicBehaviour" abstract="true" eSuperTypes="#//Behaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet{}&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="timeConstraint" ordered="false"
         upperBound="-1" eType="#//TimeConstraint" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" eType="#//TimeLabel"
         containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Behaviour" abstract="true" eSuperTypes="#//Element">
+    <eOperations name="isTesterInputEvent" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.oclIsKindOf(TimeOut) or &#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclIsKindOf(Quiescence) or&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(self.oclIsKindOf(Interaction) and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(Interaction).sourceGate.component.role = ComponentInstanceRole::SUT and&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.oclAsType(Interaction).target->exists(t | t.targetGate.component.role = ComponentInstanceRole::Tester)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;)&#xA;&#x9;&#x9;&#x9;&#x9;) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;true&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;false&#xA;&#x9;&#x9;&#x9;&#x9;endif"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="testObjective" ordered="false"
         upperBound="-1" eType="#//TestObjective"/>
   </eClassifiers>
@@ -229,6 +339,11 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="gate" lowerBound="1" eType="#//GateInstance"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TimeLabelUse" eSuperTypes="#//DynamicDataUse">
+    <eOperations name="resolveDataType" eType="#//DataType">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="Time.allInstances()->asOrderedSet()->first()"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="timeLabel" lowerBound="1"
         eType="#//TimeLabel"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" lowerBound="1" eType="#//TimeLabelUseKind"
@@ -261,6 +376,14 @@
         eType="#//Behaviour" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="#//Element">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="behaviour" lowerBound="1"
         upperBound="-1" eType="#//Behaviour" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="guard" upperBound="-1"
@@ -300,6 +423,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="block" lowerBound="1" eType="#//Block"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OptionalBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
   <eClassifiers xsi:type="ecore:EClass" name="UnboundedLoopBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
   <eClassifiers xsi:type="ecore:EClass" name="ConditionalBehaviour" eSuperTypes="#//MultipleCombinedBehaviour"/>
   <eClassifiers xsi:type="ecore:EClass" name="CompoundBehaviour" eSuperTypes="#//SingleCombinedBehaviour"/>
@@ -316,6 +440,14 @@
     </eStructuralFeatures>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="VerdictAssignment" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="verdict" lowerBound="1"
         eType="#//DataUse" containment="true"/>
   </eClassifiers>
@@ -325,8 +457,26 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="condition" lowerBound="1"
         eType="#//DataUse" containment="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//AtomicBehaviour"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Break" eSuperTypes="#//AtomicBehaviour"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Stop" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Break" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
+  </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Assignment" eSuperTypes="#//ActionBehaviour">
     <eStructuralFeatures xsi:type="ecore:EReference" name="variable" lowerBound="1"
         eType="#//VariableUse" containment="true"/>
@@ -334,6 +484,14 @@
         eType="#//DataUse" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ActionBehaviour" abstract="true" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (not self.componentInstance.oclIsUndefined()) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;OrderedSet{self.componentInstance}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="componentInstance" eType="#//ComponentInstance"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="InlineAction" eSuperTypes="#//ActionBehaviour">
@@ -346,6 +504,14 @@
         eType="#//ParameterBinding" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TestDescriptionReference" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.getParentTestDescription().testConfiguration.componentInstance->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="testDescription" lowerBound="1"
         eType="#//TestDescription"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="componentInstanceBinding"
@@ -360,6 +526,14 @@
         eType="#//ComponentInstance"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Interaction" eSuperTypes="#//AtomicBehaviour">
+    <eOperations name="getParticipatingComponents" upperBound="-1" eType="#//ComponentInstance">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.target&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->collect(targetGate.component)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->including(sourceGate.component)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;->asOrderedSet()&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eAnnotations source="http://www.eclipse.org/OCL/Collection">
+        <details key="nullFree" value="false"/>
+      </eAnnotations>
+    </eOperations>
     <eStructuralFeatures xsi:type="ecore:EReference" name="sourceGate" lowerBound="1"
         eType="#//GateReference"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
@@ -443,4 +617,23 @@
       </eAnnotations>
     </eStructuralFeatures>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Extension" eSuperTypes="#//Element">
+    <eOperations name="transitiveExtending" eType="#//Extension">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(AnnotationType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(AnnotationType).extension&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(ComponentType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(AnnotationType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(GateType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;if (self.extending.oclIsKindOf(GateType)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;self.extending.oclAsType(StructuredDataType).extension&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;null&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+    </eOperations>
+    <eOperations name="extending" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBooleanObject">
+      <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
+        <details key="body" value="&#xA;&#x9;&#x9;&#x9;&#x9;if (self.extending = e) then&#xA;&#x9;&#x9;&#x9;&#x9;    true&#xA;&#x9;&#x9;&#x9;&#x9;else&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;if (self->closure(transitiveExtending())->includes(e)) then&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;true&#xA;&#x9;            &#x9;else&#xA;&#x9;            &#x9;&#x9;false&#xA;&#x9;            &#x9;endif &#xA;&#x9;&#x9;&#x9;&#x9;endif&#xA;&#x9;&#x9;&#x9;&#x9;"/>
+      </eAnnotations>
+      <eParameters name="e" eType="#//PackageableElement"/>
+    </eOperations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="extending" lowerBound="1"
+        eType="#//PackageableElement"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="LiteralValueUse" eSuperTypes="#//StaticDataUse">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="dataType" eType="#//DataType"/>
+  </eClassifiers>
 </ecore:EPackage>