Regenerated code for Luna
diff --git a/bundles/org.eclipse.upr.depl/META-INF/MANIFEST.MF b/bundles/org.eclipse.upr.depl/META-INF/MANIFEST.MF
index 2b170e0..647da3f 100644
--- a/bundles/org.eclipse.upr.depl/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.upr.depl/META-INF/MANIFEST.MF
@@ -18,6 +18,7 @@
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.ocl.examples.library;visibility:=reexport,
  org.eclipse.ocl.examples.pivot;visibility:=reexport,
+ org.eclipse.ocl.examples.codegen;visibility:=reexport,
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
  org.eclipse.uml2.uml;visibility:=reexport,
  org.eclipse.uml2.types;visibility:=reexport
diff --git a/bundles/org.eclipse.upr.depl/model/UMLProfileForDC.ecore b/bundles/org.eclipse.upr.depl/model/UMLProfileForDC.ecore
index 7f83cf5..69b4ce0 100644
--- a/bundles/org.eclipse.upr.depl/model/UMLProfileForDC.ecore
+++ b/bundles/org.eclipse.upr.depl/model/UMLProfileForDC.ecore
@@ -1,8 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="UMLProfileForDC" nsURI="http:///UMLProfileForDC.ecore" nsPrefix="UMLProfileForDC">
+  <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+    <details key="originalName" value="UMLProfileForD&amp;C"/>
+  </eAnnotations>
   <eSubpackages name="components" nsURI="http://www.omg.org/spec/DEPL/4.0/profile/components/1.0"
       nsPrefix="UMLProfileForDC.Components">
+    <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <details key="originalName" value="Components"/>
+    </eAnnotations>
     <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
       <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
       <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
@@ -262,6 +268,9 @@
   </eSubpackages>
   <eSubpackages name="target" nsURI="http://www.omg.org/spec/DEPL/4.0/profile/target/1.0"
       nsPrefix="UMLProfileForDC.Target">
+    <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <details key="originalName" value="Target"/>
+    </eAnnotations>
     <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore">
       <details key="invocationDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
       <details key="settingDelegates" value="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot"/>
diff --git a/bundles/org.eclipse.upr.depl/model/depl.profile.genmodel b/bundles/org.eclipse.upr.depl/model/depl.profile.genmodel
index 55d2ac1..fe56b54 100644
--- a/bundles/org.eclipse.upr.depl/model/depl.profile.genmodel
+++ b/bundles/org.eclipse.upr.depl/model/depl.profile.genmodel
@@ -27,6 +27,10 @@
     <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
     <details key="VALIDATION_DELEGATES" value="IGNORE"/>
     <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
   </genAnnotations>
   <foreignModel>depl.profile.uml</foreignModel>
   <genPackages xsi:type="genmodel:GenPackage" prefix="UMLProfileForDC" disposableProviderFactory="true"
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentAssembly.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentAssembly.java
index b6bc52f..92befeb 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentAssembly.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentAssembly.java
@@ -98,7 +98,7 @@
 	 * @return the value of the '<em>Assembly Property</em>' reference list.
 	 * @see org.eclipse.upr.depl.components.ComponentsPackage#getComponentAssembly_AssemblyProperty()
 	 * @model transient="true" changeable="false" volatile="true" derived="true" ordered="false"
-	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * \n * Component.allInstances()\n * ->select(c | c.implementation->includes(self))\n * .configProperty->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.ComponentAssembly%> self = this;\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = new <%org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager%>(this, <%org.eclipse.upr.depl.components.ComponentsTables%>.LIBRARY);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.elements.DomainType%> TYP_UMLProfileForDC_c_c_components_c_c_Component = idResolver.getType(<%org.eclipse.upr.depl.components.ComponentsTables%>.CLSSid_Component_0, null);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> allInstances = <%org.eclipse.ocl.examples.library.classifier.ClassifierAllInstancesOperation%>.INSTANCE.evaluate(evaluator, <%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component, TYP_UMLProfileForDC_c_c_components_c_c_Component);\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createSetAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR_c = allInstances.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> select;\nwhile (true) {\n    if (!ITERATOR_c.hasNext()) {\n        select = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> c = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR_c.next();\n    /**\n     * c.implementation->includes(self)\n     \052/\n    if (c == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> implementation = c.getImplementation();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_implementation = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_ComponentImplementation, implementation);\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.lang.Boolean%> includes = <%org.eclipse.ocl.examples.library.collection.CollectionIncludesOperation%>.INSTANCE.evaluate(BOXED_implementation, self);\n    //\n    if (includes == <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.TRUE_VALUE) {\n        accumulator.add(c);\n    }\n}\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator_0 = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.BAG_CLSSid_Property);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = select.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator_0;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> _1 = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR__1.next();\n    /**\n     * configProperty\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> configProperty = _1.getConfigProperty();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_configProperty = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Property, configProperty);\n    //\n    for (Object value : BOXED_configProperty.flatten().getElements()) {\n        accumulator_0.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = (<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> UNBOXED_flatten = flatten.asEcoreObject();\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.components.Property>%>)UNBOXED_flatten;'"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * \n * Component.allInstances()\n * ->select(c | c.implementation->includes(self))\n * .configProperty->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = <%org.eclipse.ocl.examples.pivot.utilities.PivotUtil%>.getEvaluator(this);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.elements.DomainType%> TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0 = idResolver.getType(<%org.eclipse.upr.depl.components.ComponentsTables%>.CLSSid_Component_0, null);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> allInstances = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState(<%org.eclipse.ocl.examples.library.classifier.ClassifierAllInstancesOperation%>.INSTANCE.evaluate(evaluator, <%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component, TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0));\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createSetAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR_c = allInstances.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> select;\nwhile (true) {\n    if (!ITERATOR_c.hasNext()) {\n        select = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> c = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR_c.next();\n    /**\n     * c.implementation->includes(self)\n     \052/\n    if (c == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Components::Component::implementation\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.components.ComponentImplementation%>> implementation = c.getImplementation();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_implementation = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_ComponentImplementation, implementation);\n    final /*@Thrown\052/ boolean includes = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState(<%org.eclipse.ocl.examples.library.collection.CollectionIncludesOperation%>.INSTANCE.evaluate(BOXED_implementation, this).booleanValue());\n    //\n    if (includes == <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.TRUE_VALUE) {\n        accumulator.add(c);\n    }\n}\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator_0 = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.BAG_CLSSid_Property);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = select.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator_0;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> _1 = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR__1.next();\n    /**\n     * configProperty\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Components::Component::configProperty\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.components.Property%>> configProperty = _1.getConfigProperty();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_configProperty = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Property, configProperty);\n    //\n    for (Object value : BOXED_configProperty.flatten().getElements()) {\n        accumulator_0.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState((<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect));\nfinal <%java.util.List%><<%org.eclipse.upr.depl.components.Property%>> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.components.Property.class);\nassert UNBOXED_flatten != null;\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.components.Property>%>)UNBOXED_flatten;'"
 	 * @generated
 	 */
 	EList<Property> getAssemblyProperty();
@@ -115,7 +115,7 @@
 	 * @return the value of the '<em>External Port</em>' reference list.
 	 * @see org.eclipse.upr.depl.components.ComponentsPackage#getComponentAssembly_ExternalPort()
 	 * @model transient="true" changeable="false" volatile="true" derived="true" ordered="false"
-	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * \n * Component.allInstances()\n * ->select(c | c.implementation->includes(self))\n * .ownedPort->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.ComponentAssembly%> self = this;\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = new <%org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager%>(this, <%org.eclipse.upr.depl.components.ComponentsTables%>.LIBRARY);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.elements.DomainType%> TYP_UMLProfileForDC_c_c_components_c_c_Component = idResolver.getType(<%org.eclipse.upr.depl.components.ComponentsTables%>.CLSSid_Component_0, null);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> allInstances = <%org.eclipse.ocl.examples.library.classifier.ClassifierAllInstancesOperation%>.INSTANCE.evaluate(evaluator, <%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component, TYP_UMLProfileForDC_c_c_components_c_c_Component);\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createSetAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR_c = allInstances.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> select;\nwhile (true) {\n    if (!ITERATOR_c.hasNext()) {\n        select = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> c = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR_c.next();\n    /**\n     * c.implementation->includes(self)\n     \052/\n    if (c == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> implementation = c.getImplementation();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_implementation = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_ComponentImplementation, implementation);\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.lang.Boolean%> includes = <%org.eclipse.ocl.examples.library.collection.CollectionIncludesOperation%>.INSTANCE.evaluate(BOXED_implementation, self);\n    //\n    if (includes == <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.TRUE_VALUE) {\n        accumulator.add(c);\n    }\n}\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator_0 = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.BAG_CLSSid_Port);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = select.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator_0;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> _1 = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR__1.next();\n    /**\n     * ownedPort\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> ownedPort = _1.getOwnedPort();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_ownedPort = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Port, ownedPort);\n    //\n    for (Object value : BOXED_ownedPort.flatten().getElements()) {\n        accumulator_0.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = (<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> UNBOXED_flatten = flatten.asEcoreObject();\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.components.Port>%>)UNBOXED_flatten;'"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * \n * Component.allInstances()\n * ->select(c | c.implementation->includes(self))\n * .ownedPort->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = <%org.eclipse.ocl.examples.pivot.utilities.PivotUtil%>.getEvaluator(this);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.elements.DomainType%> TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0 = idResolver.getType(<%org.eclipse.upr.depl.components.ComponentsTables%>.CLSSid_Component_0, null);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> allInstances = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState(<%org.eclipse.ocl.examples.library.classifier.ClassifierAllInstancesOperation%>.INSTANCE.evaluate(evaluator, <%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component, TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0));\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createSetAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Component);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR_c = allInstances.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> select;\nwhile (true) {\n    if (!ITERATOR_c.hasNext()) {\n        select = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> c = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR_c.next();\n    /**\n     * c.implementation->includes(self)\n     \052/\n    if (c == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Components::Component::implementation\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.components.ComponentImplementation%>> implementation = c.getImplementation();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_implementation = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_ComponentImplementation, implementation);\n    final /*@Thrown\052/ boolean includes = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState(<%org.eclipse.ocl.examples.library.collection.CollectionIncludesOperation%>.INSTANCE.evaluate(BOXED_implementation, this).booleanValue());\n    //\n    if (includes == <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.TRUE_VALUE) {\n        accumulator.add(c);\n    }\n}\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator_0 = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.components.ComponentsTables%>.BAG_CLSSid_Port);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = select.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator_0;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.components.Component%> _1 = (<%org.eclipse.upr.depl.components.Component%>)ITERATOR__1.next();\n    /**\n     * ownedPort\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Components::Component::ownedPort\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.components.Port%>> ownedPort = _1.getOwnedPort();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_ownedPort = idResolver.createSetOfAll(<%org.eclipse.upr.depl.components.ComponentsTables%>.SET_CLSSid_Port, ownedPort);\n    //\n    for (Object value : BOXED_ownedPort.flatten().getElements()) {\n        accumulator_0.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState((<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect));\nfinal <%java.util.List%><<%org.eclipse.upr.depl.components.Port%>> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.components.Port.class);\nassert UNBOXED_flatten != null;\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.components.Port>%>)UNBOXED_flatten;'"
 	 * @generated
 	 */
 	EList<Port> getExternalPort();
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsPackage.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsPackage.java
index 6f03473..ba2dd24 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsPackage.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsPackage.java
@@ -29,6 +29,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.upr.depl.components.ComponentsFactory
  * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Components'"
  * @generated
  */
 public interface ComponentsPackage extends EPackage {
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsTables.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsTables.java
index fa8df3e..100fa23 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsTables.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/ComponentsTables.java
@@ -1,4 +1,4 @@
-/**
+/*******************************************************************************
  * Copyright (c) 2014 Fraunhofer FOKUS
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -10,16 +10,19 @@
  * Marc-Florian Wendland
  *************************************************************************
  * This code is 100% auto-generated
- * from: components
- * using: org.eclipse.ocl.examples.codegen.oclinecore.OCLinEcoreTables
+ * from:
+ * using:
+ *   platform:/resource/org.eclipse.upr.depl/model/depl.profile.genmodel
+ *   org.eclipse.ocl.examples.codegen.oclinecore.OCLinEcoreTables
  *
  * Do not edit it.
- */
+ *******************************************************************************/
 package org.eclipse.upr.depl.components;
 
 import org.eclipse.ocl.examples.domain.ids.ClassId;
 import org.eclipse.ocl.examples.domain.ids.CollectionTypeId;
 import org.eclipse.ocl.examples.domain.ids.IdManager;
+import org.eclipse.ocl.examples.domain.ids.MetaclassId;
 import org.eclipse.ocl.examples.domain.ids.NsURIPackageId;
 import org.eclipse.ocl.examples.domain.ids.TypeId;
 import org.eclipse.ocl.examples.library.ecore.EcoreExecutorPackage;
@@ -37,7 +40,7 @@
 import org.eclipse.upr.depl.components.ComponentsTables;
 
 /**
- * ComponentsTables provides the dispatch tables for the components for use by the OCL dispatcher.
+ * ComponentsTables provides the dispatch tables for the Components for use by the OCL dispatcher.
  *
  * In order to ensure correct static initialization, a top level class element must be accessed
  * before any nested class element. Therefore an access to PACKAGE.getClass() is recommended.
@@ -48,7 +51,7 @@
 	/**
 	 *	The package descriptor for the package.
 	 */
-	public static final /*@NonNull*/ EcoreExecutorPackage PACKAGE = new EcoreExecutorPackage(ComponentsPackage.eINSTANCE);
+	public static final /*@NonNull*/ EcoreExecutorPackage PACKAGE = new EcoreExecutorPackage(ComponentsPackage.eINSTANCE, null);
 
 	/**
 	 *	The library of all packages and types.
@@ -58,30 +61,35 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
-    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML = IdManager.getNsURIPackageId("http://www.eclipse.org/uml2/4.0.0/UML", UMLPackage.eINSTANCE);
-    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0 = IdManager.getNsURIPackageId("http://www.omg.org/spec/DEPL/4.0/profile/components/1.0", ComponentsPackage.eINSTANCE);
+    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML = IdManager.getNsURIPackageId("http://www.eclipse.org/uml2/5.0.0/UML", null, UMLPackage.eINSTANCE);
+    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0 = IdManager.getNsURIPackageId("http://www.omg.org/spec/DEPL/4.0/profile/components/1.0", null, ComponentsPackage.eINSTANCE);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Capability = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("Capability", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Class", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Component = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Component", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Class", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Component = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Component", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_ComponentAssembly = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("ComponentAssembly", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_ComponentImplementation = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("ComponentImplementation", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Component_0 = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("Component", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_ConnectableElement = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("ConnectableElement", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Connector = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Connector", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_ConnectableElement = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("ConnectableElement", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Connector = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Connector", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_ExternalReference = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("ExternalReference", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Port = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Port", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Port = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Port", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PortConnector = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("PortConnector", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Port_0 = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("Port", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Property = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("Property", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_PropertyConnector = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("PropertyConnector", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Property_0 = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Property", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Property_0 = ComponentsTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Property", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Requirement = ComponentsTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_components_s_1_0.getClassId("Requirement", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId ORD_PRIMid_String = TypeId.ORDERED_SET.getSpecializedId(TypeId.STRING);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_Component = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_Component_0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_ComponentAssembly = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_ComponentAssembly);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_ComponentImplementation = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_ComponentImplementation);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_Port = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_Port_0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_PortConnector = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_PortConnector);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_Property = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_Property);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_PropertyConnector = TypeId.BAG.getSpecializedId(ComponentsTables.CLSSid_PropertyConnector);
+    public static final /*@NonNull*/ /*@NonInvalid*/ MetaclassId METAid_Metaclass = TypeId.METACLASS.getSpecializedId(ComponentsTables.CLSSid_Component_0);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId ORD_CLSSid_Capability = TypeId.ORDERED_SET.getSpecializedId(ComponentsTables.CLSSid_Capability);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Component = TypeId.SET.getSpecializedId(ComponentsTables.CLSSid_Component_0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_ComponentAssembly = TypeId.SET.getSpecializedId(ComponentsTables.CLSSid_ComponentAssembly);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_ComponentImplementation = TypeId.SET.getSpecializedId(ComponentsTables.CLSSid_ComponentImplementation);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_ExternalReference = TypeId.SET.getSpecializedId(ComponentsTables.CLSSid_ExternalReference);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Port = TypeId.SET.getSpecializedId(ComponentsTables.CLSSid_Port_0);
@@ -134,57 +142,66 @@
 			FragmentOperations.init();
 			FragmentProperties.init();
 		}
+
+		public static void init() {}
 	}
 
 	/**
 	 *	The fragment descriptors for the local elements of each type and its supertypes.
 	 */
 	public static class Fragments {
-		public static final /*@NonNull*/ ExecutorFragment _Capability__Capability = new ExecutorFragment(Types._Capability, ComponentsTables.Types._Capability);
-		public static final /*@NonNull*/ ExecutorFragment _Capability__OclAny = new ExecutorFragment(Types._Capability, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Capability__OclElement = new ExecutorFragment(Types._Capability, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Capability__Capability = new ExecutorFragment(Types._Capability, ComponentsTables.Types._Capability);
+		private static final /*@NonNull*/ ExecutorFragment _Capability__OclAny = new ExecutorFragment(Types._Capability, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Capability__OclElement = new ExecutorFragment(Types._Capability, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Component__Component = new ExecutorFragment(Types._Component, ComponentsTables.Types._Component);
-		public static final /*@NonNull*/ ExecutorFragment _Component__OclAny = new ExecutorFragment(Types._Component, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Component__OclElement = new ExecutorFragment(Types._Component, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Component__Component = new ExecutorFragment(Types._Component, ComponentsTables.Types._Component);
+		private static final /*@NonNull*/ ExecutorFragment _Component__OclAny = new ExecutorFragment(Types._Component, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Component__OclElement = new ExecutorFragment(Types._Component, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__ComponentAssembly = new ExecutorFragment(Types._ComponentAssembly, ComponentsTables.Types._ComponentAssembly);
-		public static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__ComponentImplementation = new ExecutorFragment(Types._ComponentAssembly, ComponentsTables.Types._ComponentImplementation);
-		public static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__OclAny = new ExecutorFragment(Types._ComponentAssembly, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__OclElement = new ExecutorFragment(Types._ComponentAssembly, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__ComponentAssembly = new ExecutorFragment(Types._ComponentAssembly, ComponentsTables.Types._ComponentAssembly);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__ComponentImplementation = new ExecutorFragment(Types._ComponentAssembly, ComponentsTables.Types._ComponentImplementation);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__OclAny = new ExecutorFragment(Types._ComponentAssembly, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentAssembly__OclElement = new ExecutorFragment(Types._ComponentAssembly, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__ComponentImplementation = new ExecutorFragment(Types._ComponentImplementation, ComponentsTables.Types._ComponentImplementation);
-		public static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__OclAny = new ExecutorFragment(Types._ComponentImplementation, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__OclElement = new ExecutorFragment(Types._ComponentImplementation, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__ComponentImplementation = new ExecutorFragment(Types._ComponentImplementation, ComponentsTables.Types._ComponentImplementation);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__OclAny = new ExecutorFragment(Types._ComponentImplementation, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _ComponentImplementation__OclElement = new ExecutorFragment(Types._ComponentImplementation, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _ExternalReference__ExternalReference = new ExecutorFragment(Types._ExternalReference, ComponentsTables.Types._ExternalReference);
-		public static final /*@NonNull*/ ExecutorFragment _ExternalReference__OclAny = new ExecutorFragment(Types._ExternalReference, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _ExternalReference__OclElement = new ExecutorFragment(Types._ExternalReference, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _ExternalReference__ExternalReference = new ExecutorFragment(Types._ExternalReference, ComponentsTables.Types._ExternalReference);
+		private static final /*@NonNull*/ ExecutorFragment _ExternalReference__OclAny = new ExecutorFragment(Types._ExternalReference, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _ExternalReference__OclElement = new ExecutorFragment(Types._ExternalReference, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__ComponentImplementation = new ExecutorFragment(Types._MonolithicImplementation, ComponentsTables.Types._ComponentImplementation);
-		public static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__MonolithicImplementation = new ExecutorFragment(Types._MonolithicImplementation, ComponentsTables.Types._MonolithicImplementation);
-		public static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__OclAny = new ExecutorFragment(Types._MonolithicImplementation, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__OclElement = new ExecutorFragment(Types._MonolithicImplementation, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__ComponentImplementation = new ExecutorFragment(Types._MonolithicImplementation, ComponentsTables.Types._ComponentImplementation);
+		private static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__MonolithicImplementation = new ExecutorFragment(Types._MonolithicImplementation, ComponentsTables.Types._MonolithicImplementation);
+		private static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__OclAny = new ExecutorFragment(Types._MonolithicImplementation, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _MonolithicImplementation__OclElement = new ExecutorFragment(Types._MonolithicImplementation, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Port__OclAny = new ExecutorFragment(Types._Port, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Port__OclElement = new ExecutorFragment(Types._Port, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _Port__Port = new ExecutorFragment(Types._Port, ComponentsTables.Types._Port);
+		private static final /*@NonNull*/ ExecutorFragment _Port__OclAny = new ExecutorFragment(Types._Port, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Port__OclElement = new ExecutorFragment(Types._Port, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Port__Port = new ExecutorFragment(Types._Port, ComponentsTables.Types._Port);
 
-		public static final /*@NonNull*/ ExecutorFragment _PortConnector__OclAny = new ExecutorFragment(Types._PortConnector, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _PortConnector__OclElement = new ExecutorFragment(Types._PortConnector, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _PortConnector__PortConnector = new ExecutorFragment(Types._PortConnector, ComponentsTables.Types._PortConnector);
+		private static final /*@NonNull*/ ExecutorFragment _PortConnector__OclAny = new ExecutorFragment(Types._PortConnector, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _PortConnector__OclElement = new ExecutorFragment(Types._PortConnector, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _PortConnector__PortConnector = new ExecutorFragment(Types._PortConnector, ComponentsTables.Types._PortConnector);
 
-		public static final /*@NonNull*/ ExecutorFragment _Property__OclAny = new ExecutorFragment(Types._Property, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Property__OclElement = new ExecutorFragment(Types._Property, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _Property__Property = new ExecutorFragment(Types._Property, ComponentsTables.Types._Property);
+		private static final /*@NonNull*/ ExecutorFragment _Property__OclAny = new ExecutorFragment(Types._Property, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Property__OclElement = new ExecutorFragment(Types._Property, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Property__Property = new ExecutorFragment(Types._Property, ComponentsTables.Types._Property);
 
-		public static final /*@NonNull*/ ExecutorFragment _PropertyConnector__OclAny = new ExecutorFragment(Types._PropertyConnector, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _PropertyConnector__OclElement = new ExecutorFragment(Types._PropertyConnector, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _PropertyConnector__PropertyConnector = new ExecutorFragment(Types._PropertyConnector, ComponentsTables.Types._PropertyConnector);
+		private static final /*@NonNull*/ ExecutorFragment _PropertyConnector__OclAny = new ExecutorFragment(Types._PropertyConnector, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _PropertyConnector__OclElement = new ExecutorFragment(Types._PropertyConnector, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _PropertyConnector__PropertyConnector = new ExecutorFragment(Types._PropertyConnector, ComponentsTables.Types._PropertyConnector);
 
-		public static final /*@NonNull*/ ExecutorFragment _Requirement__OclAny = new ExecutorFragment(Types._Requirement, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Requirement__OclElement = new ExecutorFragment(Types._Requirement, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _Requirement__Requirement = new ExecutorFragment(Types._Requirement, ComponentsTables.Types._Requirement);
+		private static final /*@NonNull*/ ExecutorFragment _Requirement__OclAny = new ExecutorFragment(Types._Requirement, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Requirement__OclElement = new ExecutorFragment(Types._Requirement, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Requirement__Requirement = new ExecutorFragment(Types._Requirement, ComponentsTables.Types._Requirement);
+
+		/*
+		 * Force initialization.
+		 */
+		public static void init() {
+			Types.init();
+		}
 	}
 
 	/**
@@ -204,17 +221,17 @@
 	 */
 	public static class Properties {
 
-		public static final /*@NonNull*/ ExecutorProperty _Capability__ComponentImplementation = new ExecutorPropertyWithImplementation("ComponentImplementation", Types._Capability, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__CAPABILITY));
-		public static final /*@NonNull*/ ExecutorProperty _Capability__name = new EcoreExecutorProperty(ComponentsPackage.Literals.CAPABILITY__NAME, Types._Capability, 1);
-		public static final /*@NonNull*/ ExecutorProperty _Capability__resourceType = new EcoreExecutorProperty(ComponentsPackage.Literals.CAPABILITY__RESOURCE_TYPE, Types._Capability, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Capability__name = new EcoreExecutorProperty(ComponentsPackage.Literals.CAPABILITY__NAME, Types._Capability, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Capability__resourceType = new EcoreExecutorProperty(ComponentsPackage.Literals.CAPABILITY__RESOURCE_TYPE, Types._Capability, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Capability__ComponentImplementation__capability = new ExecutorPropertyWithImplementation("ComponentImplementation", Types._Capability, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__CAPABILITY));
 
-		public static final /*@NonNull*/ ExecutorProperty _Component__ComponentAssembly = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Component, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__CONTAINED_COMPONENT));
-		public static final /*@NonNull*/ ExecutorProperty _Component__UUID = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__UUID, Types._Component, 1);
-		public static final /*@NonNull*/ ExecutorProperty _Component__base_Component = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__BASE_COMPONENT, Types._Component, 2);
-		public static final /*@NonNull*/ ExecutorProperty _Component__configProperty = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__CONFIG_PROPERTY, Types._Component, 3);
-		public static final /*@NonNull*/ ExecutorProperty _Component__implementation = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__IMPLEMENTATION, Types._Component, 4);
-		public static final /*@NonNull*/ ExecutorProperty _Component__label = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__LABEL, Types._Component, 5);
-		public static final /*@NonNull*/ ExecutorProperty _Component__ownedPort = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__OWNED_PORT, Types._Component, 6);
+		public static final /*@NonNull*/ ExecutorProperty _Component__UUID = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__UUID, Types._Component, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Component__base_Component = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__BASE_COMPONENT, Types._Component, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Component__configProperty = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__CONFIG_PROPERTY, Types._Component, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Component__implementation = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__IMPLEMENTATION, Types._Component, 3);
+		public static final /*@NonNull*/ ExecutorProperty _Component__label = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__LABEL, Types._Component, 4);
+		public static final /*@NonNull*/ ExecutorProperty _Component__ownedPort = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT__OWNED_PORT, Types._Component, 5);
+		public static final /*@NonNull*/ ExecutorProperty _Component__ComponentAssembly__containedComponent = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Component, 6, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__CONTAINED_COMPONENT));
 
 		public static final /*@NonNull*/ ExecutorProperty _ComponentAssembly__assemblyProperty = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__ASSEMBLY_PROPERTY, Types._ComponentAssembly, 0);
 		public static final /*@NonNull*/ ExecutorProperty _ComponentAssembly__containedComponent = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__CONTAINED_COMPONENT, Types._ComponentAssembly, 1);
@@ -222,47 +239,54 @@
 		public static final /*@NonNull*/ ExecutorProperty _ComponentAssembly__ownedPortConnector = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PORT_CONNECTOR, Types._ComponentAssembly, 3);
 		public static final /*@NonNull*/ ExecutorProperty _ComponentAssembly__ownedPropertyConnector = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PROPERTY_CONNECTOR, Types._ComponentAssembly, 4);
 
-		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__Component = new ExecutorPropertyWithImplementation("Component", Types._ComponentImplementation, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__IMPLEMENTATION));
-		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__base_Class = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__BASE_CLASS, Types._ComponentImplementation, 1);
-		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__capability = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__CAPABILITY, Types._ComponentImplementation, 2);
-		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__deployRequirement = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__DEPLOY_REQUIREMENT, Types._ComponentImplementation, 3);
+		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__base_Class = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__BASE_CLASS, Types._ComponentImplementation, 0);
+		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__capability = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__CAPABILITY, Types._ComponentImplementation, 1);
+		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__deployRequirement = new EcoreExecutorProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__DEPLOY_REQUIREMENT, Types._ComponentImplementation, 2);
+		public static final /*@NonNull*/ ExecutorProperty _ComponentImplementation__Component__implementation = new ExecutorPropertyWithImplementation("Component", Types._ComponentImplementation, 3, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__IMPLEMENTATION));
 
-		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__PortConnector = new ExecutorPropertyWithImplementation("PortConnector", Types._ExternalReference, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PORT_CONNECTOR__EXTERNAL_REFERENCE));
-		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__base_ConnectableElement = new EcoreExecutorProperty(ComponentsPackage.Literals.EXTERNAL_REFERENCE__BASE_CONNECTABLE_ELEMENT, Types._ExternalReference, 1);
-		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__location = new EcoreExecutorProperty(ComponentsPackage.Literals.EXTERNAL_REFERENCE__LOCATION, Types._ExternalReference, 2);
+		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__base_ConnectableElement = new EcoreExecutorProperty(ComponentsPackage.Literals.EXTERNAL_REFERENCE__BASE_CONNECTABLE_ELEMENT, Types._ExternalReference, 0);
+		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__location = new EcoreExecutorProperty(ComponentsPackage.Literals.EXTERNAL_REFERENCE__LOCATION, Types._ExternalReference, 1);
+		public static final /*@NonNull*/ ExecutorProperty _ExternalReference__PortConnector__externalReference = new ExecutorPropertyWithImplementation("PortConnector", Types._ExternalReference, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PORT_CONNECTOR__EXTERNAL_REFERENCE));
 
-		public static final /*@NonNull*/ ExecutorProperty _Port__Component = new ExecutorPropertyWithImplementation("Component", Types._Port, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__OWNED_PORT));
-		public static final /*@NonNull*/ ExecutorProperty _Port__ComponentAssembly = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Port, 1, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__EXTERNAL_PORT));
-		public static final /*@NonNull*/ ExecutorProperty _Port__PortConnector = new ExecutorPropertyWithImplementation("PortConnector", Types._Port, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PORT_CONNECTOR__CONNECTED_PORT));
-		public static final /*@NonNull*/ ExecutorProperty _Port__UUID = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__UUID, Types._Port, 3);
-		public static final /*@NonNull*/ ExecutorProperty _Port__base_Port = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__BASE_PORT, Types._Port, 4);
-		public static final /*@NonNull*/ ExecutorProperty _Port__exclusiveProvider = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__EXCLUSIVE_PROVIDER, Types._Port, 5);
-		public static final /*@NonNull*/ ExecutorProperty _Port__exclusiveUser = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__EXCLUSIVE_USER, Types._Port, 6);
-		public static final /*@NonNull*/ ExecutorProperty _Port__name = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__NAME, Types._Port, 7);
-		public static final /*@NonNull*/ ExecutorProperty _Port__optional = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__OPTIONAL, Types._Port, 8);
-		public static final /*@NonNull*/ ExecutorProperty _Port__provider = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__PROVIDER, Types._Port, 9);
-		public static final /*@NonNull*/ ExecutorProperty _Port__supportedType = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__SUPPORTED_TYPE, Types._Port, 10);
+		public static final /*@NonNull*/ ExecutorProperty _Port__UUID = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__UUID, Types._Port, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Port__base_Port = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__BASE_PORT, Types._Port, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Port__exclusiveProvider = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__EXCLUSIVE_PROVIDER, Types._Port, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Port__exclusiveUser = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__EXCLUSIVE_USER, Types._Port, 3);
+		public static final /*@NonNull*/ ExecutorProperty _Port__name = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__NAME, Types._Port, 4);
+		public static final /*@NonNull*/ ExecutorProperty _Port__optional = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__OPTIONAL, Types._Port, 5);
+		public static final /*@NonNull*/ ExecutorProperty _Port__provider = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__PROVIDER, Types._Port, 6);
+		public static final /*@NonNull*/ ExecutorProperty _Port__supportedType = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT__SUPPORTED_TYPE, Types._Port, 7);
+		public static final /*@NonNull*/ ExecutorProperty _Port__Component__ownedPort = new ExecutorPropertyWithImplementation("Component", Types._Port, 8, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__OWNED_PORT));
+		public static final /*@NonNull*/ ExecutorProperty _Port__ComponentAssembly__externalPort = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Port, 9, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__EXTERNAL_PORT));
+		public static final /*@NonNull*/ ExecutorProperty _Port__PortConnector__connectedPort = new ExecutorPropertyWithImplementation("PortConnector", Types._Port, 10, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PORT_CONNECTOR__CONNECTED_PORT));
 
-		public static final /*@NonNull*/ ExecutorProperty _PortConnector__ComponentAssembly = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._PortConnector, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PORT_CONNECTOR));
-		public static final /*@NonNull*/ ExecutorProperty _PortConnector__base_Connector = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__BASE_CONNECTOR, Types._PortConnector, 1);
-		public static final /*@NonNull*/ ExecutorProperty _PortConnector__connectedPort = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__CONNECTED_PORT, Types._PortConnector, 2);
-		public static final /*@NonNull*/ ExecutorProperty _PortConnector__externalReference = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__EXTERNAL_REFERENCE, Types._PortConnector, 3);
-		public static final /*@NonNull*/ ExecutorProperty _PortConnector__label = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__LABEL, Types._PortConnector, 4);
+		public static final /*@NonNull*/ ExecutorProperty _PortConnector__base_Connector = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__BASE_CONNECTOR, Types._PortConnector, 0);
+		public static final /*@NonNull*/ ExecutorProperty _PortConnector__connectedPort = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__CONNECTED_PORT, Types._PortConnector, 1);
+		public static final /*@NonNull*/ ExecutorProperty _PortConnector__externalReference = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__EXTERNAL_REFERENCE, Types._PortConnector, 2);
+		public static final /*@NonNull*/ ExecutorProperty _PortConnector__label = new EcoreExecutorProperty(ComponentsPackage.Literals.PORT_CONNECTOR__LABEL, Types._PortConnector, 3);
+		public static final /*@NonNull*/ ExecutorProperty _PortConnector__ComponentAssembly__ownedPortConnector = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._PortConnector, 4, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PORT_CONNECTOR));
 
-		public static final /*@NonNull*/ ExecutorProperty _Property__Component = new ExecutorPropertyWithImplementation("Component", Types._Property, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__CONFIG_PROPERTY));
-		public static final /*@NonNull*/ ExecutorProperty _Property__ComponentAssembly = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Property, 1, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__ASSEMBLY_PROPERTY));
-		public static final /*@NonNull*/ ExecutorProperty _Property__PropertyConnector = new ExecutorPropertyWithImplementation("PropertyConnector", Types._Property, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__CONNECTED_PROPERTY));
-		public static final /*@NonNull*/ ExecutorProperty _Property__Requirement = new ExecutorPropertyWithImplementation("Requirement", Types._Property, 3, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.REQUIREMENT__PROPERTIES));
-		public static final /*@NonNull*/ ExecutorProperty _Property__base_Property = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY__BASE_PROPERTY, Types._Property, 4);
+		public static final /*@NonNull*/ ExecutorProperty _Property__base_Property = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY__BASE_PROPERTY, Types._Property, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Property__Component__configProperty = new ExecutorPropertyWithImplementation("Component", Types._Property, 1, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT__CONFIG_PROPERTY));
+		public static final /*@NonNull*/ ExecutorProperty _Property__ComponentAssembly__assemblyProperty = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._Property, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__ASSEMBLY_PROPERTY));
+		public static final /*@NonNull*/ ExecutorProperty _Property__PropertyConnector__connectedProperty = new ExecutorPropertyWithImplementation("PropertyConnector", Types._Property, 3, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__CONNECTED_PROPERTY));
+		public static final /*@NonNull*/ ExecutorProperty _Property__Requirement__properties = new ExecutorPropertyWithImplementation("Requirement", Types._Property, 4, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.REQUIREMENT__PROPERTIES));
 
-		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__ComponentAssembly = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._PropertyConnector, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PROPERTY_CONNECTOR));
-		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__base_Connector = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__BASE_CONNECTOR, Types._PropertyConnector, 1);
-		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__connectedProperty = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__CONNECTED_PROPERTY, Types._PropertyConnector, 2);
-		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__label = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__LABEL, Types._PropertyConnector, 3);
+		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__base_Connector = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__BASE_CONNECTOR, Types._PropertyConnector, 0);
+		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__connectedProperty = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__CONNECTED_PROPERTY, Types._PropertyConnector, 1);
+		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__label = new EcoreExecutorProperty(ComponentsPackage.Literals.PROPERTY_CONNECTOR__LABEL, Types._PropertyConnector, 2);
+		public static final /*@NonNull*/ ExecutorProperty _PropertyConnector__ComponentAssembly__ownedPropertyConnector = new ExecutorPropertyWithImplementation("ComponentAssembly", Types._PropertyConnector, 3, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_ASSEMBLY__OWNED_PROPERTY_CONNECTOR));
 
-		public static final /*@NonNull*/ ExecutorProperty _Requirement__ComponentImplementation = new ExecutorPropertyWithImplementation("ComponentImplementation", Types._Requirement, 0, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__DEPLOY_REQUIREMENT));
-		public static final /*@NonNull*/ ExecutorProperty _Requirement__properties = new EcoreExecutorProperty(ComponentsPackage.Literals.REQUIREMENT__PROPERTIES, Types._Requirement, 1);
-		public static final /*@NonNull*/ ExecutorProperty _Requirement__resourceType = new EcoreExecutorProperty(ComponentsPackage.Literals.REQUIREMENT__RESOURCE_TYPE, Types._Requirement, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Requirement__properties = new EcoreExecutorProperty(ComponentsPackage.Literals.REQUIREMENT__PROPERTIES, Types._Requirement, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Requirement__resourceType = new EcoreExecutorProperty(ComponentsPackage.Literals.REQUIREMENT__RESOURCE_TYPE, Types._Requirement, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Requirement__ComponentImplementation__deployRequirement = new ExecutorPropertyWithImplementation("ComponentImplementation", Types._Requirement, 2, new EcoreLibraryOppositeProperty(ComponentsPackage.Literals.COMPONENT_IMPLEMENTATION__DEPLOY_REQUIREMENT));
+
+		/*
+		 * Force initialization.
+		 */
+		public static void init() {
+			Types.init();
+		}
 	}
 
 	/**
@@ -362,7 +386,10 @@
 		/**
 		 *	Install the fragment descriptors in the class descriptors.
 		 */
-		static {
+		public static void init() {
+			Fragments.init();
+			Properties.init();
+
 			Types._Capability.initFragments(_Capability, __Capability);
 			Types._Component.initFragments(_Component, __Component);
 			Types._ComponentAssembly.initFragments(_ComponentAssembly, __ComponentAssembly);
@@ -375,8 +402,6 @@
 			Types._PropertyConnector.initFragments(_PropertyConnector, __PropertyConnector);
 			Types._Requirement.initFragments(_Requirement, __Requirement);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -641,7 +666,9 @@
 		/*
 		 *	Install the operation descriptors in the fragment descriptors.
 		 */
-		static {
+		public static void init() {
+			TypeFragments.init();
+
 			Fragments._Capability__Capability.initOperations(_Capability__Capability);
 			Fragments._Capability__OclAny.initOperations(_Capability__OclAny);
 			Fragments._Capability__OclElement.initOperations(_Capability__OclElement);
@@ -688,8 +715,6 @@
 			Fragments._Requirement__OclElement.initOperations(_Requirement__OclElement);
 			Fragments._Requirement__Requirement.initOperations(_Requirement__Requirement);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -697,23 +722,22 @@
 	 */
 	public static class FragmentProperties {
 		private static final /*@NonNull*/ ExecutorProperty[] _Capability = {
-			ComponentsTables.Properties._Capability__ComponentImplementation,
 			ComponentsTables.Properties._Capability__name,
-			ComponentsTables.Properties._Capability__resourceType
+			ComponentsTables.Properties._Capability__resourceType,
+			ComponentsTables.Properties._Capability__ComponentImplementation__capability
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Component = {
-			ComponentsTables.Properties._Component__ComponentAssembly,
 			ComponentsTables.Properties._Component__UUID,
 			ComponentsTables.Properties._Component__base_Component,
 			ComponentsTables.Properties._Component__configProperty,
 			ComponentsTables.Properties._Component__implementation,
 			ComponentsTables.Properties._Component__label,
-			ComponentsTables.Properties._Component__ownedPort
+			ComponentsTables.Properties._Component__ownedPort,
+			ComponentsTables.Properties._Component__ComponentAssembly__containedComponent
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _ComponentAssembly = {
-			ComponentsTables.Properties._ComponentImplementation__Component,
 			ComponentsTables.Properties._ComponentAssembly__assemblyProperty,
 			ComponentsTables.Properties._ComponentImplementation__base_Class,
 			ComponentsTables.Properties._ComponentImplementation__capability,
@@ -721,33 +745,31 @@
 			ComponentsTables.Properties._ComponentImplementation__deployRequirement,
 			ComponentsTables.Properties._ComponentAssembly__externalPort,
 			ComponentsTables.Properties._ComponentAssembly__ownedPortConnector,
-			ComponentsTables.Properties._ComponentAssembly__ownedPropertyConnector
+			ComponentsTables.Properties._ComponentAssembly__ownedPropertyConnector,
+			ComponentsTables.Properties._ComponentImplementation__Component__implementation
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _ComponentImplementation = {
-			ComponentsTables.Properties._ComponentImplementation__Component,
 			ComponentsTables.Properties._ComponentImplementation__base_Class,
 			ComponentsTables.Properties._ComponentImplementation__capability,
-			ComponentsTables.Properties._ComponentImplementation__deployRequirement
+			ComponentsTables.Properties._ComponentImplementation__deployRequirement,
+			ComponentsTables.Properties._ComponentImplementation__Component__implementation
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _ExternalReference = {
-			ComponentsTables.Properties._ExternalReference__PortConnector,
 			ComponentsTables.Properties._ExternalReference__base_ConnectableElement,
-			ComponentsTables.Properties._ExternalReference__location
+			ComponentsTables.Properties._ExternalReference__location,
+			ComponentsTables.Properties._ExternalReference__PortConnector__externalReference
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _MonolithicImplementation = {
-			ComponentsTables.Properties._ComponentImplementation__Component,
 			ComponentsTables.Properties._ComponentImplementation__base_Class,
 			ComponentsTables.Properties._ComponentImplementation__capability,
-			ComponentsTables.Properties._ComponentImplementation__deployRequirement
+			ComponentsTables.Properties._ComponentImplementation__deployRequirement,
+			ComponentsTables.Properties._ComponentImplementation__Component__implementation
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Port = {
-			ComponentsTables.Properties._Port__Component,
-			ComponentsTables.Properties._Port__ComponentAssembly,
-			ComponentsTables.Properties._Port__PortConnector,
 			ComponentsTables.Properties._Port__UUID,
 			ComponentsTables.Properties._Port__base_Port,
 			ComponentsTables.Properties._Port__exclusiveProvider,
@@ -755,42 +777,47 @@
 			ComponentsTables.Properties._Port__name,
 			ComponentsTables.Properties._Port__optional,
 			ComponentsTables.Properties._Port__provider,
-			ComponentsTables.Properties._Port__supportedType
+			ComponentsTables.Properties._Port__supportedType,
+			ComponentsTables.Properties._Port__Component__ownedPort,
+			ComponentsTables.Properties._Port__ComponentAssembly__externalPort,
+			ComponentsTables.Properties._Port__PortConnector__connectedPort
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _PortConnector = {
-			ComponentsTables.Properties._PortConnector__ComponentAssembly,
 			ComponentsTables.Properties._PortConnector__base_Connector,
 			ComponentsTables.Properties._PortConnector__connectedPort,
 			ComponentsTables.Properties._PortConnector__externalReference,
-			ComponentsTables.Properties._PortConnector__label
+			ComponentsTables.Properties._PortConnector__label,
+			ComponentsTables.Properties._PortConnector__ComponentAssembly__ownedPortConnector
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Property = {
-			ComponentsTables.Properties._Property__Component,
-			ComponentsTables.Properties._Property__ComponentAssembly,
-			ComponentsTables.Properties._Property__PropertyConnector,
-			ComponentsTables.Properties._Property__Requirement,
-			ComponentsTables.Properties._Property__base_Property
+			ComponentsTables.Properties._Property__base_Property,
+			ComponentsTables.Properties._Property__Component__configProperty,
+			ComponentsTables.Properties._Property__ComponentAssembly__assemblyProperty,
+			ComponentsTables.Properties._Property__PropertyConnector__connectedProperty,
+			ComponentsTables.Properties._Property__Requirement__properties
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _PropertyConnector = {
-			ComponentsTables.Properties._PropertyConnector__ComponentAssembly,
 			ComponentsTables.Properties._PropertyConnector__base_Connector,
 			ComponentsTables.Properties._PropertyConnector__connectedProperty,
-			ComponentsTables.Properties._PropertyConnector__label
+			ComponentsTables.Properties._PropertyConnector__label,
+			ComponentsTables.Properties._PropertyConnector__ComponentAssembly__ownedPropertyConnector
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Requirement = {
-			ComponentsTables.Properties._Requirement__ComponentImplementation,
 			ComponentsTables.Properties._Requirement__properties,
-			ComponentsTables.Properties._Requirement__resourceType
+			ComponentsTables.Properties._Requirement__resourceType,
+			ComponentsTables.Properties._Requirement__ComponentImplementation__deployRequirement
 		};
 
 		/**
 		 *	Install the property descriptors in the fragment descriptors.
 		 */
-		static {
+		public static void init() {
+			TypeFragments.init();
+
 			Fragments._Capability__Capability.initProperties(_Capability);
 			Fragments._Component__Component.initProperties(_Component);
 			Fragments._ComponentAssembly__ComponentAssembly.initProperties(_ComponentAssembly);
@@ -803,8 +830,6 @@
 			Fragments._PropertyConnector__PropertyConnector.initProperties(_PropertyConnector);
 			Fragments._Requirement__Requirement.initProperties(_Requirement);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -820,7 +845,10 @@
 		public static void init() {}
 	}
 
+	/*
+	 * Force initialization.
+	 */
 	static {
-		Types.types[0].getClass();
+		Types.init();
 	}
 }
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentAssemblyImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentAssemblyImpl.java
index cc7aff5..cc2103b 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentAssemblyImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentAssemblyImpl.java
@@ -12,15 +12,14 @@
 package org.eclipse.upr.depl.components.impl;
 
 import java.util.Collection;
-
 import java.util.Iterator;
 import java.util.List;
+
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
@@ -28,18 +27,30 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.ocl.examples.domain.elements.DomainType;
+
 import org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator;
+
 import org.eclipse.ocl.examples.domain.types.IdResolver;
+
+import org.eclipse.ocl.examples.domain.utilities.DomainUtil;
+
 import org.eclipse.ocl.examples.domain.values.BagValue;
 import org.eclipse.ocl.examples.domain.values.SetValue;
+
 import org.eclipse.ocl.examples.domain.values.impl.InvalidValueException;
+
 import org.eclipse.ocl.examples.domain.values.util.ValuesUtil;
+
 import org.eclipse.ocl.examples.library.classifier.ClassifierAllInstancesOperation;
+
 import org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation;
 import org.eclipse.ocl.examples.library.collection.CollectionIncludesOperation;
-import org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager;
+
+import org.eclipse.ocl.examples.pivot.utilities.PivotUtil;
+
 import org.eclipse.upr.depl.components.Component;
 import org.eclipse.upr.depl.components.ComponentAssembly;
+import org.eclipse.upr.depl.components.ComponentImplementation;
 import org.eclipse.upr.depl.components.ComponentsPackage;
 import org.eclipse.upr.depl.components.ComponentsTables;
 import org.eclipse.upr.depl.components.Port;
@@ -143,7 +154,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	public EList<Property> getAssemblyProperty() {
 		/**
 		 * 
@@ -151,12 +161,11 @@
 		 * ->select(c | c.implementation->includes(self))
 		 * .configProperty->flatten()
 		 */
-		final /*@NonNull*/ /*@NonInvalid*/ ComponentAssembly self = this;
-		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = new EcoreExecutorManager(this, ComponentsTables.LIBRARY);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = PivotUtil.getEvaluator(this);
 		final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = evaluator.getIdResolver();
-		final /*@NonNull*/ /*@NonInvalid*/ DomainType TYP_UMLProfileForDC_c_c_components_c_c_Component = idResolver.getType(ComponentsTables.CLSSid_Component_0, null);
-		final /*@NonNull*/ /*@Thrown*/ SetValue allInstances = ClassifierAllInstancesOperation.INSTANCE.evaluate(evaluator, ComponentsTables.SET_CLSSid_Component, TYP_UMLProfileForDC_c_c_components_c_c_Component);
-		/*@NonNull*/ /*@NonInvalid*/ SetValue.Accumulator accumulator = ValuesUtil.createSetAccumulatorValue(ComponentsTables.SET_CLSSid_Component);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainType TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0 = idResolver.getType(ComponentsTables.CLSSid_Component_0, null);
+		final /*@NonNull*/ /*@Thrown*/ SetValue allInstances = DomainUtil.nonNullState(ClassifierAllInstancesOperation.INSTANCE.evaluate(evaluator, ComponentsTables.SET_CLSSid_Component, TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0));
+		/*@NonNull*/ /*@Thrown*/ SetValue.Accumulator accumulator = ValuesUtil.createSetAccumulatorValue(ComponentsTables.SET_CLSSid_Component);
 		/*@Nullable*/ Iterator<?> ITERATOR_c = allInstances.iterator();
 		/*@NonNull*/ /*@Thrown*/ SetValue select;
 		while (true) {
@@ -169,17 +178,17 @@
 		     * c.implementation->includes(self)
 		     */
 		    if (c == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Components::Component::implementation\'");
 		    }
-		    final /*@NonNull*/ /*@Thrown*/ List<?> implementation = c.getImplementation();
+		    final /*@NonNull*/ /*@Thrown*/ List<ComponentImplementation> implementation = c.getImplementation();
 		    final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_implementation = idResolver.createSetOfAll(ComponentsTables.SET_CLSSid_ComponentImplementation, implementation);
-		    final /*@NonNull*/ /*@Thrown*/ Boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(BOXED_implementation, self);
+		    final /*@Thrown*/ boolean includes = DomainUtil.nonNullState(CollectionIncludesOperation.INSTANCE.evaluate(BOXED_implementation, this).booleanValue());
 		    //
 		    if (includes == ValuesUtil.TRUE_VALUE) {
 		        accumulator.add(c);
 		    }
 		}
-		/*@NonNull*/ /*@NonInvalid*/ BagValue.Accumulator accumulator_0 = ValuesUtil.createBagAccumulatorValue(ComponentsTables.BAG_CLSSid_Property);
+		/*@NonNull*/ /*@Thrown*/ BagValue.Accumulator accumulator_0 = ValuesUtil.createBagAccumulatorValue(ComponentsTables.BAG_CLSSid_Property);
 		/*@Nullable*/ Iterator<?> ITERATOR__1 = select.iterator();
 		/*@NonNull*/ /*@Thrown*/ BagValue collect;
 		while (true) {
@@ -192,17 +201,18 @@
 		     * configProperty
 		     */
 		    if (_1 == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Components::Component::configProperty\'");
 		    }
-		    final /*@NonNull*/ /*@Thrown*/ List<?> configProperty = _1.getConfigProperty();
+		    final /*@NonNull*/ /*@Thrown*/ List<Property> configProperty = _1.getConfigProperty();
 		    final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_configProperty = idResolver.createSetOfAll(ComponentsTables.SET_CLSSid_Property, configProperty);
 		    //
 		    for (Object value : BOXED_configProperty.flatten().getElements()) {
 		        accumulator_0.add(value);
 		    }
 		}
-		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = (BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect);
-		final /*@NonNull*/ /*@Thrown*/ List<?> UNBOXED_flatten = flatten.asEcoreObject();
+		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = DomainUtil.nonNullState((BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect));
+		final List<Property> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.components.Property.class);
+		assert UNBOXED_flatten != null;
 		return (EList<Property>)UNBOXED_flatten;
 	}
 
@@ -211,7 +221,6 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	public EList<Port> getExternalPort() {
 		/**
 		 * 
@@ -219,12 +228,11 @@
 		 * ->select(c | c.implementation->includes(self))
 		 * .ownedPort->flatten()
 		 */
-		final /*@NonNull*/ /*@NonInvalid*/ ComponentAssembly self = this;
-		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = new EcoreExecutorManager(this, ComponentsTables.LIBRARY);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = PivotUtil.getEvaluator(this);
 		final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = evaluator.getIdResolver();
-		final /*@NonNull*/ /*@NonInvalid*/ DomainType TYP_UMLProfileForDC_c_c_components_c_c_Component = idResolver.getType(ComponentsTables.CLSSid_Component_0, null);
-		final /*@NonNull*/ /*@Thrown*/ SetValue allInstances = ClassifierAllInstancesOperation.INSTANCE.evaluate(evaluator, ComponentsTables.SET_CLSSid_Component, TYP_UMLProfileForDC_c_c_components_c_c_Component);
-		/*@NonNull*/ /*@NonInvalid*/ SetValue.Accumulator accumulator = ValuesUtil.createSetAccumulatorValue(ComponentsTables.SET_CLSSid_Component);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainType TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0 = idResolver.getType(ComponentsTables.CLSSid_Component_0, null);
+		final /*@NonNull*/ /*@Thrown*/ SetValue allInstances = DomainUtil.nonNullState(ClassifierAllInstancesOperation.INSTANCE.evaluate(evaluator, ComponentsTables.SET_CLSSid_Component, TYP_UMLProfileForD_38_C_c_c_Components_c_c_Component_0));
+		/*@NonNull*/ /*@Thrown*/ SetValue.Accumulator accumulator = ValuesUtil.createSetAccumulatorValue(ComponentsTables.SET_CLSSid_Component);
 		/*@Nullable*/ Iterator<?> ITERATOR_c = allInstances.iterator();
 		/*@NonNull*/ /*@Thrown*/ SetValue select;
 		while (true) {
@@ -237,17 +245,17 @@
 		     * c.implementation->includes(self)
 		     */
 		    if (c == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Components::Component::implementation\'");
 		    }
-		    final /*@NonNull*/ /*@Thrown*/ List<?> implementation = c.getImplementation();
+		    final /*@NonNull*/ /*@Thrown*/ List<ComponentImplementation> implementation = c.getImplementation();
 		    final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_implementation = idResolver.createSetOfAll(ComponentsTables.SET_CLSSid_ComponentImplementation, implementation);
-		    final /*@NonNull*/ /*@Thrown*/ Boolean includes = CollectionIncludesOperation.INSTANCE.evaluate(BOXED_implementation, self);
+		    final /*@Thrown*/ boolean includes = DomainUtil.nonNullState(CollectionIncludesOperation.INSTANCE.evaluate(BOXED_implementation, this).booleanValue());
 		    //
 		    if (includes == ValuesUtil.TRUE_VALUE) {
 		        accumulator.add(c);
 		    }
 		}
-		/*@NonNull*/ /*@NonInvalid*/ BagValue.Accumulator accumulator_0 = ValuesUtil.createBagAccumulatorValue(ComponentsTables.BAG_CLSSid_Port);
+		/*@NonNull*/ /*@Thrown*/ BagValue.Accumulator accumulator_0 = ValuesUtil.createBagAccumulatorValue(ComponentsTables.BAG_CLSSid_Port);
 		/*@Nullable*/ Iterator<?> ITERATOR__1 = select.iterator();
 		/*@NonNull*/ /*@Thrown*/ BagValue collect;
 		while (true) {
@@ -260,17 +268,18 @@
 		     * ownedPort
 		     */
 		    if (_1 == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Components::Component::ownedPort\'");
 		    }
-		    final /*@NonNull*/ /*@Thrown*/ List<?> ownedPort = _1.getOwnedPort();
+		    final /*@NonNull*/ /*@Thrown*/ List<Port> ownedPort = _1.getOwnedPort();
 		    final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_ownedPort = idResolver.createSetOfAll(ComponentsTables.SET_CLSSid_Port, ownedPort);
 		    //
 		    for (Object value : BOXED_ownedPort.flatten().getElements()) {
 		        accumulator_0.add(value);
 		    }
 		}
-		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = (BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect);
-		final /*@NonNull*/ /*@Thrown*/ List<?> UNBOXED_flatten = flatten.asEcoreObject();
+		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = DomainUtil.nonNullState((BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect));
+		final List<Port> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.components.Port.class);
+		assert UNBOXED_flatten != null;
 		return (EList<Port>)UNBOXED_flatten;
 	}
 
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentsPackageImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentsPackageImpl.java
index 68ce566..ce03fa0 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentsPackageImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/impl/ComponentsPackageImpl.java
@@ -801,23 +801,41 @@
 		createResource(eNS_URI);
 
 		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
 		// http://www.eclipse.org/emf/2002/Ecore
 		createEcoreAnnotations();
 	}
 
 	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "originalName", "Components"
+		   });
+	}
+
+	/**
 	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void createEcoreAnnotations() {
-		String source = "http://www.eclipse.org/emf/2002/Ecore";		
+		String source = "http://www.eclipse.org/emf/2002/Ecore";	
 		addAnnotation
 		  (this, 
 		   source, 
 		   new String[] {
-		   });																																															
+		   });
 	}
 
 } //ComponentsPackageImpl
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/util/ComponentsResourceFactoryImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/util/ComponentsResourceFactoryImpl.java
index 4776fd0..911f06c 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/util/ComponentsResourceFactoryImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/components/util/ComponentsResourceFactoryImpl.java
@@ -46,15 +46,6 @@
 	@Override
 	public Resource createResource(URI uri) {
 		XMLResource result = new ComponentsResourceImpl(uri);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
 		return result;
 	}
 
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/CommunicationPath.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/CommunicationPath.java
index c8c7174..1cfbeda 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/CommunicationPath.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/CommunicationPath.java
@@ -118,7 +118,7 @@
 	 * @see org.eclipse.upr.depl.target.TargetPackage#getCommunicationPath_ConnectedNode()
 	 * @see org.eclipse.upr.depl.target.Node#getCommunicationPath
 	 * @model opposite="communicationPath" required="true" transient="true" volatile="true" derived="true" ordered="false"
-	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * self.interconnect.connectedNode->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.CommunicationPath%> self = this;\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = new <%org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager%>(this, <%org.eclipse.upr.depl.target.TargetTables%>.LIBRARY);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> interconnect = self.getInterconnect();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_interconnect = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Interconnect, interconnect);\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.target.TargetTables%>.BAG_CLSSid_Node);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = BOXED_interconnect.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.Interconnect%> _1 = (<%org.eclipse.upr.depl.target.Interconnect%>)ITERATOR__1.next();\n    /**\n     * connectedNode\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> connectedNode = _1.getConnectedNode();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_connectedNode = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Node, connectedNode);\n    //\n    for (Object value : BOXED_connectedNode.flatten().getElements()) {\n        accumulator.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = (<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> UNBOXED_flatten = flatten.asEcoreObject();\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.target.Node>%>)UNBOXED_flatten;'"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * self.interconnect.connectedNode->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = <%org.eclipse.ocl.examples.pivot.utilities.PivotUtil%>.getEvaluator(this);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.target.Interconnect%>> interconnect = this.getInterconnect();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_interconnect = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Interconnect, interconnect);\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.target.TargetTables%>.BAG_CLSSid_Node);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = BOXED_interconnect.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.Interconnect%> _1 = (<%org.eclipse.upr.depl.target.Interconnect%>)ITERATOR__1.next();\n    /**\n     * connectedNode\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Target::Interconnect::connectedNode\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.target.Node%>> connectedNode = _1.getConnectedNode();\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_connectedNode = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Node, connectedNode);\n    //\n    for (Object value : BOXED_connectedNode.flatten().getElements()) {\n        accumulator.add(value);\n    }\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState((<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect));\nfinal <%java.util.List%><<%org.eclipse.upr.depl.target.Node%>> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.target.Node.class);\nassert UNBOXED_flatten != null;\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.target.Node>%>)UNBOXED_flatten;'"
 	 * @generated
 	 */
 	EList<Node> getConnectedNode();
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/Node.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/Node.java
index 4b495c2..119c94d 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/Node.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/Node.java
@@ -108,7 +108,7 @@
 	 * @see org.eclipse.upr.depl.target.TargetPackage#getNode_CommunicationPath()
 	 * @see org.eclipse.upr.depl.target.CommunicationPath#getConnectedNode
 	 * @model opposite="connectedNode" transient="true" volatile="true" derived="true" ordered="false"
-	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * self.nodeConnector.communicationPath->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.Node%> self = this;\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = new <%org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager%>(this, <%org.eclipse.upr.depl.target.TargetTables%>.LIBRARY);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> nodeConnector = self.getNodeConnector();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_nodeConnector = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Interconnect, nodeConnector);\n/*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.target.TargetTables%>.BAG_CLSSid_CommunicationPath);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = BOXED_nodeConnector.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.Interconnect%> _1 = (<%org.eclipse.upr.depl.target.Interconnect%>)ITERATOR__1.next();\n    /**\n     * communicationPath\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.upr.depl.target.CommunicationPath%> communicationPath = _1.getCommunicationPath();\n    //\n    accumulator.add(communicationPath);\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = (<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect);\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><?> UNBOXED_flatten = flatten.asEcoreObject();\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.target.CommunicationPath>%>)UNBOXED_flatten;'"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel get='/**\n * self.nodeConnector.communicationPath->flatten()\n \052/\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator%> evaluator = <%org.eclipse.ocl.examples.pivot.utilities.PivotUtil%>.getEvaluator(this);\nfinal /*@NonNull\052/ /*@NonInvalid\052/ <%org.eclipse.ocl.examples.domain.types.IdResolver%> idResolver = evaluator.getIdResolver();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%java.util.List%><<%org.eclipse.upr.depl.target.Interconnect%>> nodeConnector = this.getNodeConnector();\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.SetValue%> BOXED_nodeConnector = idResolver.createSetOfAll(<%org.eclipse.upr.depl.target.TargetTables%>.SET_CLSSid_Interconnect, nodeConnector);\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%>.Accumulator accumulator = <%org.eclipse.ocl.examples.domain.values.util.ValuesUtil%>.createBagAccumulatorValue(<%org.eclipse.upr.depl.target.TargetTables%>.BAG_CLSSid_CommunicationPath);\n/*@Nullable\052/ <%java.util.Iterator%><?> ITERATOR__1 = BOXED_nodeConnector.iterator();\n/*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> collect;\nwhile (true) {\n    if (!ITERATOR__1.hasNext()) {\n        collect = accumulator;\n        break;\n    }\n    /*@Nullable\052/ /*@NonInvalid\052/ <%org.eclipse.upr.depl.target.Interconnect%> _1 = (<%org.eclipse.upr.depl.target.Interconnect%>)ITERATOR__1.next();\n    /**\n     * communicationPath\n     \052/\n    if (_1 == null) {\n        throw new <%org.eclipse.ocl.examples.domain.values.impl.InvalidValueException%>(\"Null source for \\\'UMLProfileForD&C::Target::Interconnect::communicationPath\\\'\");\n    }\n    final /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.upr.depl.target.CommunicationPath%> communicationPath = _1.getCommunicationPath();\n    //\n    accumulator.add(communicationPath);\n}\nfinal /*@NonNull\052/ /*@Thrown\052/ <%org.eclipse.ocl.examples.domain.values.BagValue%> flatten = <%org.eclipse.ocl.examples.domain.utilities.DomainUtil%>.nonNullState((<%org.eclipse.ocl.examples.domain.values.BagValue%>)<%org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation%>.INSTANCE.evaluate(collect));\nfinal <%java.util.List%><<%org.eclipse.upr.depl.target.CommunicationPath%>> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.target.CommunicationPath.class);\nassert UNBOXED_flatten != null;\nreturn (<%org.eclipse.emf.common.util.EList<org.eclipse.upr.depl.target.CommunicationPath>%>)UNBOXED_flatten;'"
 	 * @generated
 	 */
 	EList<CommunicationPath> getCommunicationPath();
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetPackage.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetPackage.java
index e309a7e..f1e2394 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetPackage.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetPackage.java
@@ -29,6 +29,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.upr.depl.target.TargetFactory
  * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Target'"
  * @generated
  */
 public interface TargetPackage extends EPackage {
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetTables.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetTables.java
index 5503217..c117a6d 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetTables.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/TargetTables.java
@@ -1,4 +1,4 @@
-/**
+/*******************************************************************************
  * Copyright (c) 2014 Fraunhofer FOKUS
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -10,11 +10,13 @@
  * Marc-Florian Wendland
  *************************************************************************
  * This code is 100% auto-generated
- * from: target
- * using: org.eclipse.ocl.examples.codegen.oclinecore.OCLinEcoreTables
+ * from:
+ * using:
+ *   platform:/resource/org.eclipse.upr.depl/model/depl.profile.genmodel
+ *   org.eclipse.ocl.examples.codegen.oclinecore.OCLinEcoreTables
  *
  * Do not edit it.
- */
+ *******************************************************************************/
 package org.eclipse.upr.depl.target;
 
 import org.eclipse.ocl.examples.domain.ids.ClassId;
@@ -37,7 +39,7 @@
 import org.eclipse.upr.depl.target.TargetTables;
 
 /**
- * TargetTables provides the dispatch tables for the target for use by the OCL dispatcher.
+ * TargetTables provides the dispatch tables for the Target for use by the OCL dispatcher.
  *
  * In order to ensure correct static initialization, a top level class element must be accessed
  * before any nested class element. Therefore an access to PACKAGE.getClass() is recommended.
@@ -48,7 +50,7 @@
 	/**
 	 *	The package descriptor for the package.
 	 */
-	public static final /*@NonNull*/ EcoreExecutorPackage PACKAGE = new EcoreExecutorPackage(TargetPackage.eINSTANCE);
+	public static final /*@NonNull*/ EcoreExecutorPackage PACKAGE = new EcoreExecutorPackage(TargetPackage.eINSTANCE, null);
 
 	/**
 	 *	The library of all packages and types.
@@ -58,24 +60,24 @@
 	/**
 	 *	Constants used by auto-generated code.
 	 */
-    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML = IdManager.getNsURIPackageId("http://www.eclipse.org/uml2/4.0.0/UML", UMLPackage.eINSTANCE);
-    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0 = IdManager.getNsURIPackageId("http://www.omg.org/spec/DEPL/4.0/profile/target/1.0", TargetPackage.eINSTANCE);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_AssociationClass = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("AssociationClass", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML = IdManager.getNsURIPackageId("http://www.eclipse.org/uml2/5.0.0/UML", null, UMLPackage.eINSTANCE);
+    public static final /*@NonNull*/ /*@NonInvalid*/ NsURIPackageId PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0 = IdManager.getNsURIPackageId("http://www.omg.org/spec/DEPL/4.0/profile/target/1.0", null, TargetPackage.eINSTANCE);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_AssociationClass = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("AssociationClass", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Bridge = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("Bridge", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Class", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_CommunicationPath = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("CommunicationPath", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Class = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Class", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_CommunicationPath = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("CommunicationPath", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_CommunicationPath_0 = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("CommunicationPath", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Domain = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("Domain", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Interconnect = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("Interconnect", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Node = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("Node", 0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Node_0 = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_4_0_0_s_UML.getClassId("Node", 0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Node_0 = TargetTables.PACKid_http_c_s_s_www_eclipse_org_s_uml2_s_5_0_0_s_UML.getClassId("Node", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_Resource = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("Resource", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ ClassId CLSSid_SharedResource = TargetTables.PACKid_http_c_s_s_www_omg_org_s_spec_s_DEPL_s_4_0_s_profile_s_target_s_1_0.getClassId("SharedResource", 0);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_CommunicationPath = TypeId.BAG.getSpecializedId(TargetTables.CLSSid_CommunicationPath_0);
+    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_Domain = TypeId.BAG.getSpecializedId(TargetTables.CLSSid_Domain);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId BAG_CLSSid_Node = TypeId.BAG.getSpecializedId(TargetTables.CLSSid_Node);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Bridge = TypeId.SET.getSpecializedId(TargetTables.CLSSid_Bridge);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_CommunicationPath = TypeId.SET.getSpecializedId(TargetTables.CLSSid_CommunicationPath_0);
-    public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Domain = TypeId.SET.getSpecializedId(TargetTables.CLSSid_Domain);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Interconnect = TypeId.SET.getSpecializedId(TargetTables.CLSSid_Interconnect);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Node = TypeId.SET.getSpecializedId(TargetTables.CLSSid_Node);
     public static final /*@NonNull*/ /*@NonInvalid*/ CollectionTypeId SET_CLSSid_Resource = TypeId.SET.getSpecializedId(TargetTables.CLSSid_Resource);
@@ -117,40 +119,49 @@
 			FragmentOperations.init();
 			FragmentProperties.init();
 		}
+
+		public static void init() {}
 	}
 
 	/**
 	 *	The fragment descriptors for the local elements of each type and its supertypes.
 	 */
 	public static class Fragments {
-		public static final /*@NonNull*/ ExecutorFragment _Bridge__Bridge = new ExecutorFragment(Types._Bridge, TargetTables.Types._Bridge);
-		public static final /*@NonNull*/ ExecutorFragment _Bridge__OclAny = new ExecutorFragment(Types._Bridge, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Bridge__OclElement = new ExecutorFragment(Types._Bridge, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Bridge__Bridge = new ExecutorFragment(Types._Bridge, TargetTables.Types._Bridge);
+		private static final /*@NonNull*/ ExecutorFragment _Bridge__OclAny = new ExecutorFragment(Types._Bridge, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Bridge__OclElement = new ExecutorFragment(Types._Bridge, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _CommunicationPath__CommunicationPath = new ExecutorFragment(Types._CommunicationPath, TargetTables.Types._CommunicationPath);
-		public static final /*@NonNull*/ ExecutorFragment _CommunicationPath__OclAny = new ExecutorFragment(Types._CommunicationPath, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _CommunicationPath__OclElement = new ExecutorFragment(Types._CommunicationPath, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _CommunicationPath__CommunicationPath = new ExecutorFragment(Types._CommunicationPath, TargetTables.Types._CommunicationPath);
+		private static final /*@NonNull*/ ExecutorFragment _CommunicationPath__OclAny = new ExecutorFragment(Types._CommunicationPath, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _CommunicationPath__OclElement = new ExecutorFragment(Types._CommunicationPath, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Domain__Domain = new ExecutorFragment(Types._Domain, TargetTables.Types._Domain);
-		public static final /*@NonNull*/ ExecutorFragment _Domain__OclAny = new ExecutorFragment(Types._Domain, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Domain__OclElement = new ExecutorFragment(Types._Domain, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Domain__Domain = new ExecutorFragment(Types._Domain, TargetTables.Types._Domain);
+		private static final /*@NonNull*/ ExecutorFragment _Domain__OclAny = new ExecutorFragment(Types._Domain, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Domain__OclElement = new ExecutorFragment(Types._Domain, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Interconnect__Interconnect = new ExecutorFragment(Types._Interconnect, TargetTables.Types._Interconnect);
-		public static final /*@NonNull*/ ExecutorFragment _Interconnect__OclAny = new ExecutorFragment(Types._Interconnect, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Interconnect__OclElement = new ExecutorFragment(Types._Interconnect, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Interconnect__Interconnect = new ExecutorFragment(Types._Interconnect, TargetTables.Types._Interconnect);
+		private static final /*@NonNull*/ ExecutorFragment _Interconnect__OclAny = new ExecutorFragment(Types._Interconnect, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Interconnect__OclElement = new ExecutorFragment(Types._Interconnect, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Node__Node = new ExecutorFragment(Types._Node, TargetTables.Types._Node);
-		public static final /*@NonNull*/ ExecutorFragment _Node__OclAny = new ExecutorFragment(Types._Node, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Node__OclElement = new ExecutorFragment(Types._Node, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Node__Node = new ExecutorFragment(Types._Node, TargetTables.Types._Node);
+		private static final /*@NonNull*/ ExecutorFragment _Node__OclAny = new ExecutorFragment(Types._Node, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Node__OclElement = new ExecutorFragment(Types._Node, OCLstdlibTables.Types._OclElement);
 
-		public static final /*@NonNull*/ ExecutorFragment _Resource__OclAny = new ExecutorFragment(Types._Resource, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _Resource__OclElement = new ExecutorFragment(Types._Resource, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _Resource__Resource = new ExecutorFragment(Types._Resource, TargetTables.Types._Resource);
+		private static final /*@NonNull*/ ExecutorFragment _Resource__OclAny = new ExecutorFragment(Types._Resource, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _Resource__OclElement = new ExecutorFragment(Types._Resource, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _Resource__Resource = new ExecutorFragment(Types._Resource, TargetTables.Types._Resource);
 
-		public static final /*@NonNull*/ ExecutorFragment _SharedResource__OclAny = new ExecutorFragment(Types._SharedResource, OCLstdlibTables.Types._OclAny);
-		public static final /*@NonNull*/ ExecutorFragment _SharedResource__OclElement = new ExecutorFragment(Types._SharedResource, OCLstdlibTables.Types._OclElement);
-		public static final /*@NonNull*/ ExecutorFragment _SharedResource__Resource = new ExecutorFragment(Types._SharedResource, TargetTables.Types._Resource);
-		public static final /*@NonNull*/ ExecutorFragment _SharedResource__SharedResource = new ExecutorFragment(Types._SharedResource, TargetTables.Types._SharedResource);
+		private static final /*@NonNull*/ ExecutorFragment _SharedResource__OclAny = new ExecutorFragment(Types._SharedResource, OCLstdlibTables.Types._OclAny);
+		private static final /*@NonNull*/ ExecutorFragment _SharedResource__OclElement = new ExecutorFragment(Types._SharedResource, OCLstdlibTables.Types._OclElement);
+		private static final /*@NonNull*/ ExecutorFragment _SharedResource__Resource = new ExecutorFragment(Types._SharedResource, TargetTables.Types._Resource);
+		private static final /*@NonNull*/ ExecutorFragment _SharedResource__SharedResource = new ExecutorFragment(Types._SharedResource, TargetTables.Types._SharedResource);
+
+		/*
+		 * Force initialization.
+		 */
+		public static void init() {
+			Types.init();
+		}
 	}
 
 	/**
@@ -177,11 +188,11 @@
 		public static final /*@NonNull*/ ExecutorProperty _Bridge__name = new EcoreExecutorProperty(TargetPackage.Literals.BRIDGE__NAME, Types._Bridge, 4);
 		public static final /*@NonNull*/ ExecutorProperty _Bridge__ownedResource = new EcoreExecutorProperty(TargetPackage.Literals.BRIDGE__OWNED_RESOURCE, Types._Bridge, 5);
 
-		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__Domain = new ExecutorPropertyWithImplementation("Domain", Types._CommunicationPath, 0, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__CONTAINED_COMMUNICATION_PATH));
-		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__base_CommunicationPath = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__BASE_COMMUNICATION_PATH, Types._CommunicationPath, 1);
-		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__bridge = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__BRIDGE, Types._CommunicationPath, 2);
-		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__connectedNode = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__CONNECTED_NODE, Types._CommunicationPath, 3);
-		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__interconnect = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__INTERCONNECT, Types._CommunicationPath, 4);
+		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__base_CommunicationPath = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__BASE_COMMUNICATION_PATH, Types._CommunicationPath, 0);
+		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__bridge = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__BRIDGE, Types._CommunicationPath, 1);
+		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__connectedNode = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__CONNECTED_NODE, Types._CommunicationPath, 2);
+		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__interconnect = new EcoreExecutorProperty(TargetPackage.Literals.COMMUNICATION_PATH__INTERCONNECT, Types._CommunicationPath, 3);
+		public static final /*@NonNull*/ ExecutorProperty _CommunicationPath__Domain__containedCommunicationPath = new ExecutorPropertyWithImplementation("Domain", Types._CommunicationPath, 4, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__CONTAINED_COMMUNICATION_PATH));
 
 		public static final /*@NonNull*/ ExecutorProperty _Domain__UUID = new EcoreExecutorProperty(TargetPackage.Literals.DOMAIN__UUID, Types._Domain, 0);
 		public static final /*@NonNull*/ ExecutorProperty _Domain__base_Class = new EcoreExecutorProperty(TargetPackage.Literals.DOMAIN__BASE_CLASS, Types._Domain, 1);
@@ -198,24 +209,31 @@
 		public static final /*@NonNull*/ ExecutorProperty _Interconnect__name = new EcoreExecutorProperty(TargetPackage.Literals.INTERCONNECT__NAME, Types._Interconnect, 5);
 		public static final /*@NonNull*/ ExecutorProperty _Interconnect__ownedResource = new EcoreExecutorProperty(TargetPackage.Literals.INTERCONNECT__OWNED_RESOURCE, Types._Interconnect, 6);
 
-		public static final /*@NonNull*/ ExecutorProperty _Node__Domain = new ExecutorPropertyWithImplementation("Domain", Types._Node, 0, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__CONTAINED_NODE));
-		public static final /*@NonNull*/ ExecutorProperty _Node__availableSharedResource = new EcoreExecutorProperty(TargetPackage.Literals.NODE__AVAILABLE_SHARED_RESOURCE, Types._Node, 1);
-		public static final /*@NonNull*/ ExecutorProperty _Node__base_Node = new EcoreExecutorProperty(TargetPackage.Literals.NODE__BASE_NODE, Types._Node, 2);
-		public static final /*@NonNull*/ ExecutorProperty _Node__communicationPath = new EcoreExecutorProperty(TargetPackage.Literals.NODE__COMMUNICATION_PATH, Types._Node, 3);
-		public static final /*@NonNull*/ ExecutorProperty _Node__label = new EcoreExecutorProperty(TargetPackage.Literals.NODE__LABEL, Types._Node, 4);
-		public static final /*@NonNull*/ ExecutorProperty _Node__name = new EcoreExecutorProperty(TargetPackage.Literals.NODE__NAME, Types._Node, 5);
-		public static final /*@NonNull*/ ExecutorProperty _Node__nodeConnector = new EcoreExecutorProperty(TargetPackage.Literals.NODE__NODE_CONNECTOR, Types._Node, 6);
-		public static final /*@NonNull*/ ExecutorProperty _Node__ownedResource = new EcoreExecutorProperty(TargetPackage.Literals.NODE__OWNED_RESOURCE, Types._Node, 7);
+		public static final /*@NonNull*/ ExecutorProperty _Node__availableSharedResource = new EcoreExecutorProperty(TargetPackage.Literals.NODE__AVAILABLE_SHARED_RESOURCE, Types._Node, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Node__base_Node = new EcoreExecutorProperty(TargetPackage.Literals.NODE__BASE_NODE, Types._Node, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Node__communicationPath = new EcoreExecutorProperty(TargetPackage.Literals.NODE__COMMUNICATION_PATH, Types._Node, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Node__label = new EcoreExecutorProperty(TargetPackage.Literals.NODE__LABEL, Types._Node, 3);
+		public static final /*@NonNull*/ ExecutorProperty _Node__name = new EcoreExecutorProperty(TargetPackage.Literals.NODE__NAME, Types._Node, 4);
+		public static final /*@NonNull*/ ExecutorProperty _Node__nodeConnector = new EcoreExecutorProperty(TargetPackage.Literals.NODE__NODE_CONNECTOR, Types._Node, 5);
+		public static final /*@NonNull*/ ExecutorProperty _Node__ownedResource = new EcoreExecutorProperty(TargetPackage.Literals.NODE__OWNED_RESOURCE, Types._Node, 6);
+		public static final /*@NonNull*/ ExecutorProperty _Node__Domain__containedNode = new ExecutorPropertyWithImplementation("Domain", Types._Node, 7, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__CONTAINED_NODE));
 
-		public static final /*@NonNull*/ ExecutorProperty _Resource__Bridge = new ExecutorPropertyWithImplementation("Bridge", Types._Resource, 0, new EcoreLibraryOppositeProperty(TargetPackage.Literals.BRIDGE__OWNED_RESOURCE));
-		public static final /*@NonNull*/ ExecutorProperty _Resource__Interconnect = new ExecutorPropertyWithImplementation("Interconnect", Types._Resource, 1, new EcoreLibraryOppositeProperty(TargetPackage.Literals.INTERCONNECT__OWNED_RESOURCE));
-		public static final /*@NonNull*/ ExecutorProperty _Resource__Node = new ExecutorPropertyWithImplementation("Node", Types._Resource, 2, new EcoreLibraryOppositeProperty(TargetPackage.Literals.NODE__OWNED_RESOURCE));
-		public static final /*@NonNull*/ ExecutorProperty _Resource__base_Class = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__BASE_CLASS, Types._Resource, 3);
-		public static final /*@NonNull*/ ExecutorProperty _Resource__name = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__NAME, Types._Resource, 4);
-		public static final /*@NonNull*/ ExecutorProperty _Resource__resourceType = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__RESOURCE_TYPE, Types._Resource, 5);
+		public static final /*@NonNull*/ ExecutorProperty _Resource__base_Class = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__BASE_CLASS, Types._Resource, 0);
+		public static final /*@NonNull*/ ExecutorProperty _Resource__name = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__NAME, Types._Resource, 1);
+		public static final /*@NonNull*/ ExecutorProperty _Resource__resourceType = new EcoreExecutorProperty(TargetPackage.Literals.RESOURCE__RESOURCE_TYPE, Types._Resource, 2);
+		public static final /*@NonNull*/ ExecutorProperty _Resource__Bridge__ownedResource = new ExecutorPropertyWithImplementation("Bridge", Types._Resource, 3, new EcoreLibraryOppositeProperty(TargetPackage.Literals.BRIDGE__OWNED_RESOURCE));
+		public static final /*@NonNull*/ ExecutorProperty _Resource__Interconnect__ownedResource = new ExecutorPropertyWithImplementation("Interconnect", Types._Resource, 4, new EcoreLibraryOppositeProperty(TargetPackage.Literals.INTERCONNECT__OWNED_RESOURCE));
+		public static final /*@NonNull*/ ExecutorProperty _Resource__Node__ownedResource = new ExecutorPropertyWithImplementation("Node", Types._Resource, 5, new EcoreLibraryOppositeProperty(TargetPackage.Literals.NODE__OWNED_RESOURCE));
 
-		public static final /*@NonNull*/ ExecutorProperty _SharedResource__Domain = new ExecutorPropertyWithImplementation("Domain", Types._SharedResource, 0, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__DOMAIN_RESOURCE));
-		public static final /*@NonNull*/ ExecutorProperty _SharedResource__resourceUser = new EcoreExecutorProperty(TargetPackage.Literals.SHARED_RESOURCE__RESOURCE_USER, Types._SharedResource, 1);
+		public static final /*@NonNull*/ ExecutorProperty _SharedResource__resourceUser = new EcoreExecutorProperty(TargetPackage.Literals.SHARED_RESOURCE__RESOURCE_USER, Types._SharedResource, 0);
+		public static final /*@NonNull*/ ExecutorProperty _SharedResource__Domain__domainResource = new ExecutorPropertyWithImplementation("Domain", Types._SharedResource, 1, new EcoreLibraryOppositeProperty(TargetPackage.Literals.DOMAIN__DOMAIN_RESOURCE));
+
+		/*
+		 * Force initialization.
+		 */
+		public static void init() {
+			Types.init();
+		}
 	}
 
 	/**
@@ -282,7 +300,10 @@
 		/**
 		 *	Install the fragment descriptors in the class descriptors.
 		 */
-		static {
+		public static void init() {
+			Fragments.init();
+			Properties.init();
+
 			Types._Bridge.initFragments(_Bridge, __Bridge);
 			Types._CommunicationPath.initFragments(_CommunicationPath, __CommunicationPath);
 			Types._Domain.initFragments(_Domain, __Domain);
@@ -291,8 +312,6 @@
 			Types._Resource.initFragments(_Resource, __Resource);
 			Types._SharedResource.initFragments(_SharedResource, __SharedResource);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -464,7 +483,9 @@
 		/*
 		 *	Install the operation descriptors in the fragment descriptors.
 		 */
-		static {
+		public static void init() {
+			TypeFragments.init();
+
 			Fragments._Bridge__Bridge.initOperations(_Bridge__Bridge);
 			Fragments._Bridge__OclAny.initOperations(_Bridge__OclAny);
 			Fragments._Bridge__OclElement.initOperations(_Bridge__OclElement);
@@ -494,8 +515,6 @@
 			Fragments._SharedResource__Resource.initOperations(_SharedResource__Resource);
 			Fragments._SharedResource__SharedResource.initOperations(_SharedResource__SharedResource);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -512,11 +531,11 @@
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _CommunicationPath = {
-			TargetTables.Properties._CommunicationPath__Domain,
 			TargetTables.Properties._CommunicationPath__base_CommunicationPath,
 			TargetTables.Properties._CommunicationPath__bridge,
 			TargetTables.Properties._CommunicationPath__connectedNode,
-			TargetTables.Properties._CommunicationPath__interconnect
+			TargetTables.Properties._CommunicationPath__interconnect,
+			TargetTables.Properties._CommunicationPath__Domain__containedCommunicationPath
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Domain = {
@@ -539,40 +558,42 @@
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Node = {
-			TargetTables.Properties._Node__Domain,
 			TargetTables.Properties._Node__availableSharedResource,
 			TargetTables.Properties._Node__base_Node,
 			TargetTables.Properties._Node__communicationPath,
 			TargetTables.Properties._Node__label,
 			TargetTables.Properties._Node__name,
 			TargetTables.Properties._Node__nodeConnector,
-			TargetTables.Properties._Node__ownedResource
+			TargetTables.Properties._Node__ownedResource,
+			TargetTables.Properties._Node__Domain__containedNode
 		};
 
 		private static final /*@NonNull*/ ExecutorProperty[] _Resource = {
-			TargetTables.Properties._Resource__Bridge,
-			TargetTables.Properties._Resource__Interconnect,
-			TargetTables.Properties._Resource__Node,
-			TargetTables.Properties._Resource__base_Class,
-			TargetTables.Properties._Resource__name,
-			TargetTables.Properties._Resource__resourceType
-		};
-
-		private static final /*@NonNull*/ ExecutorProperty[] _SharedResource = {
-			TargetTables.Properties._Resource__Bridge,
-			TargetTables.Properties._SharedResource__Domain,
-			TargetTables.Properties._Resource__Interconnect,
-			TargetTables.Properties._Resource__Node,
 			TargetTables.Properties._Resource__base_Class,
 			TargetTables.Properties._Resource__name,
 			TargetTables.Properties._Resource__resourceType,
-			TargetTables.Properties._SharedResource__resourceUser
+			TargetTables.Properties._Resource__Bridge__ownedResource,
+			TargetTables.Properties._Resource__Interconnect__ownedResource,
+			TargetTables.Properties._Resource__Node__ownedResource
+		};
+
+		private static final /*@NonNull*/ ExecutorProperty[] _SharedResource = {
+			TargetTables.Properties._Resource__base_Class,
+			TargetTables.Properties._Resource__name,
+			TargetTables.Properties._Resource__resourceType,
+			TargetTables.Properties._SharedResource__resourceUser,
+			TargetTables.Properties._Resource__Bridge__ownedResource,
+			TargetTables.Properties._SharedResource__Domain__domainResource,
+			TargetTables.Properties._Resource__Interconnect__ownedResource,
+			TargetTables.Properties._Resource__Node__ownedResource
 		};
 
 		/**
 		 *	Install the property descriptors in the fragment descriptors.
 		 */
-		static {
+		public static void init() {
+			TypeFragments.init();
+
 			Fragments._Bridge__Bridge.initProperties(_Bridge);
 			Fragments._CommunicationPath__CommunicationPath.initProperties(_CommunicationPath);
 			Fragments._Domain__Domain.initProperties(_Domain);
@@ -581,8 +602,6 @@
 			Fragments._Resource__Resource.initProperties(_Resource);
 			Fragments._SharedResource__SharedResource.initProperties(_SharedResource);
 		}
-
-		public static void init() {}
 	}
 
 	/**
@@ -598,7 +617,10 @@
 		public static void init() {}
 	}
 
+	/*
+	 * Force initialization.
+	 */
 	static {
-		Types.types[0].getClass();
+		Types.init();
 	}
 }
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/CommunicationPathImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/CommunicationPathImpl.java
index b9ff5d8..f7464c5 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/CommunicationPathImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/CommunicationPathImpl.java
@@ -12,16 +12,15 @@
 package org.eclipse.upr.depl.target.impl;
 
 import java.util.Collection;
-
 import java.util.Iterator;
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -31,13 +30,22 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator;
+
 import org.eclipse.ocl.examples.domain.types.IdResolver;
+
+import org.eclipse.ocl.examples.domain.utilities.DomainUtil;
+
 import org.eclipse.ocl.examples.domain.values.BagValue;
 import org.eclipse.ocl.examples.domain.values.SetValue;
+
 import org.eclipse.ocl.examples.domain.values.impl.InvalidValueException;
+
 import org.eclipse.ocl.examples.domain.values.util.ValuesUtil;
+
 import org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation;
-import org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager;
+
+import org.eclipse.ocl.examples.pivot.utilities.PivotUtil;
+
 import org.eclipse.upr.depl.target.Bridge;
 import org.eclipse.upr.depl.target.CommunicationPath;
 import org.eclipse.upr.depl.target.Interconnect;
@@ -178,17 +186,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	public EList<Node> getConnectedNode() {
 		/**
 		 * self.interconnect.connectedNode->flatten()
 		 */
-		final /*@NonNull*/ /*@NonInvalid*/ CommunicationPath self = this;
-		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = new EcoreExecutorManager(this, TargetTables.LIBRARY);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = PivotUtil.getEvaluator(this);
 		final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = evaluator.getIdResolver();
-		final /*@NonNull*/ /*@Thrown*/ List<?> interconnect = self.getInterconnect();
+		final /*@NonNull*/ /*@Thrown*/ List<Interconnect> interconnect = this.getInterconnect();
 		final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_interconnect = idResolver.createSetOfAll(TargetTables.SET_CLSSid_Interconnect, interconnect);
-		/*@NonNull*/ /*@NonInvalid*/ BagValue.Accumulator accumulator = ValuesUtil.createBagAccumulatorValue(TargetTables.BAG_CLSSid_Node);
+		/*@NonNull*/ /*@Thrown*/ BagValue.Accumulator accumulator = ValuesUtil.createBagAccumulatorValue(TargetTables.BAG_CLSSid_Node);
 		/*@Nullable*/ Iterator<?> ITERATOR__1 = BOXED_interconnect.iterator();
 		/*@NonNull*/ /*@Thrown*/ BagValue collect;
 		while (true) {
@@ -201,17 +207,18 @@
 		     * connectedNode
 		     */
 		    if (_1 == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Target::Interconnect::connectedNode\'");
 		    }
-		    final /*@NonNull*/ /*@Thrown*/ List<?> connectedNode = _1.getConnectedNode();
+		    final /*@NonNull*/ /*@Thrown*/ List<Node> connectedNode = _1.getConnectedNode();
 		    final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_connectedNode = idResolver.createSetOfAll(TargetTables.SET_CLSSid_Node, connectedNode);
 		    //
 		    for (Object value : BOXED_connectedNode.flatten().getElements()) {
 		        accumulator.add(value);
 		    }
 		}
-		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = (BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect);
-		final /*@NonNull*/ /*@Thrown*/ List<?> UNBOXED_flatten = flatten.asEcoreObject();
+		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = DomainUtil.nonNullState((BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect));
+		final List<Node> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.target.Node.class);
+		assert UNBOXED_flatten != null;
 		return (EList<Node>)UNBOXED_flatten;
 	}
 
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/NodeImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/NodeImpl.java
index 5df9ffc..aeed34d 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/NodeImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/NodeImpl.java
@@ -12,16 +12,15 @@
 package org.eclipse.upr.depl.target.impl;
 
 import java.util.Collection;
-
 import java.util.Iterator;
 import java.util.List;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
 
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
@@ -32,13 +31,22 @@
 import org.eclipse.emf.ecore.util.InternalEList;
 
 import org.eclipse.ocl.examples.domain.evaluation.DomainEvaluator;
+
 import org.eclipse.ocl.examples.domain.types.IdResolver;
+
+import org.eclipse.ocl.examples.domain.utilities.DomainUtil;
+
 import org.eclipse.ocl.examples.domain.values.BagValue;
 import org.eclipse.ocl.examples.domain.values.SetValue;
+
 import org.eclipse.ocl.examples.domain.values.impl.InvalidValueException;
+
 import org.eclipse.ocl.examples.domain.values.util.ValuesUtil;
+
 import org.eclipse.ocl.examples.library.collection.CollectionFlattenOperation;
-import org.eclipse.ocl.examples.library.ecore.EcoreExecutorManager;
+
+import org.eclipse.ocl.examples.pivot.utilities.PivotUtil;
+
 import org.eclipse.upr.depl.target.CommunicationPath;
 import org.eclipse.upr.depl.target.Interconnect;
 import org.eclipse.upr.depl.target.Node;
@@ -221,17 +229,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	@SuppressWarnings("unchecked")
 	public EList<CommunicationPath> getCommunicationPath() {
 		/**
 		 * self.nodeConnector.communicationPath->flatten()
 		 */
-		final /*@NonNull*/ /*@NonInvalid*/ Node self = this;
-		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = new EcoreExecutorManager(this, TargetTables.LIBRARY);
+		final /*@NonNull*/ /*@NonInvalid*/ DomainEvaluator evaluator = PivotUtil.getEvaluator(this);
 		final /*@NonNull*/ /*@NonInvalid*/ IdResolver idResolver = evaluator.getIdResolver();
-		final /*@NonNull*/ /*@Thrown*/ List<?> nodeConnector = self.getNodeConnector();
+		final /*@NonNull*/ /*@Thrown*/ List<Interconnect> nodeConnector = this.getNodeConnector();
 		final /*@NonNull*/ /*@Thrown*/ SetValue BOXED_nodeConnector = idResolver.createSetOfAll(TargetTables.SET_CLSSid_Interconnect, nodeConnector);
-		/*@NonNull*/ /*@NonInvalid*/ BagValue.Accumulator accumulator = ValuesUtil.createBagAccumulatorValue(TargetTables.BAG_CLSSid_CommunicationPath);
+		/*@NonNull*/ /*@Thrown*/ BagValue.Accumulator accumulator = ValuesUtil.createBagAccumulatorValue(TargetTables.BAG_CLSSid_CommunicationPath);
 		/*@Nullable*/ Iterator<?> ITERATOR__1 = BOXED_nodeConnector.iterator();
 		/*@NonNull*/ /*@Thrown*/ BagValue collect;
 		while (true) {
@@ -244,14 +250,15 @@
 		     * communicationPath
 		     */
 		    if (_1 == null) {
-		        throw new InvalidValueException("Null source");
+		        throw new InvalidValueException("Null source for \'UMLProfileForD&C::Target::Interconnect::communicationPath\'");
 		    }
 		    final /*@NonNull*/ /*@Thrown*/ CommunicationPath communicationPath = _1.getCommunicationPath();
 		    //
 		    accumulator.add(communicationPath);
 		}
-		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = (BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect);
-		final /*@NonNull*/ /*@Thrown*/ List<?> UNBOXED_flatten = flatten.asEcoreObject();
+		final /*@NonNull*/ /*@Thrown*/ BagValue flatten = DomainUtil.nonNullState((BagValue)CollectionFlattenOperation.INSTANCE.evaluate(collect));
+		final List<CommunicationPath> UNBOXED_flatten = flatten.asEcoreObjects(idResolver, org.eclipse.upr.depl.target.CommunicationPath.class);
+		assert UNBOXED_flatten != null;
 		return (EList<CommunicationPath>)UNBOXED_flatten;
 	}
 
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/TargetPackageImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/TargetPackageImpl.java
index 9b219cf..5be2779 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/TargetPackageImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/impl/TargetPackageImpl.java
@@ -694,23 +694,41 @@
 		createResource(eNS_URI);
 
 		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
 		// http://www.eclipse.org/emf/2002/Ecore
 		createEcoreAnnotations();
 	}
 
 	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "originalName", "Target"
+		   });
+	}
+
+	/**
 	 * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
 	protected void createEcoreAnnotations() {
-		String source = "http://www.eclipse.org/emf/2002/Ecore";		
+		String source = "http://www.eclipse.org/emf/2002/Ecore";	
 		addAnnotation
 		  (this, 
 		   source, 
 		   new String[] {
-		   });																																									
+		   });
 	}
 
 } //TargetPackageImpl
diff --git a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/util/TargetResourceFactoryImpl.java b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/util/TargetResourceFactoryImpl.java
index 09f9f16..37e4951 100644
--- a/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/util/TargetResourceFactoryImpl.java
+++ b/bundles/org.eclipse.upr.depl/src/org/eclipse/upr/depl/target/util/TargetResourceFactoryImpl.java
@@ -46,15 +46,6 @@
 	@Override
 	public Resource createResource(URI uri) {
 		XMLResource result = new TargetResourceImpl(uri);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
-
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
-
-		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
 		return result;
 	}