Bug 582872 - [Sirius][StateMachineDiagram] Connect the VSM to the UML Domain Service

Signed-off-by: Dilan EESHVARAN <dilan.eeshvaran@cea.fr>
Change-Id: Icc260429b36acf9c312d8795ce63d3a5b1da0afc
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/META-INF/MANIFEST.MF b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/META-INF/MANIFEST.MF
index 2f09407..625249b 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/META-INF/MANIFEST.MF
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/META-INF/MANIFEST.MF
@@ -15,6 +15,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.diagram.statemachine;bundle-version="[5.0.0,6.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.tools.utils;bundle-version="[4.1.0,5.0.0)",
  org.eclipse.sirius.common.acceleo.aql;bundle-version="[7.0.7,8.0.0)",
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/description/papyrus_statemachine.odesign b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/description/papyrus_statemachine.odesign
index b963880..1cca376 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/description/papyrus_statemachine.odesign
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/description/papyrus_statemachine.odesign
@@ -41,23 +41,17 @@
         </layoutOptions>
       </layout>
       <diagramInitialisation>
-        <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:self">
-          <subModelOperations xsi:type="tool:If" conditionExpression="aql:self.oclIsTypeOf(uml::Model)">
-            <subModelOperations xsi:type="tool:CreateInstance" typeName="StateMachine" referenceName="packagedElement">
-              <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-            </subModelOperations>
-          </subModelOperations>
-        </firstModelOperations>
+        <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createSMD('StateMachine','packagedElement',containerView)"/>
       </diagramInitialisation>
       <defaultLayer name="StateMachine">
         <nodeMappings name="SMD_Comment" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Comment_body_EditionTool']" 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='SMD_ColorPalette']/@entries[name='CommentColor']">
+          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='SMD_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="SMD_Constraint" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='Constraint_specification_EditionTool']" createElements="false" domainClass="uml::Constraint">
-          <style xsi:type="style:NoteDescription" labelSize="9" labelExpression="service:getConstraintLabel()" sizeComputationExpression="9" labelPosition="node" resizeKind="NSEW" color="//@userColorsPalettes[name='SMD_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='SMD_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>
@@ -65,10 +59,10 @@
         <edgeMappings name="SMD_Transition" preconditionExpression="aql:self.oclIsTypeOf(uml::Transition)" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:transition_getSemanticCandidates()" semanticElements="aql:self" sourceMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_FinalState'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" targetMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_FinalState'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" targetFinderExpression="feature:target" sourceFinderExpression="feature:source" domainClass="uml::Transition" useDomainElement="true" reconnections="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectTransitionTarget%20'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectTransitionSource%20']">
           <style>
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <beginLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.getValueString(view)">
+            <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="feature:name">
+            <centerLabelStyleDescription labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -76,7 +70,7 @@
         <edgeMappings name="SMD_ContextLink" preconditionExpression="service:checkContainerViewContext(sourceView)" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" sourceMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Constraint']" targetMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_FinalState'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" targetFinderExpression="aql:self.getContextParent()">
           <style lineStyle="dash_dot" targetArrow="NoDecoration">
             <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
-            <centerLabelStyleDescription labelSize="9" labelExpression="&lt;&lt;context>>">
+            <centerLabelStyleDescription labelSize="9" labelExpression="aql:self.renderLabel(diagram)">
               <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
             </centerLabelStyleDescription>
           </style>
@@ -84,7 +78,7 @@
         <edgeMappings name="SMD_Link" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" sourceMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Comment'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Constraint']" targetMapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_FinalState'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@edgeMappings[name='SMD_Transition'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Comment'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Constraint']" targetFinderExpression="aql:self.link_getTarget_SMD()" reconnections="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.2/@ownedTools[name='ReconnectLinkSource'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@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>
@@ -92,83 +86,83 @@
         <containerMappings name="SMD_StateMachine" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:self" synchronizationLock="true" domainClass="uml::StateMachine" reusedBorderedNodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" dropDescriptions="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintFromModelDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentFromModelDrop']" reusedContainerMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" childrenPresentation="HorizontalStack">
           <subContainerMappings name="SMD_RegionCompartment" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="service:getFeatures()" createElements="false" domainClass="uml::Region" dropDescriptions="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticRegionDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticStateDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPseudostateDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalStateRepresentationDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalPseudoStateRepresentationDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalConstraintRepresentationDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalCommentRepresentationDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintFromModelDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentFromModelDrop']" reusedNodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Comment'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Constraint']" reusedContainerMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']">
             <subNodeMappings name="SMD_Pseudostate" preconditionExpression="aql:not ((self.kind == uml::PseudostateKind::entryPoint) or ( self.kind == uml::PseudostateKind::exitPoint))" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="feature:subvertex" createElements="false" domainClass="uml::Pseudostate">
-              <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" sizeComputationExpression="2" resizeKind="NSEW">
+              <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="2" resizeKind="NSEW">
                 <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='black']"/>
               </style>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::initial)">
-                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" sizeComputationExpression="2" resizeKind="NSEW">
+                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="2" resizeKind="NSEW">
                   <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='black']"/>
                 </style>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::junction)">
-                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" sizeComputationExpression="2" resizeKind="NSEW">
+                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="2" resizeKind="NSEW">
                   <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='black']"/>
                 </style>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::deepHistory)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.uml.diagram.common/icons/symbols/deepHistory.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.uml.diagram.common/icons/symbols/deepHistory.svg">
                   <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>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::shallowHistory)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.uml.diagram.common/icons/symbols/shallowHistory.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.uml.diagram.common/icons/symbols/shallowHistory.svg">
                   <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>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::choice)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Choice.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Choice.svg">
                   <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>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::terminate)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Terminate.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Terminate.svg">
                   <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>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::join)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Join.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Join.svg">
                   <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>
               </conditionnalStyles>
               <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::fork)">
-                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Fork.svg">
+                <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Fork.svg">
                   <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>
               </conditionnalStyles>
             </subNodeMappings>
             <subNodeMappings name="SMD_FinalState" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="feature:subvertex" createElements="false" domainClass="uml::FinalState">
-              <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/FinalState.svg">
+              <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" resizeKind="NSEW" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/FinalState.svg">
                 <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>
             <subContainerMappings name="SMD_State" preconditionExpression="aql:not self.oclIsTypeOf(uml::FinalState)" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" labelDirectEdit="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="feature:subvertex" createElements="false" domainClass="uml::State" dropDescriptions="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticRegionDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticPseudostateDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.4/@ownedTools[name='GraphicalBorderPseudoStateDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintFromModelDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentFromModelDrop']" reusedContainerMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" childrenPresentation="VerticalStack">
               <borderedNodeMappings name="SMD_StateBorderedPseudoState" label="SMD_StateBorderedPseudoState" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="feature:eContents" synchronizationLock="true" domainClass="uml::Pseudostate">
-                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" sizeComputationExpression="2" resizeKind="NSEW">
+                <style xsi:type="style:DotDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="2" resizeKind="NSEW">
                   <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='black']"/>
                 </style>
                 <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::entryPoint)">
-                  <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Entry.svg">
+                  <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Entry.svg">
                     <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>
                 </conditionnalStyles>
                 <conditionnalStyles predicateExpression="aql: self.kind==(uml::PseudostateKind::exitPoint)">
-                  <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" sizeComputationExpression="-1" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Exit.svg">
+                  <style xsi:type="style:WorkspaceImageDescription" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" sizeComputationExpression="-1" workspacePath="/org.eclipse.papyrus.sirius.uml.diagram.statemachine/icons/Exit.svg">
                     <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>
@@ -176,28 +170,28 @@
               </borderedNodeMappings>
               <subContainerMappings name="SMD_StateBehaviorCompartment" preconditionExpression="aql:not self.doActivity->isEmpty() or not self.entry->isEmpty() or not self.exit->isEmpty()" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="var:self" synchronizationLock="true" domainClass="uml::State" dropDescriptions="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticConstraintFromModelDrop'] //@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.3/@ownedTools[name='SemanticCommentFromModelDrop']" childrenPresentation="List">
                 <subNodeMappings name="SMD_Entry_Label" label="SMD_Entry_Label" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="feature:entry" synchronizationLock="true" domainClass="uml::Element">
-                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:'/entry '+ self.getTypeName() +' '+ self.getName()" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
+                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
                     <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                   </style>
                 </subNodeMappings>
                 <subNodeMappings name="SMD_DoActivity_Label" label="SMD_DoActivity_Label" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="feature:doActivity" synchronizationLock="true" domainClass="uml::Element">
-                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:'/do '+ self.getTypeName() +' '+ self.getName()" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
+                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
                     <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                   </style>
                 </subNodeMappings>
                 <subNodeMappings name="SMD_Exit_Label" label="SMD_Exit_Label" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="feature:exit" synchronizationLock="true" domainClass="uml::Element">
-                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:'/exit '+ self.getTypeName() +' '+ self.getName()" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
+                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
                     <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                   </style>
                 </subNodeMappings>
                 <subNodeMappings name="SMD_Defer_Label" label="SMD_Defer_Label" deletionDescription="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@toolSections.6/@ownedTools[name='PapyrusSemanticDeleteAction']" semanticCandidatesExpression="feature:deferrableTrigger" synchronizationLock="true" domainClass="uml::Trigger">
-                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:'/defer '+ self.getTypeName() +' '+ self.getName()" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
+                  <style xsi:type="style:BundledImageDescription" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" labelAlignment="LEFT" labelPosition="node" resizeKind="NSEW">
                     <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
                     <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
@@ -209,21 +203,21 @@
                   <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
                 </style>
               </subContainerMappings>
-              <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" showIcon="false" roundedCorner="true" foregroundColor="//@userColorsPalettes[name='SMD_ColorPalette']/@entries[name='CustomBlue']">
+              <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" roundedCorner="true" foregroundColor="//@userColorsPalettes[name='SMD_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']"/>
                 <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
               </style>
             </subContainerMappings>
-            <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" borderLineStyle="dot" labelSize="9" showIcon="false" hideLabelByDefault="true" foregroundColor="//@userColorsPalettes[name='SMD_ColorPalette']/@entries[name='CustomBlue']">
+            <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" borderLineStyle="dot" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" hideLabelByDefault="true" foregroundColor="//@userColorsPalettes[name='SMD_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']"/>
               <labelBorderStyle href="environment:/viewpoint#//@labelBorderStyles/@labelBorderStyleDescriptions.2"/>
             </style>
           </subContainerMappings>
-          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" showIcon="false" roundedCorner="true" foregroundColor="//@userColorsPalettes[name='SMD_ColorPalette']/@entries[name='CustomBlue']">
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="9" showIcon="false" labelExpression="aql:self.renderLabel(diagram)" roundedCorner="true" foregroundColor="//@userColorsPalettes[name='SMD_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']"/>
@@ -234,69 +228,41 @@
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::StateMachine) or container.oclIsTypeOf(uml::State)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:container.getStateParent()">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="Region" referenceName="region">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="service:containerView.getStateViewParent()"/>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createSMD('Region','region',containerView)">
+                <subModelOperations xsi:type="tool:Let" variableName="dropLocation" valueExpression="aql:self.getDropLocation(containerView)">
+                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'T'">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('V')"/>
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
+                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="var:containerView" variableName="createdView2"/>
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
+                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
+                      </subModelOperations>
                     </subModelOperations>
                   </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::Region)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:container.getStateParent()">
-                    <subModelOperations xsi:type="tool:Let" variableName="dropLocation" valueExpression="aql:self.getDropLocation(containerView)">
-                      <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'T'">
-                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('V')"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="Region" referenceName="region">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                          <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="var:containerView"/>
-                          <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                            <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="var:containerView" variableName="createdView2"/>
-                            <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
-                              <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
-                            </subModelOperations>
-                          </subModelOperations>
-                        </subModelOperations>
+                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'R'">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('H')"/>
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
+                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
+                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
                       </subModelOperations>
-                      <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'R'">
-                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('H')"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="Region" referenceName="region">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                          <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                            <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
-                            <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
-                              <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
-                            </subModelOperations>
-                          </subModelOperations>
-                          <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView"/>
-                        </subModelOperations>
+                    </subModelOperations>
+                  </subModelOperations>
+                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'B'">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('V')"/>
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
+                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
+                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
                       </subModelOperations>
-                      <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'B'">
-                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('V')"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="Region" referenceName="region">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                          <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                            <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
-                            <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
-                              <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
-                            </subModelOperations>
-                          </subModelOperations>
-                          <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView"/>
-                        </subModelOperations>
-                      </subModelOperations>
-                      <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'L'">
-                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('H')"/>
-                        <subModelOperations xsi:type="tool:CreateInstance" typeName="Region" referenceName="region">
-                          <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                          <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView"/>
-                          <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
-                            <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
-                            <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
-                              <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
-                            </subModelOperations>
-                          </subModelOperations>
-                        </subModelOperations>
+                    </subModelOperations>
+                  </subModelOperations>
+                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:dropLocation == 'L'">
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.setChildRepresentation('H')"/>
+                    <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container">
+                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']" containerViewExpression="aql:containerView" variableName="createdView2"/>
+                      <subModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:containerView.moveChildrenView(createdView2)">
+                        <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:applyLayoutData(containerView)"/>
                       </subModelOperations>
                     </subModelOperations>
                   </subModelOperations>
@@ -308,202 +274,98 @@
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="State" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createSMD('State','subvertex',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create an Initial" name="CreateInitialTool" label="Initial" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_initial.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::initial"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'initial')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a FinalState" name="CreateFinalStateTool" label="FinalState" forceRefresh="true" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_FinalState']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/FinalState.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="FinalState" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createSMD('FinalState','subvertex',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a ShallowHitory" name="CreateShallowHistoryTool" label="ShallowHistory" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_shallowHistory.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::shallowHistory"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'shallowHistory')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a DeepHistory" name="CreateDeepHistoryTool" label="DeepHistory" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_deepHistory.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::deepHistory"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'deepHistory')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Fork" name="CreateForkTool" label="Fork" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_fork.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::fork"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'fork')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Join" name="CreateJoinTool" label="Join" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_join.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::join"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'join')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Choise" name="CreateChoiceTool" label="Choice" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_choice.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::choice"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'choice')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Junction" name="CreateJunctionTool" label="Junction" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_junction.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::junction"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'junction')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create an EntryPoint" name="CreateEntryPointTool" label="EntryPoint" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_entryPoint.gif" extraMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::State)">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="connectionPoint">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::entryPoint"/>
-                    <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                    <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::Region)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:getStateParent()">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="connectionPoint">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::entryPoint"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','connectionPoint',containerView,'entryPoint')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create an ExitPoint" name="CreateExitPointTool" label="ExitPoint" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subContainerMappings[name='SMD_State']/@borderedNodeMappings[name='SMD_StateBorderedPseudoState']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_exitPoint.gif" extraMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::State)">
-                  <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="connectionPoint">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::exitPoint"/>
-                    <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                    <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:container.oclIsTypeOf(uml::Region)">
-                  <subModelOperations xsi:type="tool:ChangeContext" browseExpression="service:getStateParent()">
-                    <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="connectionPoint">
-                      <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::exitPoint"/>
-                      <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                      <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="service:getStateViewParent()"/>
-                    </subModelOperations>
-                  </subModelOperations>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','connectionPoint',containerView,'exitPoint')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Terminate" name="CreateTerminateTool" label="Terminate" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Pseudostate_terminate.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Pseudostate" referenceName="subvertex">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="kind" valueExpression="aql:uml::PseudostateKind::terminate"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool_1:CreateView" mapping="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']/@subNodeMappings[name='SMD_Pseudostate']" containerViewExpression="aql:containerView"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createPseudoState('Pseudostate','subvertex',containerView,'terminate')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Comment" name="CreateCommentTool" label="Comment" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Comment']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Comment.gif">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:container">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Comment" referenceName="ownedComment"/>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.createSMD('Comment','ownedComment',containerView)"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:NodeCreationDescription" documentation="Create a Constraint" name="CreateConstraintTool" label="Constraint" nodeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@nodeMappings[name='SMD_Constraint']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Constraint.gif" extraMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@containerMappings[name='SMD_StateMachine']/@subContainerMappings[name='SMD_RegionCompartment']">
             <variable name="container"/>
             <viewVariable name="containerView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:container.getStateParent()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="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.createSMD('Constraint','ownedRule',containerView)"/>
             </initialOperation>
           </ownedTools>
         </toolSections>
@@ -526,19 +388,7 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:source">
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:source.oclIsTypeOf(uml::Comment)">
-                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:target.oclIsTypeOf(uml::Region)">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="annotatedElement" valueExpression="aql:target.getStateParent()"/>
-                  </subModelOperations>
-                  <subModelOperations xsi:type="tool:If" conditionExpression="aql:not target.oclIsTypeOf(uml::Region)">
-                    <subModelOperations xsi:type="tool:SetValue" featureName="annotatedElement" valueExpression="aql:target"/>
-                  </subModelOperations>
-                </subModelOperations>
-                <subModelOperations xsi:type="tool:If" conditionExpression="aql:source.oclIsTypeOf(uml::Constraint)">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="constrainedElement" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.setLinkTarget(target, sourceView,'SMD_Link')"/>
             </initialOperation>
           </ownedTools>
           <ownedTools xsi:type="tool_1:EdgeCreationDescription" documentation="Create a Transition" name="CreateTransitionTool" label="Transition" edgeMappings="//@ownedViewpoints[name='StateMachineDiagram']/@ownedRepresentations[name='StateMachineDiagram']/@defaultLayer/@edgeMappings[name='SMD_Transition']" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Transition_local.gif">
@@ -547,13 +397,7 @@
             <sourceViewVariable name="sourceView"/>
             <targetViewVariable name="targetView"/>
             <initialOperation>
-              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="service:self.getRegionParent()">
-                <subModelOperations xsi:type="tool:CreateInstance" typeName="Transition" referenceName="transition">
-                  <subModelOperations xsi:type="tool:SetValue" featureName="name" valueExpression="service:computeDefaultName"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="source" valueExpression="aql:source"/>
-                  <subModelOperations xsi:type="tool:SetValue" featureName="target" valueExpression="aql:target"/>
-                </subModelOperations>
-              </firstModelOperations>
+              <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="aql:source.createDomainBasedEdgeSMD(target,'Transition','transition',sourceView,targetView)"/>
             </initialOperation>
           </ownedTools>
         </toolSections>
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/src/org/eclipse/papyrus/sirius/uml/diagram/statemachine/services/StateMachineDiagramServices.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/src/org/eclipse/papyrus/sirius/uml/diagram/statemachine/services/StateMachineDiagramServices.java
index 25fbc95..28318be 100644
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/src/org/eclipse/papyrus/sirius/uml/diagram/statemachine/services/StateMachineDiagramServices.java
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine/src/org/eclipse/papyrus/sirius/uml/diagram/statemachine/services/StateMachineDiagramServices.java
@@ -17,7 +17,19 @@
 import java.util.HashSet;
 import java.util.Iterator;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.sirius.uml.diagram.common.core.services.AbstractDiagramServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.services.CommonDiagramServices;
+import org.eclipse.papyrus.sirius.uml.diagram.common.services.DomainBasedEdgeServices;
+import org.eclipse.papyrus.sirius.uml.diagram.statemachine.StateMachineServices;
+import org.eclipse.papyrus.uml.domain.services.labels.ElementDefaultNameProvider;
+import org.eclipse.sirius.business.api.session.Session;
+import org.eclipse.sirius.business.api.session.SessionManager;
+import org.eclipse.sirius.diagram.DDiagramElement;
+import org.eclipse.sirius.diagram.DNodeContainer;
+import org.eclipse.sirius.diagram.DSemanticDiagram;
+import org.eclipse.sirius.diagram.description.ContainerMapping;
 import org.eclipse.sirius.viewpoint.DSemanticDecorator;
 import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Constraint;
@@ -26,6 +38,7 @@
 import org.eclipse.uml2.uml.NamedElement;
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Pseudostate;
+import org.eclipse.uml2.uml.PseudostateKind;
 import org.eclipse.uml2.uml.Region;
 import org.eclipse.uml2.uml.State;
 import org.eclipse.uml2.uml.StateMachine;
@@ -35,7 +48,7 @@
 /**
  * 
  */
-public class StateMachineDiagramServices {
+public class StateMachineDiagramServices extends AbstractDiagramServices {
 	/**
 	 * A singleton instance to be accessed by other java services.
 	 */
@@ -43,6 +56,110 @@
 
 	/**
 	 * TODO : adapted from ClassDiagram
+	 * 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 createSMD(Element parent, String type, String referenceName, DSemanticDecorator targetView) {
+		CommonDiagramServices commonDiagramServices = new CommonDiagramServices();
+		if(type.equalsIgnoreCase("Constraint") || type.equalsIgnoreCase("Region")) {
+			StateMachineServices stateMachineServices = new StateMachineServices();
+			EObject stateParent = stateMachineServices.getStateParent(parent);
+			return commonDiagramServices.createElement((Element) stateParent, type, referenceName, targetView);
+		}
+		else {
+			return commonDiagramServices.createElement(parent, type, referenceName, targetView);
+		}
+	}
+	
+	/**
+	 * TODO : adapted from PapyrusWeb
+	 * Creates a new semantic element, initialize, create a view and in addition set Pseudostate.kind
+	 *
+	 * @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 createPseudoState(Element parent, String type, String referenceName, DSemanticDecorator targetView, String pseudoStateKind) {
+    		StateMachineServices stateMachineServices = new StateMachineServices();
+    		EObject stateParent = stateMachineServices.getStateParent(parent);
+    		EObject newObject=null;
+    		String containerViewExpression = "aql:containerView"; //$NON-NLS-1$
+    		final Session session = SessionManager.INSTANCE.getSession(parent);
+    		if(referenceName.equalsIgnoreCase("subvertex")) { //$NON-NLS-1$
+    			newObject = this.createSMD(parent, type, referenceName, targetView);
+    			if(parent instanceof Region) {
+    				this.createView(newObject, targetView, session, containerViewExpression);
+    			}
+    		}
+    		if(referenceName.equalsIgnoreCase("connectionPoint")) { //$NON-NLS-1$
+    			if(parent instanceof State) {
+    				newObject = this.createSMD(parent, type, referenceName, targetView);
+    				this.createView(newObject, (DSemanticDecorator) targetView.eContainer(), session, containerViewExpression);
+    			}
+    			if(parent instanceof Region) {
+        			newObject = this.createSMD((Element) stateParent, type, referenceName, targetView);
+        		}
+    		}
+    		
+    		if (newObject instanceof Pseudostate pseudostate) {
+    			pseudostate.setKind(PseudostateKind.get(pseudoStateKind));
+    			this.resetDefaultName(pseudostate);
+    		}
+    		return newObject;
+    	}
+
+
+    /**
+     * Service that reset the default name of an object.
+     *
+     * @param self
+     *            the eObject to set
+     * @return self
+     */
+    public NamedElement resetDefaultName(NamedElement self) {
+        if (self == null) {
+            return self;
+        }
+        self.setName(null);
+        self.setName(new ElementDefaultNameProvider().getDefaultName(self, self.eContainer()));
+        return self;
+    }
+
+    /**
+	 * 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 createDomainBasedEdgeSMD(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);
+    }
+
+	/**
+	 * TODO : adapted from ClassDiagram
 	 * Get the target element of the Link.
 	 * 
 	 * @param source
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/edges/test_create_sm_edges.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/edges/test_create_sm_edges.aird
index a19f541..d5afda7 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/edges/test_create_sm_edges.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/edges/test_create_sm_edges.aird
@@ -19,7 +19,7 @@
       </ownedRepresentationDescriptors>
     </ownedViews>
   </viewpoint:DAnalysis>
-  <diagram:DSemanticDiagram uid="_90ay8EiXEeyrg4BfyzIMvw">
+  <diagram:DSemanticDiagram uid="_90ay8EiXEeyrg4BfyzIMvw" synchronized="false">
     <eAnnotations xmi:type="description:DAnnotation" uid="_94IOQEiXEeyrg4BfyzIMvw" source="Papyrus-SiriusDiagram">
       <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_94IOQUiXEeyrg4BfyzIMvw" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.statemachine"/>
     </eAnnotations>
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/nodes/create_statemachine_node.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/nodes/create_statemachine_node.aird
index 0531d05..e2834ee 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/nodes/create_statemachine_node.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.statemachine.tests/resources/nodes/create_statemachine_node.aird
@@ -23,7 +23,7 @@
       </ownedRepresentationDescriptors>
     </ownedViews>
   </viewpoint:DAnalysis>
-  <diagram:DSemanticDiagram uid="_sDnmcEh5EeyZTZejBwLctg">
+  <diagram:DSemanticDiagram uid="_sDnmcEh5EeyZTZejBwLctg" synchronized="false">
     <eAnnotations xmi:type="description:DAnnotation" uid="_sE9qQEh5EeyZTZejBwLctg" source="Papyrus-SiriusDiagram">
       <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sE9qQUh5EeyZTZejBwLctg" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.statemachine"/>
     </eAnnotations>