Bug 582682 - [Sirius][ClassDiagram] Connect the VSM to the UML Domain Service
-patch for edges
-update domain service from 0.15 to 0.17

Signed-off-by: Dilan EESHVARAN <dilan.eeshvaran@cea.fr>
Signed-off-by: Vincent LORENZO <vincent.lorenzo@cea.fr>
Change-Id: Ie7409e13a2c75a1170f81be99acd148877935bb1
diff --git a/plugins/editor/org.eclipse.papyrus.sirius.editor.representation.architecture/META-INF/MANIFEST.MF b/plugins/editor/org.eclipse.papyrus.sirius.editor.representation.architecture/META-INF/MANIFEST.MF
index 5dc1b8c..94fa7c6 100755
--- a/plugins/editor/org.eclipse.papyrus.sirius.editor.representation.architecture/META-INF/MANIFEST.MF
+++ b/plugins/editor/org.eclipse.papyrus.sirius.editor.representation.architecture/META-INF/MANIFEST.MF
@@ -20,7 +20,7 @@
  org.eclipse.papyrus.sirius.editor.sirius;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.editor;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.tools.utils;bundle-version="[4.1.0,5.0.0)",
  org.eclipse.sirius.diagram;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.ui;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/properties/org.eclipse.papyrus.sirius.properties.uml/META-INF/MANIFEST.MF b/plugins/properties/org.eclipse.papyrus.sirius.properties.uml/META-INF/MANIFEST.MF
index b35fe8f..0d2ee9d 100644
--- a/plugins/properties/org.eclipse.papyrus.sirius.properties.uml/META-INF/MANIFEST.MF
+++ b/plugins/properties/org.eclipse.papyrus.sirius.properties.uml/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.papyrus.infra.services.edit;bundle-version="[4.1.0,5.0.0)",
  org.eclipse.papyrus.sirius.properties.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.properties.editor.properties.advanced.controls;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.internationalization.utils;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.papyrus.uml.tools;bundle-version="[5.1.0,6.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity/META-INF/MANIFEST.MF
index a798383..85fe2bf 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity/META-INF/MANIFEST.MF
@@ -14,7 +14,7 @@
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.common;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/META-INF/MANIFEST.MF
index 1f327a6..dffbb72 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/META-INF/MANIFEST.MF
@@ -13,6 +13,7 @@
  org.eclipse.papyrus.infra.services.labelprovider;bundle-version="[3.0.0,4.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.profile;bundle-version="[4.2.0,5.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.papyrus.uml.tools.utils;bundle-version="[4.1.0,5.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
index 624ffbb..c1e524e 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
@@ -4,20 +4,20 @@
     <ownedRepresentations xsi:type="description_1:DiagramDescription" dropDescriptions="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPackageDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticModelDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticEnumerationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticDataTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalEnumerationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticComponentDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInterfaceDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticSignalDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInstanceSpecificationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticInformationItemDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPrimitiveTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticClassDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_ClassDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_DataTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_PackageDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_PrimitiveTypeDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_ComponentDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_EnumerationDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_InterfaceDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_ModelDrop'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='Semantic_NOT_SYNC_SignalDrop']" documentation="Representation to edit class diagrams" name="ClassDiagram" titleExpression="aql:self.name +' Class Diagram'" domainClass="uml::Package" preconditionExpression="" enablePopupBars="true">
       <metamodel href="platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#/"/>
       <defaultLayer name="Class">
-        <nodeMappings name="CD_Comment" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Comment_body_EditionTool']" semanticCandidatesExpression="feature:ownedComment" createElements="false" domainClass="uml.Comment">
-          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="feature:body" labelAlignment="LEFT" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CommentColor']">
+        <nodeMappings name="CD_Comment" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Comment_body_EditionTool']" semanticCandidatesExpression="feature:ownedComment" domainClass="uml.Comment">
+          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CommentColor']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
           </style>
         </nodeMappings>
         <nodeMappings name="CD_Constraint" preconditionExpression="aql:self.oclIsTypeOf(uml::Constraint)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Constraint_specification_EditionTool']" semanticCandidatesExpression="service:constraint_getSemanticCandidates(diagram)" domainClass="uml.Constraint">
-          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="service:getConstraintLabel()" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='ConstraintColor']">
+          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='ConstraintColor']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
           </style>
         </nodeMappings>
         <nodeMappings name="CD_InformationItem" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:self.packagedElement" createElements="false" semanticElements="service:getSemanticElements" domainClass="uml.InformationItem">
-          <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InformationItem.gif" sizeComputationExpression="" labelPosition="node" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InformationItem.gif" sizeComputationExpression="" labelPosition="node" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
           </style>
@@ -25,7 +25,7 @@
         <edgeMappings name="CD_Abstraction" preconditionExpression="aql:self.oclIsTypeOf(uml::Abstraction)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:abstraction_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:supplier" sourceFinderExpression="feature:client" domainClass="uml.Abstraction" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAbstractionSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAbstractionTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" labelExpression="&lt;&lt;abstraction>>" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Abstraction.gif">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Abstraction.gif">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -33,13 +33,13 @@
         <edgeMappings name="CD_Association" preconditionExpression="aql:self.oclIsTypeOf(uml::Association)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:association_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="service:association_getTargetType()" sourceFinderExpression="service:association_getSourceType()" targetExpression="var:self" domainClass="uml.Association" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAssociationTarget'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAssociationSource']">
           <style targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.association_getBeginLabel()">
+            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeSourceLabel(view.sourceNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </beginLabelStyleDescription>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
-            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.association_getEndLabel()">
+            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeTargetLabel(view.targetNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </endLabelStyleDescription>
           </style>
@@ -47,13 +47,13 @@
         <edgeMappings name="CD_AssociationClass_Link" preconditionExpression="aql:self.oclIsTypeOf(uml::AssociationClass)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:associationClass_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="service:associationClass_getTargetType()" sourceFinderExpression="service:associationClass_getSourceType()" targetExpression="var:self" domainClass="uml.AssociationClass" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAssociationClassLinkSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectAssociationClassLinkTarget']">
           <style targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.associationClass_getBeginLabel()">
+            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeSourceLabel(view.sourceNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </beginLabelStyleDescription>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
-            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.associationClass_getEndLabel()">
+            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeTargetLabel(view.targetNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </endLabelStyleDescription>
           </style>
@@ -61,7 +61,7 @@
         <edgeMappings name="CD_AssociationClass_NodeToLink" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" synchronizationLock="true" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link']" targetFinderExpression="aql:self" sourceFinderExpression="aql:self" domainClass="uml.AssociationClass" useDomainElement="true">
           <style lineStyle="dash" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -69,7 +69,7 @@
         <edgeMappings name="CD_ContainmentLink" preconditionExpression="service:containmentLink_isValidSourceAndTarget(sourceView,targetView,source,target)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal']" targetFinderExpression="service:containmentLink_getTarget()" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectContainmentLinkTarget'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectContainmentLinkSource']">
           <style sourceArrow="OutputClosedArrow" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <beginLabelStyleDescription labelSize="9" iconPath="/org.eclipse.papyrus.sirius.uml.diagram.common/icons/uml/ContainmentLink.gif">
+            <beginLabelStyleDescription labelSize="9" labelExpression="aql:self.renderEdgeSourceLabel(view.sourceNode.oclAsType(viewpoint::DSemanticDecorator).target)" iconPath="/org.eclipse.papyrus.sirius.uml.diagram.common/icons/uml/ContainmentLink.gif">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </beginLabelStyleDescription>
           </style>
@@ -77,7 +77,7 @@
         <edgeMappings name="CD_ContextLink" preconditionExpression="aql:source.oclIsTypeOf(uml::Constraint)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode']" targetFinderExpression="feature:context">
           <style lineStyle="dash_dot" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -85,7 +85,7 @@
         <edgeMappings name="CD_Dependency" preconditionExpression="aql:self.oclIsTypeOf(uml::Dependency)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:dependency_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:supplier" sourceFinderExpression="feature:client" domainClass="uml.Dependency" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectDependencySource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectDependencyTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -93,7 +93,7 @@
         <edgeMappings name="CD_ElementImport" preconditionExpression="aql:self.oclIsTypeOf(uml::ElementImport)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='ElementImport_alias_EditionTool']" semanticCandidatesExpression="service:elementImport_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" targetExpression="var:self" domainClass="uml.ElementImport" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectElementImportSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectElementImportTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -101,7 +101,7 @@
         <edgeMappings name="CD_Generalization" preconditionExpression="aql:self.oclIsTypeOf(uml::Generalization)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="service:generalization_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" targetExpression="var:self" domainClass="uml.Generalization" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectGeneralizationSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectGeneralizationTarget']">
           <style targetArrow="InputClosedArrow">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -109,7 +109,7 @@
         <edgeMappings name="CD_GeneralizationSet" preconditionExpression="aql:self.oclIsTypeOf(uml::GeneralizationSet)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="service:generalizationSet_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization']" targetFinderExpression="service:generalizationSet_getTarget()" sourceFinderExpression="service:generalizationSet_getSource()" targetExpression="var:self" domainClass="uml.GeneralizationSet" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectGeneralizationSetSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectGeneralizationSetTarget']">
           <style lineStyle="dash" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -117,7 +117,7 @@
         <edgeMappings name="CD_InformationFlow" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:informationFlow_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']" targetFinderExpression="feature:informationTarget" sourceFinderExpression="feature:informationSource" targetExpression="var:self" domainClass="uml.InformationFlow" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInformationFlowSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInformationFlowTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -125,10 +125,10 @@
         <edgeMappings name="CD_InstanceSpecification_Link" preconditionExpression="service:instanceSpecification_isLink()" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:instanceSpecificationLink_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']" targetFinderExpression="service:instanceSpecificationLink_getTarget()" sourceFinderExpression="service:instanceSpecificationLink_getSource()" targetExpression="var:self" domainClass="uml.InstanceSpecification" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInstanceSpecificationLinkSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInstanceSpecificationLinkTarget']">
           <style targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.computeInstanceSpecBeginLabel()">
+            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeSourceLabel(view.sourceNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </beginLabelStyleDescription>
-            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.computeInstanceSpecEndLabel()">
+            <endLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderEdgeTargetLabel(view.targetNode.oclAsType(viewpoint::DSemanticDecorator).target)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </endLabelStyleDescription>
           </style>
@@ -136,7 +136,7 @@
         <edgeMappings name="CD_InterfaceRealization" preconditionExpression="aql:self.oclIsTypeOf(uml::InterfaceRealization)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:interfaceRealization_getSemanticCandidates()" semanticElements="service:getSemanticElements" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']" targetFinderExpression="feature:supplier" sourceFinderExpression="feature:client" targetExpression="var:self" domainClass="uml.InterfaceRealization" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInterfaceRealizationSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectInterfaceRealizationTarget']">
           <style lineStyle="dash" targetArrow="InputClosedArrow">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -144,7 +144,7 @@
         <edgeMappings name="CD_Link" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Comment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Comment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_Constraint'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal']" targetFinderExpression="aql:self.link_getTarget()" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectLinkSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectLinkTarget']">
           <style lineStyle="dash" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -152,7 +152,7 @@
         <edgeMappings name="CD_PackageImport" preconditionExpression="aql:self.oclIsTypeOf(uml::PackageImport)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="service:packageImport_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml.PackageImport" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectPackageImportSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectPackageImportTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -160,7 +160,7 @@
         <edgeMappings name="CD_PackageMerge" preconditionExpression="aql:self.oclIsTypeOf(uml::PackageMerge)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="service:packageMerge_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml.PackageMerge" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectPackageMergeSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectPackageMergeTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -168,7 +168,7 @@
         <edgeMappings name="CD_Realization" preconditionExpression="aql:self.oclIsTypeOf(uml::Realization)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:realization_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml.Realization" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectRealizationSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectRealizationTarget']">
           <style lineStyle="dash" targetArrow="InputClosedArrow">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -176,7 +176,7 @@
         <edgeMappings name="CD_Substitution" preconditionExpression="aql:self.oclIsTypeOf(uml::Substitution)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:substitution_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml.Substitution" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectSubstitutionSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectSubstitutionTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:buildMultilineLabel(diagram)">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -184,7 +184,7 @@
         <edgeMappings name="CD_TemplateBinding" preconditionExpression="aql:self.oclIsTypeOf(uml::TemplateBinding)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="service:templateBindings_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" targetFinderExpression="aql:self.oclAsType(uml::TemplateBinding).signature.template" sourceFinderExpression="feature:boundElement" domainClass="uml.TemplateBinding" useDomainElement="true">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
-            <centerLabelStyleDescription labelSize="9" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -192,7 +192,7 @@
         <edgeMappings name="CD_Usage" preconditionExpression="aql:self.oclIsTypeOf(uml::Usage)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:usage_getSemanticCandidates()" sourceMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetMapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_AssociationClass_Node'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml.Usage" useDomainElement="true" reconnections="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectUsageSource'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectUsageTarget']">
           <style lineStyle="dash">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="service:computeUmlLabel">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -222,7 +222,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -259,7 +259,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -290,7 +290,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -313,7 +313,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -322,7 +322,7 @@
         <containerMappings name="CD_Enumeration" preconditionExpression="aql:self.oclIsTypeOf(uml::Enumeration)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="feature:packagedElement" domainClass="uml.Enumeration" childrenPresentation="VerticalStack">
           <subContainerMappings name="CD_EnumerationLiteralsCompartment" semanticCandidatesExpression="aql:self" synchronizationLock="true" domainClass="uml.Enumeration" reusedNodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']/@subContainerMappings[name='CD_EnumerationLiteralsCompartment']/@subNodeMappings[name='CD_EnumerationLiteralLabelNode']" childrenPresentation="List">
             <subNodeMappings name="CD_EnumerationLiteralLabelNode" semanticCandidatesExpression="aql:if(self.oclIsTypeOf(uml::Enumeration)) then self.ownedLiteral else null endif" semanticElements="service:getSemanticElements" domainClass="uml.EnumerationLiteral">
-              <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel" labelAlignment="LEFT" sizeComputationExpression="1" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+              <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" sizeComputationExpression="1" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
                 <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                 <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               </style>
@@ -334,7 +334,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -343,7 +343,7 @@
         <containerMappings name="CD_InstanceSpecification_Node" preconditionExpression="aql:self.oclIsTypeOf(uml::InstanceSpecification) and self.instanceSpecification_isNode()" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="feature:packagedElement" domainClass="uml.InstanceSpecification" childrenPresentation="VerticalStack">
           <subContainerMappings name="CD_InstanceSpecificationSlotsCompartment" semanticCandidatesExpression="aql:self" synchronizationLock="true" domainClass="uml.InstanceSpecification" reusedNodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode']" childrenPresentation="List">
             <subNodeMappings name="CD_SlotLabelNode" semanticCandidatesExpression="aql:if(self.oclIsTypeOf(uml::InstanceSpecification)) then self.slot else null endif" createElements="false" domainClass="uml.Slot">
-              <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel()" labelAlignment="LEFT" sizeComputationExpression="1" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+              <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" sizeComputationExpression="1" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
                 <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                 <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               </style>
@@ -355,7 +355,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -386,7 +386,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -401,7 +401,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.1"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -418,7 +418,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.1"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -443,7 +443,7 @@
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildLabel" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -466,42 +466,42 @@
         </containerMappings>
         <containerMappings name="CD_SHARED_NestedClassifier" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'nestedClassifier' feature.&#xD;&#xA;UML::Class and UML::Interface provide this feature but there is not a common superclass providing it, that's why we create this mapping.&#xD;&#xA;" domainClass="uml::Class">
           <subNodeMappings name="CD_ClassLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Class)" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.Class">
-            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:buildSingleLineLabel(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
           <subNodeMappings name="CD_DataTypeLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::DataType)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.DataType">
-            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/DataType.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/DataType.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
           <subNodeMappings name="CD_EnumerationLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Enumeration)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.Enumeration">
-            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Enumeration.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Enumeration.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
           <subNodeMappings name="CD_InterfaceLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Interface)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.Interface">
-            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Interface.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Interface.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
           <subNodeMappings name="CD_PrimitiveTypeLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::PrimitiveType)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.PrimitiveType">
-            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PrimitiveType.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PrimitiveType.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
           <subNodeMappings name="CD_SignalLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Signal)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.nestedClassifier else null endif" domainClass="uml.Signal">
-            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Signal.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Signal.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -509,12 +509,12 @@
         </containerMappings>
         <containerMappings name="CD_SHARED_OwnedAttribute" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedAttribute' feature.&#xD;&#xA;UML::Class, UML::DataType, UML::Interface and UML::Signal provide this feature but there is not a common superclass providing it, that's why we create this mapping." domainClass="uml::Class">
           <subNodeMappings name="CD_PropertyLabelNode" preconditionExpression="aql:if(self.oclIsTypeOf(uml::Property) and self.oclAsType(uml::Property).association = null) then true else false endif" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::DataType) or self.oclIsTypeOf(uml::Interface) or self.oclIsTypeOf(uml::Signal)) then self.ownedAttribute else null endif" domainClass="uml.Property">
-            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildSingleLineLabel(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Property.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Property.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -522,12 +522,12 @@
         </containerMappings>
         <containerMappings name="CD_SHARED_OwnedOperation" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedOperation' feature.&#xD;&#xA;UML::Class, UML::DataType, and UML::Interface provide this feature but there is not a common superclass providing it, that's why we create this mapping." domainClass="uml::Class">
           <subNodeMappings name="CD_OperationLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Operation)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::Interface) or self.oclIsKindOf(uml::DataType)) then self.ownedOperation else null endif" domainClass="uml.Operation">
-            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Operation.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Operation.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
@@ -535,19 +535,19 @@
         </containerMappings>
         <containerMappings name="CD_SHARED_OwnedReception" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedReception' feature.&#xD;&#xA;UML::Class and UML::Interface provide this feature but there is not a common superclass providing it, that's why we create this mapping.&#xD;&#xA;" domainClass="uml::Class">
           <subNodeMappings name="CD_ReceptionLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Reception)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.ownedReception else null endif" domainClass="uml.Reception">
-            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Reception.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:SquareDescription" labelSize="9" labelExpression="aql:self.renderLabelInline(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Reception.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
               <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </style>
           </subNodeMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" arcWidth="5" arcHeight="5" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" roundedCorner="true" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight" foregroundColor="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Class" preconditionExpression="aql:self.oclIsTypeOf(uml::Class)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideClasses(diagram)" createElements="false" documentation="This mapping is used to represent Class defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Classes defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Class" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassOperationsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassNestedClassifiersCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -556,7 +556,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Component" preconditionExpression="aql:self.oclIsTypeOf(uml::Component)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideComponents(diagram)" createElements="false" documentation="This mapping is used to represent Component defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Components defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Component" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component']/@subContainerMappings[name='CD_ComponentAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component']/@subContainerMappings[name='CD_ComponentOperationsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component']/@subContainerMappings[name='CD_ComponentNestedClassifiersCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -565,7 +565,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_DataType" preconditionExpression="aql:self.oclIsTypeOf(uml::DataType)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideDataTypes(diagram)" createElements="false" documentation="This mapping is used to represent DataType defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all DataTypes defined in libraries when the user uses a synchronized diagram. " domainClass="uml.DataType" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType']/@subContainerMappings[name='CD_DataTypeAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType']/@subContainerMappings[name='CD_DataTypeOperationsCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -574,7 +574,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Enumeration" preconditionExpression="aql:self.oclIsTypeOf(uml::Enumeration)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideEnumerations(diagram)" createElements="false" documentation="This mapping is used to represent Enumeration defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Enumerations defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Enumeration" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']/@subContainerMappings[name='CD_EnumerationLiteralsCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -583,7 +583,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Interface" preconditionExpression="aql:self.oclIsTypeOf(uml::Interface)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideInterfaces(diagram)" createElements="false" documentation="This mapping is used to represent Interface defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Interfaces defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Interface" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceOperationsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceNestedClassifiersCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -592,7 +592,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Model" preconditionExpression="aql:self.oclIsTypeOf(uml::Model)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideModels(diagram)" createElements="false" documentation="This mapping is used to represent Model defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Models defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Model" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -601,7 +601,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Package" preconditionExpression="aql:self.oclIsTypeOf(uml::Package)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsidePackages(diagram)" createElements="false" documentation="This mapping is used to represent Package defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all DataTypes defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Package" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -611,7 +611,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_PrimitiveType" preconditionExpression="aql:self.oclIsTypeOf(uml::PrimitiveType)" deletionDescription="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsidePrimitiveTypes(diagram)" createElements="false" documentation="This mapping is used to represent PrimitiveType defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all PrimitiveTypes defined in libraries when the user uses a synchronized diagram. " domainClass="uml.PrimitiveType" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']/@subContainerMappings[name='CD_PrimitiveTypeAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']/@subContainerMappings[name='CD_PrimitiveTypeOperationsCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -620,7 +620,7 @@
           </style>
         </containerMappings>
         <containerMappings name="CD_NOT_SYNC_Signal" preconditionExpression="aql:self.oclIsTypeOf(uml::Signal)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getOutsideSignals(diagram)" createElements="false" documentation="This mapping is used to represent Signal defined outside of the context of the diagram. This mapping is NOT SYNCHRONIZED to avoid to represent all Signals defined in libraries when the user uses a synchronized diagram. " domainClass="uml.Signal" reusedContainerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal']/@subContainerMappings[name='CD_SignalAttributesCompartment']" childrenPresentation="VerticalStack">
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildMultilineLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" tooltipExpression="service:computeTooltip" widthComputationExpression="service:defaultWidth" heightComputationExpression="service:defaultHeight">
             <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             <labelFormat>bold</labelFormat>
             <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
@@ -630,35 +630,10 @@
         </containerMappings>
         <toolSections name="Nodes" icon="/org.eclipse.gmf.runtime.diagram.ui/icons/group.gif">
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Class" name="CreateClassTool" label="Class" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.isDDiagram()">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Class" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Class" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_ClassLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Class" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::Class',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Classifier Template Parameter" name="CreateClassifierTemplateParameterTool" label="Classifier Template Parameter" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/ClassifierTemplateParameter.gif">
@@ -670,25 +645,14 @@
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Comment" referenceName="ownedComment"/>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Comment','ownedComment',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:ContainerCreationDescription" documentation="Create a Component" name="CreateComponentTool" label="Component" containerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Component.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:containerView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.isDDiagram() or self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Component" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Component']" containerViewExpression="aql:containerView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Component','packagedElement',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Connectable Element Template Parameter" name="CreateConnectableElementTemplateParameterTool" label="Connectable Element Template Parameter" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/ConnectableElementTemplateParameter.gif">
@@ -700,187 +664,63 @@
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Constraint" referenceName="ownedRule">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:instance">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml::OpaqueExpression" referenceName="specification">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="language" valueExpression="OCL"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="body" valueExpression="true"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="constraintSpec"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Constraint','ownedRule',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Data Type" name="CreateDataTypeTool" label="Data Type" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/DataType.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DDiagram)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(uml::Class)">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.DataType" referenceName="nestedClassifier">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                        <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType']" containerViewExpression="aql:elementView"/>
-                      </subModelOperations>
-                    </subModelOperations>
-                    <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(uml::Package)">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.DataType" referenceName="packagedElement">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                        <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType']" containerViewExpression="aql:elementView"/>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.DataType" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_DataTypeLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.DataType" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_DataType']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::DataType',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create an Enumeration" name="CreateEnumerationTool" label="Enumeration" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Enumeration.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DDiagram)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(uml::Class)">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Enumeration" referenceName="nestedClassifier">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                        <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']" containerViewExpression="aql:elementView"/>
-                      </subModelOperations>
-                    </subModelOperations>
-                    <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(uml::Package)">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Enumeration" referenceName="packagedElement">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                        <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']" containerViewExpression="aql:elementView"/>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Enumeration" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_EnumerationLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Enumeration" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::Enumeration',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create an Enumeration Literal" name="CreateEnumerationLiteralTool" label="EnumerationLiteral" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Enumeration']/@subContainerMappings[name='CD_EnumerationLiteralsCompartment']/@subNodeMappings[name='CD_EnumerationLiteralLabelNode']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/EnumerationLiteral.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.EnumerationLiteral" referenceName="ownedLiteral">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('EnumerationLiteral','ownedLiteral',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create an Information Item" name="CreateInformationItemTool" label="InformationItem" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@nodeMappings[name='CD_InformationItem']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InformationItem.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.InformationItem" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('InformationItem','packagedElement',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:ContainerCreationDescription" documentation="Create an Instance Specification node" name="CreateInstanceSpecificationNodeTool" label="InstanceSpecification" containerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InstanceSpecification.gif" extraMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:If" conditionExpression="service:container.isNotTypeOfClass">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.InstanceSpecification" referenceName="packagedElement">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('InstanceSpecification','packagedElement',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create an Interface" name="CreateInterfaceTool" label="Interface" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Interface.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.isDDiagram()">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Interface" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Interface" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_InterfaceLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Interface" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::Interface',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:ContainerCreationDescription" documentation="Create a Model" name="CreateModelTool" label="Model" containerMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Model.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Model" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Model','packagedElement',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create anOperation" name="CreateOperationTool" label="Operation" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedOperation']/@subNodeMappings[name='CD_OperationLabelNode']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Operation.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Operation" referenceName="ownedOperation" variableName="aOperation">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Operation','ownedOperation',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create an Operation Template Parameter" name="CreateOperationTemplateParameterTool" label="Operation Template Parameter" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/OperationTemplateParameter.gif">
@@ -892,66 +732,28 @@
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml::Package" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Package','packagedElement',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Primitive Type" name="CreatePrimitiveTypeTool" label="PrimitiveType" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PrimitiveType.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DDiagram)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.PrimitiveType" referenceName="ownedType">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.PrimitiveType" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_PrimitiveTypeLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.PrimitiveType" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_PrimitiveType']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::PrimitiveType',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Property" name="CreatePropertyTool" label="Property" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedAttribute']/@subNodeMappings[name='CD_PropertyLabelNode']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Property.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedAttribute" variableName="aProperty">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Property','ownedAttribute',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Reception" name="CreateReceptionTool" label="Reception" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_OwnedReception']/@subNodeMappings[name='CD_ReceptionLabelNode']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Reception.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Reception" referenceName="ownedReception" variableName="aOperation">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Reception','ownedReception',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Redefinable Template Signature" name="CreateRedefinableTemplateSignatureTool" label="Redefinable Template Signature" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@borderedNodeMappings[name='CD_RedefinableTemplateSignature']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/RedefinableTemplateSignature.gif" extraMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassOperationsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class']/@subContainerMappings[name='CD_ClassNestedClassifiersCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Class'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceAttributesCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceNestedClassifiersCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Interface']/@subContainerMappings[name='CD_InterfaceOperationsCompartment']">
@@ -966,44 +768,17 @@
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Signal" name="CreateSignalTool" label="Signal" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Signal.gif">
-            <element name="element"/>
-            <elementView name="elementView"/>
+            <element name="container"/>
+            <elementView name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:elementView">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.isDDiagram()">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Signal" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeList)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Signal" referenceName="nestedClassifier">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_SHARED_NestedClassifier']/@subNodeMappings[name='CD_SignalLabelNode']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsKindOf(diagram::DNodeContainer)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="var:element">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Signal" referenceName="packagedElement">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Signal']" containerViewExpression="aql:elementView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createStructuredClassifierCD('uml::Signal',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Slot" name="CreateSlotTool" label="Slot" nodeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_InstanceSpecification_Node']/@subContainerMappings[name='CD_InstanceSpecificationSlotsCompartment']/@subNodeMappings[name='CD_SlotLabelNode']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Slot.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Slot" referenceName="slot"/>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createCD('Slot','slot',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool:ToolDescription" documentation="Create a Parameter" name="CreateTemplateParameterTool" label="Template Parameter" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/TemplateParameter.gif">
@@ -1018,160 +793,60 @@
           </ownedTools>
         </toolSections>
         <toolSections name="Edges" icon="/org.eclipse.gmf.runtime.diagram.ui/icons/group.gif">
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Abstraction" name="CreateAbstractionTool" label="Abstraction" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Abstraction.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Abstraction" name="CreateAbstractionTool" label="Abstraction" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Abstraction','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Abstraction.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Abstraction" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="supplier" valueExpression="aql:target"/>
-                  <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Abstraction']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="aql:sourceView" targetExpression="aql:targetView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Abstraction','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:ToolGroup" name="AssociationsGroup">
-            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed Association" name="CreateAssociation_Directed_Tool" label="Association (Directed)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.papyrus.uml.service.types/icons/Association_none_directed.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']">
+            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed Association" name="CreateAssociation_Directed_Tool" label="Association (Directed)" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Association','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.papyrus.uml.service.types/icons/Association_none_directed.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']">
               <sourceVariable name="source"/>
               <targetVariable name="target"/>
               <sourceViewVariable name="sourceView"/>
               <targetViewVariable name="targetView"/>
               <initialOperation>
-                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Association" referenceName="packagedElement" variableName="createdAssociation">
-                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedAttribute" variableName="sourceProperty">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:target.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:target"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="lower" valueExpression="aql:'0'"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="upper" valueExpression="aql:'1'"/>
-                      </subModelOperations>
-                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:createdAssociation">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="memberEnd" valueExpression="aql:sourceProperty"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="targetProperty">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:source.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:source"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        </subModelOperations>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </firstModelOperations>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Association','packagedElement',sourceView,targetView)"/>
               </initialOperation>
             </tools>
-            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Association" name="CreateAssociationTool" label="Association" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']">
+            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Association" name="CreateAssociationTool" label="Association" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Association','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']">
               <sourceVariable name="source"/>
               <targetVariable name="target"/>
               <sourceViewVariable name="sourceView"/>
               <targetViewVariable name="targetView"/>
               <initialOperation>
-                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Association" referenceName="packagedElement" variableName="createdAssociation">
-                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:createdAssociation">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="sourceProperty">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:target.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:target"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                      </subModelOperations>
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="targetProperty">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:source.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:source"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </firstModelOperations>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Association','packagedElement',sourceView,targetView)"/>
               </initialOperation>
             </tools>
-            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed composite Association" name="CreateCompositeAssociation_Directed_Tool" label="Composite Association (Directed)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Association_composite.gif">
+            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed composite Association" name="CreateCompositeAssociation_Directed_Tool" label="Composite Association (Directed)" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Association','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Association_composite.gif">
               <sourceVariable name="source"/>
               <targetVariable name="target"/>
               <sourceViewVariable name="sourceView"/>
               <targetViewVariable name="targetView"/>
               <initialOperation>
-                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Association" referenceName="packagedElement" variableName="createdAssociation">
-                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedAttribute" variableName="sourceProperty">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:target.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:target"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="lower" valueExpression="aql:'0'"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="upper" valueExpression="aql:'1'"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="aggregation" valueExpression="aql:uml::AggregationKind::composite"/>
-                      </subModelOperations>
-                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:createdAssociation">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="memberEnd" valueExpression="aql:sourceProperty"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="targetProperty">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:source.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:source"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        </subModelOperations>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </firstModelOperations>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createCompositeAssociation(target,'Association','packagedElement',sourceView,targetView)"/>
               </initialOperation>
             </tools>
-            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed shared Association" name="CreateSharedAssociation_Directed_Tool" label="Shared Association (Directed)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Association_shared.gif">
+            <tools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a directed shared Association" name="CreateSharedAssociation_Directed_Tool" label="Shared Association (Directed)" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Association','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Association']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Association_shared.gif">
               <sourceVariable name="source"/>
               <targetVariable name="target"/>
               <sourceViewVariable name="sourceView"/>
               <targetViewVariable name="targetView"/>
               <initialOperation>
-                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Association" referenceName="packagedElement" variableName="createdAssociation">
-                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source">
-                      <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedAttribute" variableName="sourceProperty">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:target.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:target"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="lower" valueExpression="aql:'0'"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="upper" valueExpression="aql:'1'"/>
-                        <subModelOperations xsi:type="tool:SetValue" featureName="aggregation" valueExpression="aql:uml::AggregationKind::shared"/>
-                      </subModelOperations>
-                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:createdAssociation">
-                        <subModelOperations xsi:type="tool:SetValue" featureName="memberEnd" valueExpression="aql:sourceProperty"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="targetProperty">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:source.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:source"/>
-                          <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociation"/>
-                        </subModelOperations>
-                      </subModelOperations>
-                    </subModelOperations>
-                  </subModelOperations>
-                </firstModelOperations>
+                <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createSharedAssociation(target,'Association','packagedElement',sourceView,targetView)"/>
               </initialOperation>
             </tools>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an AssociationClass" name="CreateAssociationClassTool" label="Association Class" forceRefresh="true" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/AssociationClass.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an AssociationClass" name="CreateAssociationClassTool" label="Association Class" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'AssociationClass','packagedElement',preSourceView,preTargetView)" forceRefresh="true" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_AssociationClass_Link']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/AssociationClass.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.AssociationClass" referenceName="packagedElement" variableName="createdAssociationClass">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:createdAssociationClass">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="sourceProperty">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:target.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:target"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociationClass"/>
-                    </subModelOperations>
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Property" referenceName="ownedEnd" variableName="targetProperty">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="aql:source.oclAsType(uml::NamedElement).name.toLowerFirst()"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="type" valueExpression="aql:source"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="association" valueExpression="aql:createdAssociationClass"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'AssociationClass','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a ContainmentLink" name="CreateCreateContainmentLinkTool" label="Containment Link" precondition="service:containmentLink_isValidSourceAndTarget(preSourceView,preTargetView,preSource,preTarget)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ContainmentLink']" iconPath="/org.eclipse.papyrus.sirius.uml.diagram.common/icons/uml/ContainmentLink.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment']">
@@ -1191,54 +866,37 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Constraint)">
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'ContextLink','contextLink',sourceView,targetView)">
                 <subModelOperations xsi:type="tool:SetValue" featureName="context" valueExpression="var:target"/>
                 <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ContextLink']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="var:source" targetExpression="var:target"/>
               </firstModelOperations>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Dependency" name="CreateDependencyTool" label="Dependency" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency']">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Dependency" name="CreateDependencyTool" label="Dependency" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Dependency','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency']">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Dependency" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="supplier" valueExpression="aql:target"/>
-                  <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Dependency']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="aql:sourceView" targetExpression="aql:targetView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Dependency','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an ElementImport" name="CreateElementImportTool" label="Element Import" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/ElementImport.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an ElementImport" name="CreateElementImportTool" label="Element Import" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'ElementImport','elementImport',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_ElementImport']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/ElementImport.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Namespace)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.ElementImport" referenceName="elementImport">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="importedElement" valueExpression="var:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'ElementImport','elementImport',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Generalization" name="CreateGeneralizationTool" label="Generalization" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Generalization.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Generalization" name="CreateGeneralizationTool" label="Generalization" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Generalization','generalization',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Generalization.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Classifier)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Generalization" referenceName="generalization">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="general" valueExpression="var:target">
-                    <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Generalization']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="aql:sourceView" targetExpression="aql:targetView"/>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Generalization','generalization',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Generalization Set" name="CreateGeneralizationSetTool" label="Generalization Set" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_GeneralizationSet']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/GeneralizationSet.gif">
@@ -1255,18 +913,13 @@
               </firstModelOperations>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Information Flow" name="CreateInformationFlowTool" label="Information Flow" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InformationFlow.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Information Flow" name="CreateInformationFlowTool" label="Information Flow" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'InformationFlow','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InformationFlow']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InformationFlow.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.InformationFlow" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="informationSource" valueExpression="var:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="informationTarget" valueExpression="var:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'InformationFlow','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an InstanceSpecification link." name="CreateInstanceSpecificationLinkTool" label="Instance Specification" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InstanceSpecification_Link']" iconPath="/org.eclipse.papyrus.sirius.uml.diagram.clazz/icons/obj16/InstanceLink.gif">
@@ -1280,19 +933,13 @@
               </firstModelOperations>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Interface Realization" name="CreateInterfaceRealizationTool" label="Interface Realization" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InterfaceRealization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InterfaceRealization.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create an Interface Realization" name="CreateInterfaceRealizationTool" label="Interface Realization" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'InterfaceRealization','interfaceRealization',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_InterfaceRealization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/InterfaceRealization.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::BehavioredClassifier)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml::InterfaceRealization" referenceName="interfaceRealization">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="supplier" valueExpression="aql:target"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="contract" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'InterfaceRealization','interfaceRealization',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a new Link. This link is used to fill the feature Comment#annotatedElement." name="CreateLinkTool" label="Link" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Link']" iconPath="/org.eclipse.papyrus.sirius.uml.diagram.clazz/icons/obj16/Link.gif">
@@ -1301,62 +948,34 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:source.oclIsTypeOf(uml::Comment)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Comment)">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="annotatedElement" valueExpression="var:target"/>
-                    <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Link']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="var:source" targetExpression="var:target"/>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:source.oclIsTypeOf(uml::Constraint)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Constraint)">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="constrainedElement" valueExpression="var:target"/>
-                    <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Link']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="var:source" targetExpression="var:target"/>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.setLinkTarget(target, sourceView,'CD_Link')"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Package Import" name="CreatePackageImportTool" label="Package Import" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageImport']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PackageImport.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Package Import" name="CreatePackageImportTool" label="Package Import" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'PackageImport','packageImport',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageImport']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PackageImport.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Package)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.PackageImport" referenceName="packageImport">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="importedPackage" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'PackageImport','packageImport',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Package Merge" name="CreatePackageMergeTool" label="Package Merge" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageMerge']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PackageMerge.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Package Merge" name="CreatePackageMergeTool" label="Package Merge" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'PackageMerge','packageMerge',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_PackageMerge']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/PackageMerge.gif" extraSourceMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']" extraTargetMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Model']/@subContainerMappings[name='CD_ModelPackagedElementsCompartment'] //@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@containerMappings[name='CD_Package']/@subContainerMappings[name='CD_PackagePackagedElementsCompartment']">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Package)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.PackageMerge" referenceName="packageMerge">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="mergedPackage" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'PackageMerge','packageMerge',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Realization" name="CreateRealizationTool" label="Realization" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Realization.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Realization" name="CreateRealizationTool" label="Realization" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Realization','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Realization.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Realization" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="supplier" valueExpression="aql:target"/>
-                  <subModelOperations xsi:type="tool_1:CreateEdgeView" mapping="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Realization']" containerViewExpression="aql:sourceView.getParentDiagram()" sourceExpression="aql:sourceView" targetExpression="aql:targetView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Realization','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Substitution" name="CreateSubstitutionTool" label="Substitution" precondition="aql:preSource.oclIsKindOf(uml::Classifier) and preTarget.oclIsKindOf(uml::Classifier)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Substitution']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Substitution.gif" connectionStartPrecondition="aql:preSource.oclIsKindOf(uml::Classifier)">
@@ -1365,7 +984,7 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Classifier)">
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Substitution','substitution',sourceView,targetView)">
                 <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Substitution" referenceName="substitution">
                   <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
                   <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
@@ -1384,26 +1003,16 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::TemplateableElement)">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml::TemplateBinding" referenceName="templateBinding">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="boundElement" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="signature" valueExpression="aql:target.oclAsType(uml::TemplateableElement).ownedTemplateSignature"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'TemplateBinding','templateBinding',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
-          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Usage" name="CreateUsageTool" label="Usage" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Usage']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Usage.gif">
+          <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Usage" name="CreateUsageTool" label="Usage" precondition="aql:preSource.canCreateDomainBasedEdgeCD(preTarget,'Usage','packagedElement',preSourceView,preTargetView)" edgeMappings="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@edgeMappings[name='CD_Usage']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Usage.gif">
             <sourceVariable name="source"/>
             <targetVariable name="target"/>
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.oclAsType(uml::Element).getNearestPackage()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="uml.Usage" referenceName="packagedElement">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="client" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="supplier" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeCD(target,'Usage','packagedElement',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
         </toolSections>
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/Activator.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/Activator.java
index f706bd3..148cd27 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/Activator.java
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/Activator.java
@@ -15,6 +15,7 @@
 
 import java.util.HashSet;
 import java.util.Set;
+
 import org.eclipse.sirius.business.api.componentization.ViewpointRegistry;
 import org.eclipse.sirius.viewpoint.description.Viewpoint;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
index 3beb52d..e45b6ca 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
@@ -23,6 +23,7 @@
 
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.emf.ecore.EAnnotation;
+import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.papyrus.infra.core.services.ServiceException;
 import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
@@ -31,14 +32,23 @@
 import org.eclipse.papyrus.sirius.uml.diagram.clazz.internal.constants.MappingTypes;
 import org.eclipse.papyrus.sirius.uml.diagram.clazz.internal.ui.dialog.AssociationSelectionDialog;
 import org.eclipse.papyrus.sirius.uml.diagram.clazz.internal.utils.InstanceSpecificationLinkUtils;
+import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.AbstractDiagramServices;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.AssociationClassServices;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.AssociationServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.EditableChecker;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.ElementServices;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.ILabelConstants;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.LabelServices;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.NodeInverseRefsServices;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.OperationServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.RepresentationQuerier;
 import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.StereotypeServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.services.CommonDiagramServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.services.DomainBasedEdgeServices;
+import org.eclipse.papyrus.uml.domain.services.UMLHelper;
+import org.eclipse.papyrus.uml.domain.services.create.ElementDomainBasedEdgeCreationChecker;
+import org.eclipse.papyrus.uml.domain.services.edges.ElementDomainBasedEdgeContainerProvider;
+import org.eclipse.papyrus.uml.domain.services.status.CheckStatus;
 import org.eclipse.sirius.diagram.DDiagram;
 import org.eclipse.sirius.diagram.DDiagramElement;
 import org.eclipse.sirius.diagram.DEdge;
@@ -50,11 +60,13 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.AggregationKind;
 import org.eclipse.uml2.uml.Association;
 import org.eclipse.uml2.uml.AssociationClass;
 import org.eclipse.uml2.uml.BehavioredClassifier;
 import org.eclipse.uml2.uml.Class;
 import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.CollaborationUse;
 import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.Dependency;
@@ -87,6 +99,7 @@
 import org.eclipse.uml2.uml.TemplateableElement;
 import org.eclipse.uml2.uml.Type;
 import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
 import org.eclipse.uml2.uml.Usage;
 import org.eclipse.uml2.uml.ValueSpecification;
 
@@ -94,7 +107,7 @@
  * Services to handle typed Element concerns.
  *
  */
-public class ClassDiagramServices {
+public class ClassDiagramServices extends AbstractDiagramServices{
 	/**
 	 * A singleton instance to be accessed by other java services.
 	 */
@@ -141,6 +154,12 @@
 	 */
 	private static final int GENERALIZATION_SET__TARGET_INDEX = 1;
 
+	// nestedClassifier reference name
+	private static final String NESTED_CLASSIFIER = "nestedClassifier"; //$NON-NLS-1$
+
+	// packagedElement reference name
+	private static final String PACKAGED_ELEMENT = "packagedElement"; //$NON-NLS-1$
+
 	/**
 	 * Move the given Element
 	 * 
@@ -182,6 +201,183 @@
 	}
 
 	/**
+	 * Creates a new semantic element, initialize and create a view.
+	 *
+	 * @param parent
+	 *            the semantic parent
+	 * @param type
+	 *            the type of element to create
+	 * @return a new instance or <code>null</code> if the creation failed
+	 */
+	public EObject createStructuredClassifierCD(Element parent, String type, DSemanticDecorator targetView) {
+		EObject result = null;
+		if (parent == null) {
+			Activator.log.warn("Unable to create an element on nothing"); //$NON-NLS-1$
+		} else {
+			if (parent instanceof org.eclipse.uml2.uml.Package) {
+				result = this.createCD(parent, type, PACKAGED_ELEMENT, targetView);
+			} else if (parent instanceof org.eclipse.uml2.uml.Class) {
+				result = this.createCD(parent, type, NESTED_CLASSIFIER, targetView);
+			}else if (parent instanceof org.eclipse.uml2.uml.Interface) {
+				result = this.createCD(parent, type, NESTED_CLASSIFIER, targetView);
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Creates a new semantic element, initialize and create a view.
+	 *
+	 * @param parent
+	 *            the semantic parent
+	 * @param type
+	 *            the type of element to create
+	 * @param referenceName
+	 *            the name of the containment reference
+	 * @return a new instance or <code>null</code> if the creation failed
+	 */
+	public EObject createCD(Element parent, String type, String referenceName, DSemanticDecorator targetView) {
+		CommonDiagramServices commonDiagramServices = new CommonDiagramServices();
+		return commonDiagramServices.createElement(parent, type, referenceName, targetView);
+	}
+	
+	/**
+
+	 * Service used to create a domain base edge.
+	 *
+	 * @param source
+	 *            the semantic source
+	 * @param target
+	 *            the semantic target
+	 * @param type
+	 *            the new element type
+	 * @param containementReferenceName
+	 *            the containment reference name
+	 * @param sourceNode
+	 *            the source {@link DSemanticDecorator} of the new edge
+	 * @param targetNode
+	 *            the target {@link DSemanticDecorator} of the new edge
+	 * @return a new element or <code>null</code>
+	 */
+	public EObject createDomainBasedEdgeCD(EObject source, EObject target, String type, String containementReferenceName, DSemanticDecorator sourceView, DSemanticDecorator targetView) {
+		DomainBasedEdgeServices domainBasedEdgeServices = new DomainBasedEdgeServices();
+		return domainBasedEdgeServices.createDomainBasedEdge(source, target, type, containementReferenceName, sourceView, targetView,new ElementDomainBasedEdgeContainerProvider(new EditableChecker()));
+	}
+	
+	/**
+     * Create a shared {@link Association}.
+     *
+     * @param source
+     *            the semantic source
+     * @param target
+     *            the semantic target
+     * @param type
+	 *            the new element type
+     * @param containementReferenceName
+	 *            the containment reference name
+     * @param sourceNode
+     *            the source {@link DSemanticDecorator} of the new edge
+     * @param targetNode
+     *            the target {@link DSemanticDecorator} of the new edge
+     * @return a new Association
+     */
+    public EObject createSharedAssociation(EObject source, EObject target, String type, String containementReferenceName, DSemanticDecorator sourceView, DSemanticDecorator targetView) {
+    	DomainBasedEdgeServices domainBasedEdgeServices = new DomainBasedEdgeServices();
+        EObject newObject = domainBasedEdgeServices.createDomainBasedEdge(source, target, type, containementReferenceName, sourceView, targetView, new ElementDomainBasedEdgeContainerProvider(new EditableChecker()));
+        if (newObject instanceof Association) {
+            Association association = (Association) newObject;
+            Property firstMember = association.getMemberEnds().get(0);
+
+            firstMember.setAggregation(AggregationKind.SHARED_LITERAL);
+        }
+        return newObject;
+    }
+    
+    /**
+     * Create a composite {@link Association}.
+     *
+     * @param source
+     *            the semantic source
+     * @param target
+     *            the semantic target
+     * @param type
+	 *            the new element type
+     * @param containementReferenceName
+	 *            the containment reference name
+     * @param sourceNode
+     *            the source {@link DSemanticDecorator} of the new edge
+     * @param targetNode
+     *            the target {@link DSemanticDecorator} of the new edge
+     * @return a new Association
+     */
+    public EObject createCompositeAssociation(EObject source, EObject target, String type, String containementReferenceName, DSemanticDecorator sourceView, DSemanticDecorator targetView) {
+    	DomainBasedEdgeServices domainBasedEdgeServices = new DomainBasedEdgeServices();
+        EObject newObject = domainBasedEdgeServices.createDomainBasedEdge(source, target, type, containementReferenceName, sourceView, targetView, new ElementDomainBasedEdgeContainerProvider(new EditableChecker()));
+        if (newObject instanceof Association) {
+            Association association = (Association) newObject;
+            Property firstMember = association.getMemberEnds().get(0);
+
+            firstMember.setAggregation(AggregationKind.COMPOSITE_LITERAL);
+        }
+        return newObject;
+    }
+
+	
+	/**
+	 * Service used to check if an object can be created under the specified container.
+	 *
+	 * @param container
+	 *            the container that should contains the new object to create.
+	 * @param objectToCreate
+	 *            the EClass defining the type of the object to create .
+	 * @param containmentReferenceName
+	 *            the name of the containment reference to use to attach the new element to the model
+	 * @return <code>true</code> if the object can be created; <code>false</code> otherwise.
+	 */
+	public boolean canCreateCD(EObject container, EClass objectToCreate, String containmentReferenceName) {
+		return super.canCreate(container, objectToCreate, containmentReferenceName);
+	}
+	
+	/**
+	 * Service used to create a domain base edge.
+	 *
+	 * @param source
+	 *            the semantic source
+	 * @param target
+	 *            the semantic target
+	 * @param type
+	 *            the new element type
+	 * @param containementReferenceName
+	 *            the containment reference name
+	 * @param sourceNode
+	 *            the source {@link DSemanticDecorator} of the new edge
+	 * @param targetNode
+	 *            the target {@link DSemanticDecorator} of the new edge
+	 * @return a new element or <code>null</code>
+	 */
+	public boolean canCreateDomainBasedEdgeCD(EObject source, EObject target, String type, String containementReferenceName, DSemanticDecorator sourceView, DSemanticDecorator targetView) {
+		boolean canCreate = true;
+
+		// check if edge can be semantically created
+		RepresentationQuerier representationQuery = new RepresentationQuerier(((DDiagramElement) sourceView).getParentDiagram());
+		CheckStatus canCreateStatus = new ElementDomainBasedEdgeCreationChecker().canCreate(source, target, type, containementReferenceName, representationQuery, sourceView, targetView);
+		canCreate = canCreateStatus.isValid();
+
+		if (canCreate) {
+			// check if a container exist
+			ElementDomainBasedEdgeContainerProvider containerProvider = new ElementDomainBasedEdgeContainerProvider(new EditableChecker());
+			EClass eClass = UMLHelper.toEClass(type);
+			if (eClass != null) {
+				EObject newInstance = UMLFactory.eINSTANCE.create(eClass);
+				EObject container = containerProvider.getContainer(source, target, newInstance, representationQuery, sourceView, targetView);
+				canCreate = container != null;
+			}
+		}
+
+		return canCreate;
+	}
+	
+	/**
 	 * 
 	 * @param semanticContext
 	 *            the context in which we are looking for {@link Abstraction}
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/META-INF/MANIFEST.MF
index a682614..ab2703c 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common/META-INF/MANIFEST.MF
@@ -33,7 +33,7 @@
  org.eclipse.papyrus.sirius.editor.sirius;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.editor;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.internationalization.utils;bundle-version="[2.0.0,3.0.0)",
  org.eclipse.sirius.common.ui;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.common;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.communication/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.communication/META-INF/MANIFEST.MF
index ec4e797..91a961e 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.communication/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.communication/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.component/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.component/META-INF/MANIFEST.MF
index 05d3ff6..9c574d4 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.component/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.component/META-INF/MANIFEST.MF
@@ -13,7 +13,7 @@
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.compositestructure/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.compositestructure/META-INF/MANIFEST.MF
index 9c3e4a3..bf55383 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.compositestructure/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.compositestructure/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.deployment/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.deployment/META-INF/MANIFEST.MF
index 385698e..0316c88 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.deployment/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.deployment/META-INF/MANIFEST.MF
@@ -19,7 +19,7 @@
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.common;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.pkg/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.pkg/META-INF/MANIFEST.MF
index 3d8ef54..0bbad6c 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.pkg/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.pkg/META-INF/MANIFEST.MF
@@ -12,7 +12,7 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.25.0,4.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.common;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.profile/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.profile/META-INF/MANIFEST.MF
index ae1048a..90ab81e 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.profile/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.profile/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.papyrus.infra.widgets;bundle-version="[4.1.0,5.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.papyrus.uml.tools;bundle-version="[5.1.0,6.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.usecase/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.usecase/META-INF/MANIFEST.MF
index 819e45e..1dbc25b 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.usecase/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.usecase/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
 Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.25.0,4.0.0)",
  org.eclipse.papyrus.sirius.log;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.papyrus.uml.service.types;bundle-version="[5.2.0,6.0.0)",
  org.eclipse.sirius;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity.tests/META-INF/MANIFEST.MF
index 57167c4..d2fc0a2 100644
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.activity.tests/META-INF/MANIFEST.MF
@@ -15,7 +15,7 @@
  org.eclipse.papyrus.sirius.uml.diagram.activity;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common.tests;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius.diagram.model;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
  org.junit;bundle-version="[4.13.0,5.0.0)"
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common.tests/META-INF/MANIFEST.MF b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common.tests/META-INF/MANIFEST.MF
index 0e77b86..edba424 100644
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common.tests/META-INF/MANIFEST.MF
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.common.tests/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@
 Bundle-Vendor: %providerName
 Require-Bundle: org.eclipse.emf.transaction;bundle-version="[1.9.0,2.0.0)",
  org.eclipse.papyrus.sirius.uml.diagram.common;bundle-version="[0.7.0,1.0.0)",
- org.eclipse.papyrus.uml.domain.services;bundle-version="[0.15.0,1.0.0)",
+ org.eclipse.papyrus.uml.domain.services;bundle-version="[0.17.0,1.0.0)",
  org.eclipse.sirius.diagram;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.sirius.model;bundle-version="[7.0.7,8.0.0)",
  org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",