From 4f816ee649624c98505bdc6dc85f4aef56e58e97 Mon Sep 17 00:00:00 2001
From: Simon <simon.eismann@uni-wuerzburg.de>
Date: Wed, 25 Apr 2018 18:24:24 +0200
Subject: [PATCH] added first version of empiricalBlackbox behavior

---
 ...kboxBehavior_EmpiricalBlackboxBehavior.gif | Bin 0 -> 223 bytes
 ..._responseTimeSample_ResponseTimeSample.gif | Bin 0 -> 223 bytes
 ...seTimeSample_responseTime_ResponseTime.gif | Bin 0 -> 223 bytes
 .../full/obj16/EmpiricalBlackboxBehavior.gif  | Bin 0 -> 129 bytes
 .../icons/full/obj16/ResponseTimeSample.gif   | Bin 0 -> 129 bytes
 .../model/applicationlevel.genmodel           |  12 +-
 .../model/repository.ecore                    |   3 +
 .../model/servicebehavior.ecore               |  14 +-
 .../plugin.properties                         |   9 +-
 .../repository/BasicComponent.java            |  18 ++
 .../repository/RepositoryPackage.java         |  30 ++-
 .../repository/impl/BasicComponentImpl.java   |  13 +
 .../impl/RepositoryPackageImpl.java           |  12 +
 .../provider/BasicComponentItemProvider.java  |   7 +
 .../servicebehavior/BlackBoxBehavior.java     |   4 +-
 .../EmpiricalBlackboxBehavior.java            |  41 +++
 .../servicebehavior/ResponseTime.java         |  33 ---
 .../servicebehavior/ResponseTimeSample.java   |  82 ++++++
 .../ServicebehaviorFactory.java               |  18 ++
 .../ServicebehaviorPackage.java               | 208 +++++++++++++--
 .../impl/EmpiricalBlackboxBehaviorImpl.java   |  58 +++++
 .../impl/ResponseTimeImpl.java                |  27 --
 .../impl/ResponseTimeSampleImpl.java          |  99 +++++++
 .../impl/ServicebehaviorFactoryImpl.java      |  24 ++
 .../impl/ServicebehaviorPackageImpl.java      |  91 ++++++-
 ...EmpiricalBlackboxBehaviorItemProvider.java | 141 ++++++++++
 .../ResponseTimeSampleItemProvider.java       | 183 +++++++++++++
 ...icebehaviorItemProviderAdapterFactory.java |  48 ++++
 .../util/ServicebehaviorAdapterFactory.java   |  36 +++
 .../util/ServicebehaviorSwitch.java           |  43 +++
 .../util/ServicebehaviorValidator.java        | 245 ++++++++++--------
 31 files changed, 1288 insertions(+), 211 deletions(-)
 create mode 100644 tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateBasicComponent_empiricalBlackboxBehavior_EmpiricalBlackboxBehavior.gif
 create mode 100644 tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateEmpiricalBlackboxBehavior_responseTimeSample_ResponseTimeSample.gif
 create mode 100644 tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateResponseTimeSample_responseTime_ResponseTime.gif
 create mode 100644 tools.descartes.dml.mm.applicationlevel/icons/full/obj16/EmpiricalBlackboxBehavior.gif
 create mode 100644 tools.descartes.dml.mm.applicationlevel/icons/full/obj16/ResponseTimeSample.gif
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/EmpiricalBlackboxBehavior.java
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTimeSample.java
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/EmpiricalBlackboxBehaviorImpl.java
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeSampleImpl.java
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/EmpiricalBlackboxBehaviorItemProvider.java
 create mode 100644 tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ResponseTimeSampleItemProvider.java

diff --git a/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateBasicComponent_empiricalBlackboxBehavior_EmpiricalBlackboxBehavior.gif b/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateBasicComponent_empiricalBlackboxBehavior_EmpiricalBlackboxBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b446c03e5730c9b7def6b810e0b2f8368285641c
GIT binary patch
literal 223
zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6{P_L##+#%2@6TU$sq+8-`1$en|L@y3
zG&D3_yB2)xnB|%^I&E#crmF$b)=A3iy5yHONzJPin^_|K@9%pc`uq7j5dC?+`1jpr
zplJ}G_>+YZ#L@u~AUhdYV-ytnQX=it7-pV5JmtdHN&U@zlS({|Kb!Pi%buhurrs}=
zoar2>F?;z5c9A}<Ij2s#SuyCS-S>8}5D03R{UYJRqLb}R3lrSrZ?x3h&eb~oGCiLm
Pr=}^ju_;?sk--`OWdURJ

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateEmpiricalBlackboxBehavior_responseTimeSample_ResponseTimeSample.gif b/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateEmpiricalBlackboxBehavior_responseTimeSample_ResponseTimeSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..f9b72b5c8d2689433fb9432d9659a103d7ce2fc0
GIT binary patch
literal 223
zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z695`@b&YU?74GqO=KL7v6&yTnNf8QR+
z{qg(jjW<X4-=DwiQsu7cYCyDglJdGP`K3)#^D4z=mI(j*`yPn?em)OGf1WS?eYY8C
z8U!f*WMKrcbU*~iP6pN(1%<wpNINx#nP(4Axv+Ioe{<iY5>MmLCOy}(CuxeQ_e&*b
zItOaZUVegIq)%(ksgrJ23_5D}y<IE>f*NMONcgbmWINNs1ULB`Ej71uwNAfG&u7S~
OX-aKu%2rimum%9%wquq6

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateResponseTimeSample_responseTime_ResponseTime.gif b/tools.descartes.dml.mm.applicationlevel/icons/full/ctool16/CreateResponseTimeSample_responseTime_ResponseTime.gif
new file mode 100644
index 0000000000000000000000000000000000000000..58edd523d023cc14033d0adc9a5e00e73d769f1a
GIT binary patch
literal 223
zcmZ?wbhEHb6krfwIKsg2|NsB{_xIb|$1^Z6thv_Ib1b-cjb&t;&j0`M^W*LR-?wjQ
zXgF}-z??aAfQ(`_pIy_{fN1L^<#k>1OPi$TRf^3l5&rl0JrMo<d>)AYJYW3#ZZps{
z2vGdV!U$sNfC!MC46HE<3VkV&c4`bW&mNv~Ve6#+=DtZKp2nX|dah+p(iBtgmrBlb
z4%C>v`~<s5pVpjHC*7<Vbky#9yI2SWHOzjI@L|!(cBX|1Zt^!;YHsIhoqm~~&yZ8o
Nl-k&ot*Xdi4FG$PU;_XE

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.mm.applicationlevel/icons/full/obj16/EmpiricalBlackboxBehavior.gif b/tools.descartes.dml.mm.applicationlevel/icons/full/obj16/EmpiricalBlackboxBehavior.gif
new file mode 100644
index 0000000000000000000000000000000000000000..33a997a1606acf7cb8a32921faeee1e5c809a0cb
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgt|NlRJf4%YM=>Gfj
zmtCq<{K>+|z`)6%1JVgHgMmfQ;H2m3y%w*(d{g0nSm?Ull=W6hg4cqDUv2b0PE)&T
WR^GExlV5i^W2f7Zi9*7R4AuaR$TFz_

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.mm.applicationlevel/icons/full/obj16/ResponseTimeSample.gif b/tools.descartes.dml.mm.applicationlevel/icons/full/obj16/ResponseTimeSample.gif
new file mode 100644
index 0000000000000000000000000000000000000000..90d10f9470787d1465c462197b85d1d3621f84e4
GIT binary patch
literal 129
zcmZ?wbhEHb6krfw*vtS14M4Jip`qcxfddT<4GjN*-2XuK|Nmgte-L}loH;<LVl^Md
zpDc_F44e!)Ae|sH7+CZSPI|81Yw`NaHx>Seg|6F8S#PBzcr94?)kg2*G_|W{<vlAk
S`E{2wcDfyzC?w3tU=0AIyf1?Q

literal 0
HcmV?d00001

diff --git a/tools.descartes.dml.mm.applicationlevel/model/applicationlevel.genmodel b/tools.descartes.dml.mm.applicationlevel/model/applicationlevel.genmodel
index 4ba70bbb..324cb40d 100644
--- a/tools.descartes.dml.mm.applicationlevel/model/applicationlevel.genmodel
+++ b/tools.descartes.dml.mm.applicationlevel/model/applicationlevel.genmodel
@@ -291,6 +291,7 @@
     <genClasses ecoreClass="repository.ecore#//BasicComponent">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference repository.ecore#//BasicComponent/semaphores"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference repository.ecore#//BasicComponent/fineGrainedBehavior"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference repository.ecore#//BasicComponent/empiricalBlackboxBehavior"/>
     </genClasses>
     <genClasses ecoreClass="repository.ecore#//Semaphore">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute repository.ecore#//Semaphore/capacity"/>
@@ -410,13 +411,18 @@
     <genClasses ecoreClass="servicebehavior.ecore#//BlackBoxBehavior">
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference servicebehavior.ecore#//BlackBoxBehavior/responseTime"/>
     </genClasses>
-    <genClasses ecoreClass="servicebehavior.ecore#//ResponseTime">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference servicebehavior.ecore#//ResponseTime/blackBoxBehavior"/>
-    </genClasses>
+    <genClasses ecoreClass="servicebehavior.ecore#//ResponseTime"/>
     <genClasses ecoreClass="servicebehavior.ecore#//RelationshipVariable">
       <genFeatures createChild="false" ecoreFeature="ecore:EAttribute servicebehavior.ecore#//RelationshipVariable/characterization"/>
       <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference servicebehavior.ecore#//RelationshipVariable/explicitDescription"/>
     </genClasses>
+    <genClasses ecoreClass="servicebehavior.ecore#//EmpiricalBlackboxBehavior">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference servicebehavior.ecore#//EmpiricalBlackboxBehavior/responseTimeSample"/>
+    </genClasses>
+    <genClasses ecoreClass="servicebehavior.ecore#//ResponseTimeSample">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute servicebehavior.ecore#//ResponseTimeSample/concurrency"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute servicebehavior.ecore#//ResponseTimeSample/meanResponseTime"/>
+    </genClasses>
   </genPackages>
   <genPackages prefix="System" basePackage="tools.descartes.dml.mm.applicationlevel"
       disposableProviderFactory="true" ecorePackage="system.ecore#/">
diff --git a/tools.descartes.dml.mm.applicationlevel/model/repository.ecore b/tools.descartes.dml.mm.applicationlevel/model/repository.ecore
index 818cad97..d0924164 100644
--- a/tools.descartes.dml.mm.applicationlevel/model/repository.ecore
+++ b/tools.descartes.dml.mm.applicationlevel/model/repository.ecore
@@ -152,6 +152,9 @@
         upperBound="-1" eType="#//Semaphore" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="fineGrainedBehavior" upperBound="-1"
         eType="ecore:EClass servicebehavior.ecore#//FineGrainedBehavior" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="empiricalBlackboxBehavior"
+        upperBound="-1" eType="ecore:EClass servicebehavior.ecore#//EmpiricalBlackboxBehavior"
+        containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="Semaphore" eSuperTypes="../../tools.descartes.dml.core/model/core.ecore#//AdaptableEntity">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="capacity" lowerBound="1"
diff --git a/tools.descartes.dml.mm.applicationlevel/model/servicebehavior.ecore b/tools.descartes.dml.mm.applicationlevel/model/servicebehavior.ecore
index ce496fa1..3f613c4f 100644
--- a/tools.descartes.dml.mm.applicationlevel/model/servicebehavior.ecore
+++ b/tools.descartes.dml.mm.applicationlevel/model/servicebehavior.ecore
@@ -131,7 +131,7 @@
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="BlackBoxBehavior" eSuperTypes="#//ServiceBehaviorAbstraction">
     <eStructuralFeatures xsi:type="ecore:EReference" name="responseTime" eType="#//ResponseTime"
-        containment="true" eOpposite="#//ResponseTime/blackBoxBehavior"/>
+        containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ResponseTime" eSuperTypes="#//RelationshipVariable">
     <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
@@ -140,8 +140,6 @@
     <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
       <details key="EnforceExplicitDescriptionWhenExplicitCharacterizationType" value="&#xA;&#x9;&#x9;&#x9;self.characterization = parameterdependencies::RelationshipCharacterizationType::EXPLICIT implies explicitDescription &lt;> null"/>
     </eAnnotations>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="blackBoxBehavior" lowerBound="1"
-        eType="#//BlackBoxBehavior" eOpposite="#//BlackBoxBehavior/responseTime"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="RelationshipVariable" eSuperTypes="parameterdependency.ecore#//ModelVariable ../../tools.descartes.dml.identifier/model/identifier.ecore#//Identifier">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="characterization" lowerBound="1"
@@ -149,4 +147,14 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="explicitDescription" eType="ecore:EClass functions.ecore#//RandomVariable"
         containment="true"/>
   </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EmpiricalBlackboxBehavior" eSuperTypes="#//ServiceBehaviorAbstraction">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="responseTimeSample" lowerBound="1"
+        upperBound="-1" eType="#//ResponseTimeSample" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ResponseTimeSample">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="concurrency" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigInteger"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="meanResponseTime" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
+  </eClassifiers>
 </ecore:EPackage>
diff --git a/tools.descartes.dml.mm.applicationlevel/plugin.properties b/tools.descartes.dml.mm.applicationlevel/plugin.properties
index 2d8f064d..246c4f3a 100644
--- a/tools.descartes.dml.mm.applicationlevel/plugin.properties
+++ b/tools.descartes.dml.mm.applicationlevel/plugin.properties
@@ -366,7 +366,7 @@ _UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1
 _UI_Wizard_initial_object_description = Select a model object to create
 
_UI_FileConflict_label = File Conflict
 _WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor.  Do you wish to discard this editor's changes?
-
+
 _UI_RelationshipVariable_type = Relationship Variable
 _UI_InfluencingParameterValue_relationshipVariable_feature = Relationship Variable
 _UI_CallParameter_parameterCharacterization_feature = Parameter Characterization
@@ -374,3 +374,10 @@ _UI_ServiceBehaviorAbstraction_callParameter_feature = Call Parameter
 _UI_RelationshipVariable_characterization_feature = Characterization
 _UI_RelationshipVariable_explicitDescription_feature = Explicit Description
 _UI_Sample_probability_feature = Probability
+_UI_EmpiricalBlackboxBehavior_type = Empirical Blackbox Behavior
+_UI_ResponseTimeSample_type = Response Time Sample
+_UI_BasicComponent_empiricalBlackboxBehavior_feature = Empirical Blackbox Behavior
+_UI_EmpiricalBlackboxBehavior_responseTimeSample_feature = Response Time Sample
+_UI_ResponseTimeSample_responseTime_feature = Response Time
+_UI_ResponseTimeSample_concurrency_feature = Concurrency
+_UI_ResponseTimeSample_meanResponseTime_feature = Mean Response Time
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/BasicComponent.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/BasicComponent.java
index f6ad5b0e..643c6d95 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/BasicComponent.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/BasicComponent.java
@@ -5,6 +5,7 @@ package tools.descartes.dml.mm.applicationlevel.repository;
 
 import org.eclipse.emf.common.util.EList;
 
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.FineGrainedBehavior;
 
 /**
@@ -18,6 +19,7 @@ import tools.descartes.dml.mm.applicationlevel.servicebehavior.FineGrainedBehavi
  * <ul>
  *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.BasicComponent#getSemaphores <em>Semaphores</em>}</li>
  *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.BasicComponent#getFineGrainedBehavior <em>Fine Grained Behavior</em>}</li>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.BasicComponent#getEmpiricalBlackboxBehavior <em>Empirical Blackbox Behavior</em>}</li>
  * </ul>
  *
  * @see tools.descartes.dml.mm.applicationlevel.repository.RepositoryPackage#getBasicComponent()
@@ -58,4 +60,20 @@ public interface BasicComponent extends RepositoryComponent {
 	 */
 	EList<FineGrainedBehavior> getFineGrainedBehavior();
 
+	/**
+	 * Returns the value of the '<em><b>Empirical Blackbox Behavior</b></em>' containment reference list.
+	 * The list contents are of type {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Empirical Blackbox Behavior</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Empirical Blackbox Behavior</em>' containment reference list.
+	 * @see tools.descartes.dml.mm.applicationlevel.repository.RepositoryPackage#getBasicComponent_EmpiricalBlackboxBehavior()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	EList<EmpiricalBlackboxBehavior> getEmpiricalBlackboxBehavior();
+
 } // BasicComponent
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/RepositoryPackage.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/RepositoryPackage.java
index f566128a..cd862071 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/RepositoryPackage.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/RepositoryPackage.java
@@ -1048,6 +1048,15 @@ public interface RepositoryPackage extends EPackage {
 	 */
 	int BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR = REPOSITORY_COMPONENT_FEATURE_COUNT + 1;
 
+	/**
+	 * The feature id for the '<em><b>Empirical Blackbox Behavior</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR = REPOSITORY_COMPONENT_FEATURE_COUNT + 2;
+
 	/**
 	 * The number of structural features of the '<em>Basic Component</em>' class.
 	 * <!-- begin-user-doc -->
@@ -1055,7 +1064,7 @@ public interface RepositoryPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int BASIC_COMPONENT_FEATURE_COUNT = REPOSITORY_COMPONENT_FEATURE_COUNT + 2;
+	int BASIC_COMPONENT_FEATURE_COUNT = REPOSITORY_COMPONENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The meta object id for the '{@link tools.descartes.dml.mm.applicationlevel.repository.impl.SemaphoreImpl <em>Semaphore</em>}' class.
@@ -2544,6 +2553,17 @@ public interface RepositoryPackage extends EPackage {
 	 */
 	EReference getBasicComponent_FineGrainedBehavior();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dml.mm.applicationlevel.repository.BasicComponent#getEmpiricalBlackboxBehavior <em>Empirical Blackbox Behavior</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Empirical Blackbox Behavior</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.repository.BasicComponent#getEmpiricalBlackboxBehavior()
+	 * @see #getBasicComponent()
+	 * @generated
+	 */
+	EReference getBasicComponent_EmpiricalBlackboxBehavior();
+
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dml.mm.applicationlevel.repository.Semaphore <em>Semaphore</em>}'.
 	 * <!-- begin-user-doc -->
@@ -3370,6 +3390,14 @@ public interface RepositoryPackage extends EPackage {
 		 */
 		EReference BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR = eINSTANCE.getBasicComponent_FineGrainedBehavior();
 
+		/**
+		 * The meta object literal for the '<em><b>Empirical Blackbox Behavior</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR = eINSTANCE.getBasicComponent_EmpiricalBlackboxBehavior();
+
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dml.mm.applicationlevel.repository.impl.SemaphoreImpl <em>Semaphore</em>}' class.
 		 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/BasicComponentImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/BasicComponentImpl.java
index 68553d3b..f32746d7 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/BasicComponentImpl.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/BasicComponentImpl.java
@@ -9,6 +9,7 @@ import org.eclipse.emf.ecore.EClass;
 import tools.descartes.dml.mm.applicationlevel.repository.BasicComponent;
 import tools.descartes.dml.mm.applicationlevel.repository.RepositoryPackage;
 import tools.descartes.dml.mm.applicationlevel.repository.Semaphore;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.FineGrainedBehavior;
 
 /**
@@ -21,6 +22,7 @@ import tools.descartes.dml.mm.applicationlevel.servicebehavior.FineGrainedBehavi
  * <ul>
  *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.impl.BasicComponentImpl#getSemaphores <em>Semaphores</em>}</li>
  *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.impl.BasicComponentImpl#getFineGrainedBehavior <em>Fine Grained Behavior</em>}</li>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.repository.impl.BasicComponentImpl#getEmpiricalBlackboxBehavior <em>Empirical Blackbox Behavior</em>}</li>
  * </ul>
  *
  * @generated
@@ -67,4 +69,15 @@ public class BasicComponentImpl extends RepositoryComponentImpl implements Basic
 		return (EList<FineGrainedBehavior>)eGet(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR, true);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public EList<EmpiricalBlackboxBehavior> getEmpiricalBlackboxBehavior() {
+		return (EList<EmpiricalBlackboxBehavior>)eGet(RepositoryPackage.Literals.BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR, true);
+	}
+
 } //BasicComponentImpl
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/RepositoryPackageImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/RepositoryPackageImpl.java
index e5d6fc33..dea95db6 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/RepositoryPackageImpl.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/impl/RepositoryPackageImpl.java
@@ -827,6 +827,16 @@ public class RepositoryPackageImpl extends EPackageImpl implements RepositoryPac
 		return (EReference)basicComponentEClass.getEStructuralFeatures().get(1);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getBasicComponent_EmpiricalBlackboxBehavior() {
+		return (EReference)basicComponentEClass.getEStructuralFeatures().get(2);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1314,6 +1324,7 @@ public class RepositoryPackageImpl extends EPackageImpl implements RepositoryPac
 		basicComponentEClass = createEClass(BASIC_COMPONENT);
 		createEReference(basicComponentEClass, BASIC_COMPONENT__SEMAPHORES);
 		createEReference(basicComponentEClass, BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR);
+		createEReference(basicComponentEClass, BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR);
 
 		semaphoreEClass = createEClass(SEMAPHORE);
 		createEAttribute(semaphoreEClass, SEMAPHORE__CAPACITY);
@@ -1504,6 +1515,7 @@ public class RepositoryPackageImpl extends EPackageImpl implements RepositoryPac
 		initEClass(basicComponentEClass, BasicComponent.class, "BasicComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getBasicComponent_Semaphores(), this.getSemaphore(), null, "semaphores", null, 0, -1, BasicComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getBasicComponent_FineGrainedBehavior(), theServicebehaviorPackage.getFineGrainedBehavior(), null, "fineGrainedBehavior", null, 0, -1, BasicComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getBasicComponent_EmpiricalBlackboxBehavior(), theServicebehaviorPackage.getEmpiricalBlackboxBehavior(), null, "empiricalBlackboxBehavior", null, 0, -1, BasicComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(semaphoreEClass, Semaphore.class, "Semaphore", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getSemaphore_Capacity(), ecorePackage.getEBigInteger(), "capacity", null, 1, 1, Semaphore.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java
index f842e089..cab22344 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/repository/provider/BasicComponentItemProvider.java
@@ -64,6 +64,7 @@ public class BasicComponentItemProvider extends RepositoryComponentItemProvider
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__SEMAPHORES);
 			childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR);
+			childrenFeatures.add(RepositoryPackage.Literals.BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR);
 		}
 		return childrenFeatures;
 	}
@@ -121,6 +122,7 @@ public class BasicComponentItemProvider extends RepositoryComponentItemProvider
 		switch (notification.getFeatureID(BasicComponent.class)) {
 			case RepositoryPackage.BASIC_COMPONENT__SEMAPHORES:
 			case RepositoryPackage.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR:
+			case RepositoryPackage.BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -147,6 +149,11 @@ public class BasicComponentItemProvider extends RepositoryComponentItemProvider
 			(createChildParameter
 				(RepositoryPackage.Literals.BASIC_COMPONENT__FINE_GRAINED_BEHAVIOR,
 				 ServicebehaviorFactory.eINSTANCE.createFineGrainedBehavior()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(RepositoryPackage.Literals.BASIC_COMPONENT__EMPIRICAL_BLACKBOX_BEHAVIOR,
+				 ServicebehaviorFactory.eINSTANCE.createEmpiricalBlackboxBehavior()));
 	}
 
 }
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
index 0fdfe894..bd6cb3c0 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/BlackBoxBehavior.java
@@ -23,7 +23,6 @@ package tools.descartes.dml.mm.applicationlevel.servicebehavior;
 public interface BlackBoxBehavior extends ServiceBehaviorAbstraction {
 	/**
 	 * Returns the value of the '<em><b>Response Time</b></em>' containment reference.
-	 * It is bidirectional and its opposite is '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior <em>Black Box Behavior</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Response Time</em>' containment reference isn't clear,
@@ -33,8 +32,7 @@ public interface BlackBoxBehavior extends ServiceBehaviorAbstraction {
 	 * @return the value of the '<em>Response Time</em>' containment reference.
 	 * @see #setResponseTime(ResponseTime)
 	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getBlackBoxBehavior_ResponseTime()
-	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior
-	 * @model opposite="blackBoxBehavior" containment="true" resolveProxies="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	ResponseTime getResponseTime();
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/EmpiricalBlackboxBehavior.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/EmpiricalBlackboxBehavior.java
new file mode 100644
index 00000000..f9caf4f2
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/EmpiricalBlackboxBehavior.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Empirical Blackbox Behavior</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior#getResponseTimeSample <em>Response Time Sample</em>}</li>
+ * </ul>
+ *
+ * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getEmpiricalBlackboxBehavior()
+ * @model
+ * @generated
+ */
+public interface EmpiricalBlackboxBehavior extends ServiceBehaviorAbstraction {
+	/**
+	 * Returns the value of the '<em><b>Response Time Sample</b></em>' containment reference list.
+	 * The list contents are of type {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Response Time Sample</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Response Time Sample</em>' containment reference list.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getEmpiricalBlackboxBehavior_ResponseTimeSample()
+	 * @model containment="true" resolveProxies="true" required="true"
+	 * @generated
+	 */
+	EList<ResponseTimeSample> getResponseTimeSample();
+
+} // EmpiricalBlackboxBehavior
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTime.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTime.java
index 88eb0b75..4ff4917e 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTime.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTime.java
@@ -8,12 +8,6 @@ package tools.descartes.dml.mm.applicationlevel.servicebehavior;
  * A representation of the model object '<em><b>Response Time</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior <em>Black Box Behavior</em>}</li>
- * </ul>
  *
  * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getResponseTime()
  * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='EnforceExplicitDescriptionWhenExplicitCharacterizationType'"
@@ -21,32 +15,5 @@ package tools.descartes.dml.mm.applicationlevel.servicebehavior;
  * @generated
  */
 public interface ResponseTime extends RelationshipVariable {
-	/**
-	 * Returns the value of the '<em><b>Black Box Behavior</b></em>' container reference.
-	 * It is bidirectional and its opposite is '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.BlackBoxBehavior#getResponseTime <em>Response Time</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Black Box Behavior</em>' container reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Black Box Behavior</em>' container reference.
-	 * @see #setBlackBoxBehavior(BlackBoxBehavior)
-	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getResponseTime_BlackBoxBehavior()
-	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.BlackBoxBehavior#getResponseTime
-	 * @model opposite="responseTime" required="true" transient="false"
-	 * @generated
-	 */
-	BlackBoxBehavior getBlackBoxBehavior();
-
-	/**
-	 * Sets the value of the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior <em>Black Box Behavior</em>}' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Black Box Behavior</em>' container reference.
-	 * @see #getBlackBoxBehavior()
-	 * @generated
-	 */
-	void setBlackBoxBehavior(BlackBoxBehavior value);
 
 } // ResponseTime
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTimeSample.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTimeSample.java
new file mode 100644
index 00000000..f24e9ef6
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ResponseTimeSample.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.eclipse.emf.cdo.CDOObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Response Time Sample</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getConcurrency <em>Concurrency</em>}</li>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getMeanResponseTime <em>Mean Response Time</em>}</li>
+ * </ul>
+ *
+ * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getResponseTimeSample()
+ * @model
+ * @extends CDOObject
+ * @generated
+ */
+public interface ResponseTimeSample extends CDOObject {
+	/**
+	 * Returns the value of the '<em><b>Concurrency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Concurrency</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Concurrency</em>' attribute.
+	 * @see #setConcurrency(BigInteger)
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getResponseTimeSample_Concurrency()
+	 * @model required="true"
+	 * @generated
+	 */
+	BigInteger getConcurrency();
+
+	/**
+	 * Sets the value of the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getConcurrency <em>Concurrency</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Concurrency</em>' attribute.
+	 * @see #getConcurrency()
+	 * @generated
+	 */
+	void setConcurrency(BigInteger value);
+
+	/**
+	 * Returns the value of the '<em><b>Mean Response Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mean Response Time</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mean Response Time</em>' attribute.
+	 * @see #setMeanResponseTime(BigDecimal)
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage#getResponseTimeSample_MeanResponseTime()
+	 * @model required="true"
+	 * @generated
+	 */
+	BigDecimal getMeanResponseTime();
+
+	/**
+	 * Sets the value of the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getMeanResponseTime <em>Mean Response Time</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mean Response Time</em>' attribute.
+	 * @see #getMeanResponseTime()
+	 * @generated
+	 */
+	void setMeanResponseTime(BigDecimal value);
+
+} // ResponseTimeSample
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorFactory.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorFactory.java
index 89c9d2de..866579f2 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorFactory.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorFactory.java
@@ -193,6 +193,24 @@ public interface ServicebehaviorFactory extends EFactory {
 	 */
 	RelationshipVariable createRelationshipVariable();
 
+	/**
+	 * Returns a new object of class '<em>Empirical Blackbox Behavior</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Empirical Blackbox Behavior</em>'.
+	 * @generated
+	 */
+	EmpiricalBlackboxBehavior createEmpiricalBlackboxBehavior();
+
+	/**
+	 * Returns a new object of class '<em>Response Time Sample</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Response Time Sample</em>'.
+	 * @generated
+	 */
+	ResponseTimeSample createResponseTimeSample();
+
 	/**
 	 * Returns the package supported by this factory.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
index dd072eff..877ec969 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/ServicebehaviorPackage.java
@@ -1082,22 +1082,106 @@ public interface ServicebehaviorPackage extends EPackage {
 	int RESPONSE_TIME__EXPLICIT_DESCRIPTION = RELATIONSHIP_VARIABLE__EXPLICIT_DESCRIPTION;
 
 	/**
-	 * The feature id for the '<em><b>Black Box Behavior</b></em>' container reference.
+	 * The number of structural features of the '<em>Response Time</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int RESPONSE_TIME__BLACK_BOX_BEHAVIOR = RELATIONSHIP_VARIABLE_FEATURE_COUNT + 0;
+	int RESPONSE_TIME_FEATURE_COUNT = RELATIONSHIP_VARIABLE_FEATURE_COUNT + 0;
+
 
 	/**
-	 * The number of structural features of the '<em>Response Time</em>' class.
+	 * The meta object id for the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.EmpiricalBlackboxBehaviorImpl <em>Empirical Blackbox Behavior</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.EmpiricalBlackboxBehaviorImpl
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ServicebehaviorPackageImpl#getEmpiricalBlackboxBehavior()
+	 * @generated
+	 */
+	int EMPIRICAL_BLACKBOX_BEHAVIOR = 21;
+
+	/**
+	 * The feature id for the '<em><b>Described Signature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPIRICAL_BLACKBOX_BEHAVIOR__DESCRIBED_SIGNATURE = SERVICE_BEHAVIOR_ABSTRACTION__DESCRIBED_SIGNATURE;
+
+	/**
+	 * The feature id for the '<em><b>Call Parameter</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPIRICAL_BLACKBOX_BEHAVIOR__CALL_PARAMETER = SERVICE_BEHAVIOR_ABSTRACTION__CALL_PARAMETER;
+
+	/**
+	 * The feature id for the '<em><b>Interface Providing Role</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPIRICAL_BLACKBOX_BEHAVIOR__INTERFACE_PROVIDING_ROLE = SERVICE_BEHAVIOR_ABSTRACTION__INTERFACE_PROVIDING_ROLE;
+
+	/**
+	 * The feature id for the '<em><b>Response Time Sample</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE = SERVICE_BEHAVIOR_ABSTRACTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Empirical Blackbox Behavior</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int RESPONSE_TIME_FEATURE_COUNT = RELATIONSHIP_VARIABLE_FEATURE_COUNT + 1;
+	int EMPIRICAL_BLACKBOX_BEHAVIOR_FEATURE_COUNT = SERVICE_BEHAVIOR_ABSTRACTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl <em>Response Time Sample</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ServicebehaviorPackageImpl#getResponseTimeSample()
+	 * @generated
+	 */
+	int RESPONSE_TIME_SAMPLE = 22;
+
+	/**
+	 * The feature id for the '<em><b>Concurrency</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESPONSE_TIME_SAMPLE__CONCURRENCY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Mean Response Time</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Response Time Sample</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RESPONSE_TIME_SAMPLE_FEATURE_COUNT = 2;
 
 
 	/**
@@ -1608,17 +1692,6 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	EClass getResponseTime();
 
-	/**
-	 * Returns the meta object for the container reference '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior <em>Black Box Behavior</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the container reference '<em>Black Box Behavior</em>'.
-	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime#getBlackBoxBehavior()
-	 * @see #getResponseTime()
-	 * @generated
-	 */
-	EReference getResponseTime_BlackBoxBehavior();
-
 	/**
 	 * Returns the meta object for class '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.RelationshipVariable <em>Relationship Variable</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1651,6 +1724,59 @@ public interface ServicebehaviorPackage extends EPackage {
 	 */
 	EReference getRelationshipVariable_ExplicitDescription();
 
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior <em>Empirical Blackbox Behavior</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Empirical Blackbox Behavior</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior
+	 * @generated
+	 */
+	EClass getEmpiricalBlackboxBehavior();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior#getResponseTimeSample <em>Response Time Sample</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Response Time Sample</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior#getResponseTimeSample()
+	 * @see #getEmpiricalBlackboxBehavior()
+	 * @generated
+	 */
+	EReference getEmpiricalBlackboxBehavior_ResponseTimeSample();
+
+	/**
+	 * Returns the meta object for class '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample <em>Response Time Sample</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Response Time Sample</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample
+	 * @generated
+	 */
+	EClass getResponseTimeSample();
+
+	/**
+	 * Returns the meta object for the attribute '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getConcurrency <em>Concurrency</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Concurrency</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getConcurrency()
+	 * @see #getResponseTimeSample()
+	 * @generated
+	 */
+	EAttribute getResponseTimeSample_Concurrency();
+
+	/**
+	 * Returns the meta object for the attribute '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getMeanResponseTime <em>Mean Response Time</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mean Response Time</em>'.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample#getMeanResponseTime()
+	 * @see #getResponseTimeSample()
+	 * @generated
+	 */
+	EAttribute getResponseTimeSample_MeanResponseTime();
+
 	/**
 	 * Returns the factory that creates the instances of the model.
 	 * <!-- begin-user-doc -->
@@ -2097,14 +2223,6 @@ public interface ServicebehaviorPackage extends EPackage {
 		 */
 		EClass RESPONSE_TIME = eINSTANCE.getResponseTime();
 
-		/**
-		 * The meta object literal for the '<em><b>Black Box Behavior</b></em>' container reference feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference RESPONSE_TIME__BLACK_BOX_BEHAVIOR = eINSTANCE.getResponseTime_BlackBoxBehavior();
-
 		/**
 		 * The meta object literal for the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.RelationshipVariableImpl <em>Relationship Variable</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2131,6 +2249,50 @@ public interface ServicebehaviorPackage extends EPackage {
 		 */
 		EReference RELATIONSHIP_VARIABLE__EXPLICIT_DESCRIPTION = eINSTANCE.getRelationshipVariable_ExplicitDescription();
 
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.EmpiricalBlackboxBehaviorImpl <em>Empirical Blackbox Behavior</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.EmpiricalBlackboxBehaviorImpl
+		 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ServicebehaviorPackageImpl#getEmpiricalBlackboxBehavior()
+		 * @generated
+		 */
+		EClass EMPIRICAL_BLACKBOX_BEHAVIOR = eINSTANCE.getEmpiricalBlackboxBehavior();
+
+		/**
+		 * The meta object literal for the '<em><b>Response Time Sample</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE = eINSTANCE.getEmpiricalBlackboxBehavior_ResponseTimeSample();
+
+		/**
+		 * The meta object literal for the '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl <em>Response Time Sample</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl
+		 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ServicebehaviorPackageImpl#getResponseTimeSample()
+		 * @generated
+		 */
+		EClass RESPONSE_TIME_SAMPLE = eINSTANCE.getResponseTimeSample();
+
+		/**
+		 * The meta object literal for the '<em><b>Concurrency</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RESPONSE_TIME_SAMPLE__CONCURRENCY = eINSTANCE.getResponseTimeSample_Concurrency();
+
+		/**
+		 * The meta object literal for the '<em><b>Mean Response Time</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME = eINSTANCE.getResponseTimeSample_MeanResponseTime();
+
 	}
 
 } //ServicebehaviorPackage
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/EmpiricalBlackboxBehaviorImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/EmpiricalBlackboxBehaviorImpl.java
new file mode 100644
index 00000000..85841546
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/EmpiricalBlackboxBehaviorImpl.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior.impl;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Empirical Blackbox Behavior</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.EmpiricalBlackboxBehaviorImpl#getResponseTimeSample <em>Response Time Sample</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EmpiricalBlackboxBehaviorImpl extends ServiceBehaviorAbstractionImpl implements EmpiricalBlackboxBehavior {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EmpiricalBlackboxBehaviorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ServicebehaviorPackage.Literals.EMPIRICAL_BLACKBOX_BEHAVIOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public EList<ResponseTimeSample> getResponseTimeSample() {
+		return (EList<ResponseTimeSample>)eGet(ServicebehaviorPackage.Literals.EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE, true);
+	}
+
+} //EmpiricalBlackboxBehaviorImpl
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
index 9eac3cdc..cedcc55f 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeImpl.java
@@ -4,7 +4,6 @@
 package tools.descartes.dml.mm.applicationlevel.servicebehavior.impl;
 
 import org.eclipse.emf.ecore.EClass;
-import tools.descartes.dml.mm.applicationlevel.servicebehavior.BlackBoxBehavior;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
 
@@ -12,12 +11,6 @@ import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPa
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Response Time</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeImpl#getBlackBoxBehavior <em>Black Box Behavior</em>}</li>
- * </ul>
  *
  * @generated
  */
@@ -41,24 +34,4 @@ public class ResponseTimeImpl extends RelationshipVariableImpl implements Respon
 		return ServicebehaviorPackage.Literals.RESPONSE_TIME;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public BlackBoxBehavior getBlackBoxBehavior() {
-		return (BlackBoxBehavior)eGet(ServicebehaviorPackage.Literals.RESPONSE_TIME__BLACK_BOX_BEHAVIOR, true);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void setBlackBoxBehavior(BlackBoxBehavior newBlackBoxBehavior) {
-		eSet(ServicebehaviorPackage.Literals.RESPONSE_TIME__BLACK_BOX_BEHAVIOR, newBlackBoxBehavior);
-	}
-
 } //ResponseTimeImpl
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeSampleImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeSampleImpl.java
new file mode 100644
index 00000000..b89236f8
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ResponseTimeSampleImpl.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior.impl;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.internal.cdo.CDOObjectImpl;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Response Time Sample</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl#getConcurrency <em>Concurrency</em>}</li>
+ *   <li>{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.impl.ResponseTimeSampleImpl#getMeanResponseTime <em>Mean Response Time</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ResponseTimeSampleImpl extends CDOObjectImpl implements ResponseTimeSample {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResponseTimeSampleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected int eStaticFeatureCount() {
+		return 0;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BigInteger getConcurrency() {
+		return (BigInteger)eGet(ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__CONCURRENCY, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setConcurrency(BigInteger newConcurrency) {
+		eSet(ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__CONCURRENCY, newConcurrency);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BigDecimal getMeanResponseTime() {
+		return (BigDecimal)eGet(ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMeanResponseTime(BigDecimal newMeanResponseTime) {
+		eSet(ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME, newMeanResponseTime);
+	}
+
+} //ResponseTimeSampleImpl
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorFactoryImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorFactoryImpl.java
index 22029c8b..d323e04a 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorFactoryImpl.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorFactoryImpl.java
@@ -93,6 +93,8 @@ public class ServicebehaviorFactoryImpl extends EFactoryImpl implements Serviceb
 			case ServicebehaviorPackage.BLACK_BOX_BEHAVIOR: return createBlackBoxBehavior();
 			case ServicebehaviorPackage.RESPONSE_TIME: return createResponseTime();
 			case ServicebehaviorPackage.RELATIONSHIP_VARIABLE: return createRelationshipVariable();
+			case ServicebehaviorPackage.EMPIRICAL_BLACKBOX_BEHAVIOR: return createEmpiricalBlackboxBehavior();
+			case ServicebehaviorPackage.RESPONSE_TIME_SAMPLE: return createResponseTimeSample();
 			default:
 				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
 		}
@@ -307,6 +309,28 @@ public class ServicebehaviorFactoryImpl extends EFactoryImpl implements Serviceb
 		return relationshipVariable;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EmpiricalBlackboxBehavior createEmpiricalBlackboxBehavior() {
+		EmpiricalBlackboxBehaviorImpl empiricalBlackboxBehavior = new EmpiricalBlackboxBehaviorImpl();
+		return empiricalBlackboxBehavior;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResponseTimeSample createResponseTimeSample() {
+		ResponseTimeSampleImpl responseTimeSample = new ResponseTimeSampleImpl();
+		return responseTimeSample;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
index f5eef2ad..deff7a24 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/impl/ServicebehaviorPackageImpl.java
@@ -26,6 +26,7 @@ import tools.descartes.dml.mm.applicationlevel.servicebehavior.BranchProbabiliti
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.CallFrequency;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.CoarseGrainedBehavior;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ComponentInternalBehavior;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ExternalCall;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ExternalCallAction;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ExternalCallFrequency;
@@ -38,6 +39,7 @@ import tools.descartes.dml.mm.applicationlevel.servicebehavior.RelationshipVaria
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ReleaseAction;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResourceDemand;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTime;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServiceBehaviorAbstraction;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
@@ -200,6 +202,20 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 */
 	private EClass relationshipVariableEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass empiricalBlackboxBehaviorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass responseTimeSampleEClass = null;
+
 	/**
 	 * Creates an instance of the model <b>Package</b>, registered with
 	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
@@ -776,8 +792,8 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * @generated
 	 */
 	@Override
-	public EReference getResponseTime_BlackBoxBehavior() {
-		return (EReference)responseTimeEClass.getEStructuralFeatures().get(0);
+	public EClass getRelationshipVariable() {
+		return relationshipVariableEClass;
 	}
 
 	/**
@@ -786,8 +802,8 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * @generated
 	 */
 	@Override
-	public EClass getRelationshipVariable() {
-		return relationshipVariableEClass;
+	public EAttribute getRelationshipVariable_Characterization() {
+		return (EAttribute)relationshipVariableEClass.getEStructuralFeatures().get(0);
 	}
 
 	/**
@@ -796,8 +812,8 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * @generated
 	 */
 	@Override
-	public EAttribute getRelationshipVariable_Characterization() {
-		return (EAttribute)relationshipVariableEClass.getEStructuralFeatures().get(0);
+	public EReference getRelationshipVariable_ExplicitDescription() {
+		return (EReference)relationshipVariableEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -806,8 +822,48 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 	 * @generated
 	 */
 	@Override
-	public EReference getRelationshipVariable_ExplicitDescription() {
-		return (EReference)relationshipVariableEClass.getEStructuralFeatures().get(1);
+	public EClass getEmpiricalBlackboxBehavior() {
+		return empiricalBlackboxBehaviorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getEmpiricalBlackboxBehavior_ResponseTimeSample() {
+		return (EReference)empiricalBlackboxBehaviorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getResponseTimeSample() {
+		return responseTimeSampleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getResponseTimeSample_Concurrency() {
+		return (EAttribute)responseTimeSampleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getResponseTimeSample_MeanResponseTime() {
+		return (EAttribute)responseTimeSampleEClass.getEStructuralFeatures().get(1);
 	}
 
 	/**
@@ -906,11 +962,17 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 		createEReference(blackBoxBehaviorEClass, BLACK_BOX_BEHAVIOR__RESPONSE_TIME);
 
 		responseTimeEClass = createEClass(RESPONSE_TIME);
-		createEReference(responseTimeEClass, RESPONSE_TIME__BLACK_BOX_BEHAVIOR);
 
 		relationshipVariableEClass = createEClass(RELATIONSHIP_VARIABLE);
 		createEAttribute(relationshipVariableEClass, RELATIONSHIP_VARIABLE__CHARACTERIZATION);
 		createEReference(relationshipVariableEClass, RELATIONSHIP_VARIABLE__EXPLICIT_DESCRIPTION);
+
+		empiricalBlackboxBehaviorEClass = createEClass(EMPIRICAL_BLACKBOX_BEHAVIOR);
+		createEReference(empiricalBlackboxBehaviorEClass, EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE);
+
+		responseTimeSampleEClass = createEClass(RESPONSE_TIME_SAMPLE);
+		createEAttribute(responseTimeSampleEClass, RESPONSE_TIME_SAMPLE__CONCURRENCY);
+		createEAttribute(responseTimeSampleEClass, RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME);
 	}
 
 	/**
@@ -967,6 +1029,7 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 		responseTimeEClass.getESuperTypes().add(this.getRelationshipVariable());
 		relationshipVariableEClass.getESuperTypes().add(theParameterdependenciesPackage.getModelVariable());
 		relationshipVariableEClass.getESuperTypes().add(theIdentifierPackage.getIdentifier());
+		empiricalBlackboxBehaviorEClass.getESuperTypes().add(this.getServiceBehaviorAbstraction());
 
 		// Initialize classes and features; add operations and parameters
 		initEClass(serviceBehaviorAbstractionEClass, ServiceBehaviorAbstraction.class, "ServiceBehaviorAbstraction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1033,15 +1096,21 @@ public class ServicebehaviorPackageImpl extends EPackageImpl implements Serviceb
 		initEReference(getCallFrequency_ExternalCallFrequency(), this.getExternalCallFrequency(), this.getExternalCallFrequency_Frequency(), "externalCallFrequency", null, 1, 1, CallFrequency.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(blackBoxBehaviorEClass, BlackBoxBehavior.class, "BlackBoxBehavior", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getBlackBoxBehavior_ResponseTime(), this.getResponseTime(), this.getResponseTime_BlackBoxBehavior(), "responseTime", null, 0, 1, BlackBoxBehavior.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getBlackBoxBehavior_ResponseTime(), this.getResponseTime(), null, "responseTime", null, 0, 1, BlackBoxBehavior.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(responseTimeEClass, ResponseTime.class, "ResponseTime", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getResponseTime_BlackBoxBehavior(), this.getBlackBoxBehavior(), this.getBlackBoxBehavior_ResponseTime(), "blackBoxBehavior", null, 1, 1, ResponseTime.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(relationshipVariableEClass, RelationshipVariable.class, "RelationshipVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getRelationshipVariable_Characterization(), theParameterdependenciesPackage.getModelVariableCharacterizationType(), "characterization", null, 1, 1, RelationshipVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getRelationshipVariable_ExplicitDescription(), theFunctionsPackage.getRandomVariable(), null, "explicitDescription", null, 0, 1, RelationshipVariable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(empiricalBlackboxBehaviorEClass, EmpiricalBlackboxBehavior.class, "EmpiricalBlackboxBehavior", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getEmpiricalBlackboxBehavior_ResponseTimeSample(), this.getResponseTimeSample(), null, "responseTimeSample", null, 1, -1, EmpiricalBlackboxBehavior.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(responseTimeSampleEClass, ResponseTimeSample.class, "ResponseTimeSample", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getResponseTimeSample_Concurrency(), ecorePackage.getEBigInteger(), "concurrency", null, 1, 1, ResponseTimeSample.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getResponseTimeSample_MeanResponseTime(), ecorePackage.getEBigDecimal(), "meanResponseTime", null, 1, 1, ResponseTimeSample.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		// Create resource
 		createResource(eNS_URI);
 
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/EmpiricalBlackboxBehaviorItemProvider.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/EmpiricalBlackboxBehaviorItemProvider.java
new file mode 100644
index 00000000..704f9812
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/EmpiricalBlackboxBehaviorItemProvider.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorFactory;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+/**
+ * This is the item provider adapter for a {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EmpiricalBlackboxBehaviorItemProvider extends ServiceBehaviorAbstractionItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EmpiricalBlackboxBehaviorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(ServicebehaviorPackage.Literals.EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns EmpiricalBlackboxBehavior.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/EmpiricalBlackboxBehavior"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_EmpiricalBlackboxBehavior_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(EmpiricalBlackboxBehavior.class)) {
+			case ServicebehaviorPackage.EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(ServicebehaviorPackage.Literals.EMPIRICAL_BLACKBOX_BEHAVIOR__RESPONSE_TIME_SAMPLE,
+				 ServicebehaviorFactory.eINSTANCE.createResponseTimeSample()));
+	}
+
+}
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ResponseTimeSampleItemProvider.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ResponseTimeSampleItemProvider.java
new file mode 100644
index 00000000..3435302f
--- /dev/null
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ResponseTimeSampleItemProvider.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright 2009-2012, Descartes Research Group, SDQ, IPD, KIT
+ */
+package tools.descartes.dml.mm.applicationlevel.servicebehavior.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import tools.descartes.dml.identifier.bugfix.BugfixCDOItemProviderAdapter;
+import tools.descartes.dml.mm.applicationlevel.provider.ApplicationlevelEditPlugin;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.ServicebehaviorPackage;
+
+/**
+ * This is the item provider adapter for a {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ResponseTimeSampleItemProvider 
+	extends BugfixCDOItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ResponseTimeSampleItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addConcurrencyPropertyDescriptor(object);
+			addMeanResponseTimePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Concurrency feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addConcurrencyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ResponseTimeSample_concurrency_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ResponseTimeSample_concurrency_feature", "_UI_ResponseTimeSample_type"),
+				 ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__CONCURRENCY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mean Response Time feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMeanResponseTimePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_ResponseTimeSample_meanResponseTime_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_ResponseTimeSample_meanResponseTime_feature", "_UI_ResponseTimeSample_type"),
+				 ServicebehaviorPackage.Literals.RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns ResponseTimeSample.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ResponseTimeSample"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public String getText(Object object) {
+		ResponseTimeSample rts = (ResponseTimeSample) object;
+		if (rts.getConcurrency() != null && rts.getMeanResponseTime() != null)
+			return getString("_UI_ResponseTimeSample_type") + " " + rts.getConcurrency() + " --> "
+					+ rts.getMeanResponseTime();
+		return getString("_UI_ResponseTimeSample_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(ResponseTimeSample.class)) {
+			case ServicebehaviorPackage.RESPONSE_TIME_SAMPLE__CONCURRENCY:
+			case ServicebehaviorPackage.RESPONSE_TIME_SAMPLE__MEAN_RESPONSE_TIME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ApplicationlevelEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java
index 8f4c7911..6b14424e 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/provider/ServicebehaviorItemProviderAdapterFactory.java
@@ -508,6 +508,52 @@ public class ServicebehaviorItemProviderAdapterFactory extends ServicebehaviorAd
 		return relationshipVariableItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EmpiricalBlackboxBehaviorItemProvider empiricalBlackboxBehaviorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createEmpiricalBlackboxBehaviorAdapter() {
+		if (empiricalBlackboxBehaviorItemProvider == null) {
+			empiricalBlackboxBehaviorItemProvider = new EmpiricalBlackboxBehaviorItemProvider(this);
+		}
+
+		return empiricalBlackboxBehaviorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ResponseTimeSampleItemProvider responseTimeSampleItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createResponseTimeSampleAdapter() {
+		if (responseTimeSampleItemProvider == null) {
+			responseTimeSampleItemProvider = new ResponseTimeSampleItemProvider(this);
+		}
+
+		return responseTimeSampleItemProvider;
+	}
+
 	/**
 	 * This returns the root adapter factory that contains this factory.
 	 * <!-- begin-user-doc -->
@@ -632,6 +678,8 @@ public class ServicebehaviorItemProviderAdapterFactory extends ServicebehaviorAd
 		if (blackBoxBehaviorItemProvider != null) blackBoxBehaviorItemProvider.dispose();
 		if (responseTimeItemProvider != null) responseTimeItemProvider.dispose();
 		if (relationshipVariableItemProvider != null) relationshipVariableItemProvider.dispose();
+		if (empiricalBlackboxBehaviorItemProvider != null) empiricalBlackboxBehaviorItemProvider.dispose();
+		if (responseTimeSampleItemProvider != null) responseTimeSampleItemProvider.dispose();
 	}
 
 }
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
index 1c7c2c47..ad7cf560 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorAdapterFactory.java
@@ -177,6 +177,14 @@ public class ServicebehaviorAdapterFactory extends AdapterFactoryImpl {
 				return createRelationshipVariableAdapter();
 			}
 			@Override
+			public Adapter caseEmpiricalBlackboxBehavior(EmpiricalBlackboxBehavior object) {
+				return createEmpiricalBlackboxBehaviorAdapter();
+			}
+			@Override
+			public Adapter caseResponseTimeSample(ResponseTimeSample object) {
+				return createResponseTimeSampleAdapter();
+			}
+			@Override
 			public Adapter caseModelVariable(ModelVariable object) {
 				return createModelVariableAdapter();
 			}
@@ -510,6 +518,34 @@ public class ServicebehaviorAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior <em>Empirical Blackbox Behavior</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.EmpiricalBlackboxBehavior
+	 * @generated
+	 */
+	public Adapter createEmpiricalBlackboxBehaviorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample <em>Response Time Sample</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see tools.descartes.dml.mm.applicationlevel.servicebehavior.ResponseTimeSample
+	 * @generated
+	 */
+	public Adapter createResponseTimeSampleAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link tools.descartes.dml.identifier.Identifier <em>Identifier</em>}'.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
index d7f5a3bd..34b3014b 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorSwitch.java
@@ -251,6 +251,19 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case ServicebehaviorPackage.EMPIRICAL_BLACKBOX_BEHAVIOR: {
+				EmpiricalBlackboxBehavior empiricalBlackboxBehavior = (EmpiricalBlackboxBehavior)theEObject;
+				T result = caseEmpiricalBlackboxBehavior(empiricalBlackboxBehavior);
+				if (result == null) result = caseServiceBehaviorAbstraction(empiricalBlackboxBehavior);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ServicebehaviorPackage.RESPONSE_TIME_SAMPLE: {
+				ResponseTimeSample responseTimeSample = (ResponseTimeSample)theEObject;
+				T result = caseResponseTimeSample(responseTimeSample);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			default: return defaultCase(theEObject);
 		}
 	}
@@ -570,6 +583,36 @@ public class ServicebehaviorSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Empirical Blackbox Behavior</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Empirical Blackbox Behavior</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmpiricalBlackboxBehavior(EmpiricalBlackboxBehavior object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Response Time Sample</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Response Time Sample</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseResponseTimeSample(ResponseTimeSample object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Identifier</em>'.
 	 * <!-- begin-user-doc -->
diff --git a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
index ef57b798..69711a20 100644
--- a/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
+++ b/tools.descartes.dml.mm.applicationlevel/src/tools/descartes/dml/mm/applicationlevel/servicebehavior/util/ServicebehaviorValidator.java
@@ -13,6 +13,7 @@ import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.EObjectValidator;
 
 import tools.descartes.dml.mm.applicationlevel.parameterdependencies.util.ParameterdependenciesValidator;
+import tools.descartes.dml.mm.applicationlevel.servicebehavior.*;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.AbstractAction;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.AcquireAction;
 import tools.descartes.dml.mm.applicationlevel.servicebehavior.BlackBoxBehavior;
@@ -159,6 +160,10 @@ public class ServicebehaviorValidator extends EObjectValidator {
 				return validateResponseTime((ResponseTime)value, diagnostics, context);
 			case ServicebehaviorPackage.RELATIONSHIP_VARIABLE:
 				return validateRelationshipVariable((RelationshipVariable)value, diagnostics, context);
+			case ServicebehaviorPackage.EMPIRICAL_BLACKBOX_BEHAVIOR:
+				return validateEmpiricalBlackboxBehavior((EmpiricalBlackboxBehavior)value, diagnostics, context);
+			case ServicebehaviorPackage.RESPONSE_TIME_SAMPLE:
+				return validateResponseTimeSample((ResponseTimeSample)value, diagnostics, context);
 			default:
 				return true;
 		}
@@ -170,15 +175,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateServiceBehaviorAbstraction(ServiceBehaviorAbstraction serviceBehaviorAbstraction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)serviceBehaviorAbstraction, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)serviceBehaviorAbstraction, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)serviceBehaviorAbstraction, diagnostics, context);
+		if (!validate_NoCircularContainment(serviceBehaviorAbstraction, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(serviceBehaviorAbstraction, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(serviceBehaviorAbstraction, diagnostics, context);
 		if (result || diagnostics != null) result &= validateServiceBehaviorAbstraction_DescribedSignatureMustBelongToInterfaceReferencedByInterfaceProvidingRole(serviceBehaviorAbstraction, diagnostics, context);
 		return result;
 	}
@@ -202,7 +207,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 		return
 			validate
 				(ServicebehaviorPackage.Literals.SERVICE_BEHAVIOR_ABSTRACTION,
-				 (EObject)serviceBehaviorAbstraction,
+				 serviceBehaviorAbstraction,
 				 diagnostics,
 				 context,
 				 "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
@@ -218,15 +223,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateFineGrainedBehavior(FineGrainedBehavior fineGrainedBehavior, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)fineGrainedBehavior, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)fineGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)fineGrainedBehavior, diagnostics, context);
+		if (!validate_NoCircularContainment(fineGrainedBehavior, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(fineGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(fineGrainedBehavior, diagnostics, context);
 		if (result || diagnostics != null) result &= validateServiceBehaviorAbstraction_DescribedSignatureMustBelongToInterfaceReferencedByInterfaceProvidingRole(fineGrainedBehavior, diagnostics, context);
 		return result;
 	}
@@ -237,7 +242,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateComponentInternalBehavior(ComponentInternalBehavior componentInternalBehavior, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)componentInternalBehavior, diagnostics, context);
+		return validate_EveryDefaultConstraint(componentInternalBehavior, diagnostics, context);
 	}
 
 	/**
@@ -246,7 +251,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateAbstractAction(AbstractAction abstractAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)abstractAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(abstractAction, diagnostics, context);
 	}
 
 	/**
@@ -255,7 +260,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateAcquireAction(AcquireAction acquireAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)acquireAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(acquireAction, diagnostics, context);
 	}
 
 	/**
@@ -264,7 +269,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateReleaseAction(ReleaseAction releaseAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)releaseAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(releaseAction, diagnostics, context);
 	}
 
 	/**
@@ -273,7 +278,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateInternalAction(InternalAction internalAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)internalAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(internalAction, diagnostics, context);
 	}
 
 	/**
@@ -282,7 +287,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateForkAction(ForkAction forkAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)forkAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(forkAction, diagnostics, context);
 	}
 
 	/**
@@ -291,7 +296,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateBranchAction(BranchAction branchAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)branchAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(branchAction, diagnostics, context);
 	}
 
 	/**
@@ -300,15 +305,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateBranchProbabilities(BranchProbabilities branchProbabilities, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)branchProbabilities, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)branchProbabilities, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)branchProbabilities, diagnostics, context);
+		if (!validate_NoCircularContainment(branchProbabilities, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(branchProbabilities, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(branchProbabilities, diagnostics, context);
 		if (result || diagnostics != null) result &= parameterdependenciesValidator.validateControlFlowVariable_EnforceExplicitDescriptionWhenExplicitCharacterizationType(branchProbabilities, diagnostics, context);
 		return result;
 	}
@@ -319,7 +324,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateLoopAction(LoopAction loopAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)loopAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(loopAction, diagnostics, context);
 	}
 
 	/**
@@ -328,15 +333,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateLoopIterationCount(LoopIterationCount loopIterationCount, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)loopIterationCount, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)loopIterationCount, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)loopIterationCount, diagnostics, context);
+		if (!validate_NoCircularContainment(loopIterationCount, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(loopIterationCount, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(loopIterationCount, diagnostics, context);
 		if (result || diagnostics != null) result &= parameterdependenciesValidator.validateControlFlowVariable_EnforceExplicitDescriptionWhenExplicitCharacterizationType(loopIterationCount, diagnostics, context);
 		if (result || diagnostics != null) result &= validateLoopIterationCount_LoopIterationCountHasToBeInt(loopIterationCount, diagnostics, context);
 		return result;
@@ -364,7 +369,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 		return
 			validate
 				(ServicebehaviorPackage.Literals.LOOP_ITERATION_COUNT,
-				 (EObject)loopIterationCount,
+				 loopIterationCount,
 				 diagnostics,
 				 context,
 				 "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
@@ -381,7 +386,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateExternalCallAction(ExternalCallAction externalCallAction, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)externalCallAction, diagnostics, context);
+		return validate_EveryDefaultConstraint(externalCallAction, diagnostics, context);
 	}
 
 	/**
@@ -390,15 +395,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateExternalCall(ExternalCall externalCall, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)externalCall, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)externalCall, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)externalCall, diagnostics, context);
+		if (!validate_NoCircularContainment(externalCall, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(externalCall, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(externalCall, diagnostics, context);
 		if (result || diagnostics != null) result &= validateExternalCall_SignatureBelongsToInterfaceRequiringRole(externalCall, diagnostics, context);
 		return result;
 	}
@@ -422,7 +427,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 		return
 			validate
 				(ServicebehaviorPackage.Literals.EXTERNAL_CALL,
-				 (EObject)externalCall,
+				 externalCall,
 				 diagnostics,
 				 context,
 				 "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
@@ -439,15 +444,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateResourceDemand(ResourceDemand resourceDemand, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)resourceDemand, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)resourceDemand, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)resourceDemand, diagnostics, context);
+		if (!validate_NoCircularContainment(resourceDemand, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(resourceDemand, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(resourceDemand, diagnostics, context);
 		if (result || diagnostics != null) result &= validateResourceDemand_EnforceExplicitDescriptionWhenExplicitCharacterizationType(resourceDemand, diagnostics, context);
 		return result;
 	}
@@ -471,7 +476,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 		return
 			validate
 				(ServicebehaviorPackage.Literals.RESOURCE_DEMAND,
-				 (EObject)resourceDemand,
+				 resourceDemand,
 				 diagnostics,
 				 context,
 				 "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
@@ -488,15 +493,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateCoarseGrainedBehavior(CoarseGrainedBehavior coarseGrainedBehavior, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)coarseGrainedBehavior, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)coarseGrainedBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)coarseGrainedBehavior, diagnostics, context);
+		if (!validate_NoCircularContainment(coarseGrainedBehavior, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(coarseGrainedBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(coarseGrainedBehavior, diagnostics, context);
 		if (result || diagnostics != null) result &= validateServiceBehaviorAbstraction_DescribedSignatureMustBelongToInterfaceReferencedByInterfaceProvidingRole(coarseGrainedBehavior, diagnostics, context);
 		return result;
 	}
@@ -507,7 +512,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateExternalCallFrequency(ExternalCallFrequency externalCallFrequency, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)externalCallFrequency, diagnostics, context);
+		return validate_EveryDefaultConstraint(externalCallFrequency, diagnostics, context);
 	}
 
 	/**
@@ -516,15 +521,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateCallFrequency(CallFrequency callFrequency, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)callFrequency, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)callFrequency, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)callFrequency, diagnostics, context);
+		if (!validate_NoCircularContainment(callFrequency, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(callFrequency, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(callFrequency, diagnostics, context);
 		if (result || diagnostics != null) result &= parameterdependenciesValidator.validateControlFlowVariable_EnforceExplicitDescriptionWhenExplicitCharacterizationType(callFrequency, diagnostics, context);
 		return result;
 	}
@@ -535,15 +540,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateBlackBoxBehavior(BlackBoxBehavior blackBoxBehavior, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)blackBoxBehavior, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)blackBoxBehavior, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)blackBoxBehavior, diagnostics, context);
+		if (!validate_NoCircularContainment(blackBoxBehavior, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(blackBoxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(blackBoxBehavior, diagnostics, context);
 		if (result || diagnostics != null) result &= validateServiceBehaviorAbstraction_DescribedSignatureMustBelongToInterfaceReferencedByInterfaceProvidingRole(blackBoxBehavior, diagnostics, context);
 		return result;
 	}
@@ -554,15 +559,15 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateResponseTime(ResponseTime responseTime, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		if (!validate_NoCircularContainment((EObject)responseTime, diagnostics, context)) return false;
-		boolean result = validate_EveryMultiplicityConforms((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryDataValueConforms((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryProxyResolves((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_UniqueID((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryKeyUnique((EObject)responseTime, diagnostics, context);
-		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique((EObject)responseTime, diagnostics, context);
+		if (!validate_NoCircularContainment(responseTime, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(responseTime, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(responseTime, diagnostics, context);
 		if (result || diagnostics != null) result &= validateResponseTime_EnforceExplicitDescriptionWhenExplicitCharacterizationType(responseTime, diagnostics, context);
 		return result;
 	}
@@ -586,7 +591,7 @@ public class ServicebehaviorValidator extends EObjectValidator {
 		return
 			validate
 				(ServicebehaviorPackage.Literals.RESPONSE_TIME,
-				 (EObject)responseTime,
+				 responseTime,
 				 diagnostics,
 				 context,
 				 "http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot",
@@ -603,7 +608,35 @@ public class ServicebehaviorValidator extends EObjectValidator {
 	 * @generated
 	 */
 	public boolean validateRelationshipVariable(RelationshipVariable relationshipVariable, DiagnosticChain diagnostics, Map<Object, Object> context) {
-		return validate_EveryDefaultConstraint((EObject)relationshipVariable, diagnostics, context);
+		return validate_EveryDefaultConstraint(relationshipVariable, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateEmpiricalBlackboxBehavior(EmpiricalBlackboxBehavior empiricalBlackboxBehavior, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		if (!validate_NoCircularContainment(empiricalBlackboxBehavior, diagnostics, context)) return false;
+		boolean result = validate_EveryMultiplicityConforms(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryDataValueConforms(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryReferenceIsContained(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryBidirectionalReferenceIsPaired(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryProxyResolves(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_UniqueID(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryKeyUnique(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validate_EveryMapEntryUnique(empiricalBlackboxBehavior, diagnostics, context);
+		if (result || diagnostics != null) result &= validateServiceBehaviorAbstraction_DescribedSignatureMustBelongToInterfaceReferencedByInterfaceProvidingRole(empiricalBlackboxBehavior, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateResponseTimeSample(ResponseTimeSample responseTimeSample, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(responseTimeSample, diagnostics, context);
 	}
 
 	/**
-- 
GitLab