<?xml version="1.0" encoding="UTF-8"?>
<gmfmap:Mapping xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
    xmlns:gmfmap="http://www.eclipse.org/gmf/2008/mappings"
    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
  <nodes>
    <containmentFeature
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class/nestedClassifier"/>
    <ownedChild>
      <domainMetaElement
          href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//StateMachine"/>
      <labelMappings
          xsi:type="gmfmap:FeatureLabelMapping">
        <diagramLabel
            href="stateMachineDiagram.gmfgraph#StateMachineNode_name"/>
        <features
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
      </labelMappings>
      <tool
          xsi:type="gmftool:CreationTool"
          href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.0"/>
      <diagramNode
          href="stateMachineDiagram.gmfgraph#StateMachineNode"/>
      <children>
        <containmentFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//StateMachine/region"/>
        <ownedChild>
          <domainMetaElement
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region"/>
          <tool
              xsi:type="gmftool:CreationTool"
              href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.2"/>
          <diagramNode
              href="stateMachineDiagram.gmfgraph#RegionNode"/>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State"/>
              <domainSpecialization
                  body="self.oclIsTypeOf(uml::State) and self.isSimple and (not self.isSubmachineState)"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  <value
                      body=" let base : String = 'State' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                </initializers>
              </domainInitializer>
              <labelMappings
                  xsi:type="gmfmap:FeatureLabelMapping">
                <diagramLabel
                    href="stateMachineDiagram.gmfgraph#SimpleStateNode_name"/>
                <features
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
              </labelMappings>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.1/@tools.0"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#SimpleStateNode"/>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/entry"/>
                <ownedChild>
                  <domainMetaElement
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Behavior"/>
                  <domainSpecialization
                      body="isEntryActivity"
                      language="java"/>
                  <labelMappings
                      xsi:type="gmfmap:FeatureLabelMapping"
                      readOnly="true"
                      viewPattern="entry / {0}">
                    <diagramLabel
                        href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                    <features
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  </labelMappings>
                  <diagramNode
                      href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                </ownedChild>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/exit"/>
                <ownedChild>
                  <domainMetaElement
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Behavior"/>
                  <domainSpecialization
                      body="isExitActivity"
                      language="java"/>
                  <labelMappings
                      xsi:type="gmfmap:FeatureLabelMapping"
                      readOnly="true"
                      viewPattern="exit / {0}">
                    <diagramLabel
                        href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                    <features
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  </labelMappings>
                  <diagramNode
                      href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                </ownedChild>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/doActivity"/>
                <ownedChild>
                  <domainMetaElement
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Behavior"/>
                  <domainSpecialization
                      body="isDoActivity"
                      language="java"/>
                  <labelMappings
                      xsi:type="gmfmap:FeatureLabelMapping"
                      readOnly="true"
                      viewPattern="do / {0}">
                    <diagramLabel
                        href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                    <features
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  </labelMappings>
                  <diagramNode
                      href="stateMachineDiagram.gmfgraph#InternalActivity_name"/>
                </ownedChild>
              </children>
              <compartments
                  children="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.0 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.1 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.2">
                <compartment
                    href="stateMachineDiagram.gmfgraph#SimpleState_InternalActivities"/>
              </compartments>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State"/>
              <domainSpecialization
                  body="self.oclIsTypeOf(uml::State) and self.isComposite and (not self.isSubmachineState)"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  <value
                      body=" let base : String = 'State' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                </initializers>
                <initializers
                    xsi:type="gmfmap:ReferenceNewElementSpec">
                  <feature
                      xsi:type="ecore:EReference"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/region"/>
                  <newElementInitializers>
                    <initializers
                        xsi:type="gmfmap:FeatureValueSpec">
                      <feature
                          xsi:type="ecore:EAttribute"
                          href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                      <value
                          body=" let base : String = 'Region' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                    </initializers>
                    <elementClass
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region"/>
                  </newElementInitializers>
                </initializers>
              </domainInitializer>
              <labelMappings
                  xsi:type="gmfmap:FeatureLabelMapping">
                <diagramLabel
                    href="stateMachineDiagram.gmfgraph#CompositeStateNode_name"/>
                <features
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
              </labelMappings>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.1/@tools.1"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#CompositeStateNode"/>
              <children
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/region"/>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/entry"/>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/exit"/>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/doActivity"/>
              </children>
              <compartments
                  children="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@children.3 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@children.2 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild/@children.1">
                <compartment
                    href="stateMachineDiagram.gmfgraph#CompositeState_InternalActivities"/>
              </compartments>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild
                relatedDiagrams="//@diagram">
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State"/>
              <domainSpecialization
                  body="self.oclIsTypeOf(uml::State) and self.isSubmachineState"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  <value
                      body=" let base : String = 'SubmachineState' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                </initializers>
              </domainInitializer>
              <labelMappings
                  xsi:type="gmfmap:FeatureLabelMapping"
                  viewPattern="">
                <diagramLabel
                    href="stateMachineDiagram.gmfgraph#SubmachineStateNode_name"/>
                <features
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
              </labelMappings>
              <tool
                  xsi:type="gmftool:GenericTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.1/@tools.2"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#SubmachineStateNode"/>
              <children
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/region"/>
              </children>
              <children>
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/connection"/>
                <ownedChild>
                  <domainMetaElement
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//ConnectionPointReference"/>
                  <domainSpecialization
                      body="entry->notEmpty() implies entry->forAll(e | e.kind =  PseudostateKind::entryPoint)"/>
                  <domainInitializer
                      xsi:type="gmfmap:FeatureSeqInitializer">
                    <initializers
                        xsi:type="gmfmap:FeatureValueSpec">
                      <feature
                          xsi:type="ecore:EAttribute"
                          href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                      <value
                          body=" let base : String = 'EntryPointConnectionPointReference' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                    </initializers>
                  </domainInitializer>
                  <labelMappings
                      xsi:type="gmfmap:FeatureLabelMapping">
                    <diagramLabel
                        href="stateMachineDiagram.gmfgraph#EntryExitPointConnectionPointReferenceNode_ExternalLabel"/>
                    <features
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  </labelMappings>
                  <tool
                      xsi:type="gmftool:CreationTool"
                      href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.12"/>
                  <diagramNode
                      href="stateMachineDiagram.gmfgraph#EntryPointConnectionPointReferenceNode"/>
                </ownedChild>
              </children>
              <children>
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/connection"/>
                <ownedChild>
                  <domainMetaElement
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//ConnectionPointReference"/>
                  <domainSpecialization
                      body="exit->notEmpty() implies exit->forAll(e | e.kind =  PseudostateKind::exitPoint)"/>
                  <domainInitializer
                      xsi:type="gmfmap:FeatureSeqInitializer">
                    <initializers
                        xsi:type="gmfmap:FeatureValueSpec">
                      <feature
                          xsi:type="ecore:EAttribute"
                          href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                      <value
                          body=" let base : String = 'ExitPointConnectionPointReference' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
                    </initializers>
                  </domainInitializer>
                  <labelMappings
                      xsi:type="gmfmap:FeatureLabelMapping">
                    <diagramLabel
                        href="stateMachineDiagram.gmfgraph#EntryExitPointConnectionPointReferenceNode_ExternalLabel"/>
                    <features
                        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
                  </labelMappings>
                  <tool
                      xsi:type="gmftool:CreationTool"
                      href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.13"/>
                  <diagramNode
                      href="stateMachineDiagram.gmfgraph#ExitPointConnectionPointReferenceNode"/>
                </ownedChild>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/entry"/>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.1/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/exit"/>
              </children>
              <children
                  compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@compartments.0"
                  referencedChild="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild">
                <containmentFeature
                    href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//State/doActivity"/>
              </children>
              <compartments
                  children="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@children.3 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@children.4 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2/@ownedChild/@children.5">
                <compartment
                    href="stateMachineDiagram.gmfgraph#CompositeState_InternalActivities"/>
              </compartments>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//FinalState"/>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.3"/>
              <diagramNode
                  href="activityDiagram_controlNodes.gmfgraph#FinalStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::initial"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::initial"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.4"/>
              <diagramNode
                  href="activityDiagram_controlNodes.gmfgraph#InitialPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::shallowHistory"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::shallowHistory"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.5"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#ShallowHistoryPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::deepHistory"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::deepHistory"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.6"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#DeepHistoryPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::fork"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::fork"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.7"/>
              <diagramNode
                  href="activityDiagram_controlNodes.gmfgraph#ForkAndJoinPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::join"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::join"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.8"/>
              <diagramNode
                  href="activityDiagram_controlNodes.gmfgraph#ForkAndJoinPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::junction"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::junction"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.9"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#JunctionPseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::choice"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::choice"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.10"/>
              <diagramNode
                  href="activityDiagram_controlNodes.gmfgraph#ChoicePseudoStateNode"/>
            </ownedChild>
          </children>
          <children
              compartment="//@nodes.0/@ownedChild/@children.0/@ownedChild/@compartments.0">
            <containmentFeature
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/subvertex"/>
            <ownedChild>
              <domainMetaElement
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
              <domainSpecialization
                  body="self.kind = PseudostateKind::terminate"/>
              <domainInitializer
                  xsi:type="gmfmap:FeatureSeqInitializer">
                <initializers
                    xsi:type="gmfmap:FeatureValueSpec">
                  <feature
                      xsi:type="ecore:EAttribute"
                      href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
                  <value
                      body="PseudostateKind::terminate"/>
                </initializers>
              </domainInitializer>
              <tool
                  xsi:type="gmftool:CreationTool"
                  href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.11"/>
              <diagramNode
                  href="stateMachineDiagram.gmfgraph#TerminatePseudoStateNode"/>
            </ownedChild>
          </children>
          <compartments
              children="//@nodes.0/@ownedChild/@children.0/@ownedChild/@children.0 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.1 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.2 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.3 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.4 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.5 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.6 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.7 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.8 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.9 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.10 //@nodes.0/@ownedChild/@children.0/@ownedChild/@children.11">
            <compartment
                href="stateMachineDiagram.gmfgraph#subvertices"/>
          </compartments>
        </ownedChild>
      </children>
      <children>
        <containmentFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//StateMachine/connectionPoint"/>
        <ownedChild>
          <domainMetaElement
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
          <domainSpecialization
              body="self.kind = PseudostateKind::entryPoint"/>
          <domainInitializer
              xsi:type="gmfmap:FeatureSeqInitializer">
            <initializers
                xsi:type="gmfmap:FeatureValueSpec">
              <feature
                  xsi:type="ecore:EAttribute"
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
              <value
                  body="PseudostateKind::entryPoint"/>
            </initializers>
            <initializers
                xsi:type="gmfmap:FeatureValueSpec">
              <feature
                  xsi:type="ecore:EAttribute"
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
              <value
                  body=" let base : String = 'Entry Point' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
            </initializers>
          </domainInitializer>
          <labelMappings
              xsi:type="gmfmap:FeatureLabelMapping">
            <diagramLabel
                href="stateMachineDiagram.gmfgraph#EntryExitPoint_ExternalLabel"/>
            <features
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
          </labelMappings>
          <tool
              xsi:type="gmftool:CreationTool"
              href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.12"/>
          <diagramNode
              href="stateMachineDiagram.gmfgraph#EntryPointPseudoStateNode"/>
        </ownedChild>
      </children>
      <children>
        <containmentFeature
            href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//StateMachine/connectionPoint"/>
        <ownedChild>
          <domainMetaElement
              href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate"/>
          <domainSpecialization
              body="self.kind = PseudostateKind::exitPoint"/>
          <domainInitializer
              xsi:type="gmfmap:FeatureSeqInitializer">
            <initializers
                xsi:type="gmfmap:FeatureValueSpec">
              <feature
                  xsi:type="ecore:EAttribute"
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Pseudostate/kind"/>
              <value
                  body="PseudostateKind::exitPoint"/>
            </initializers>
            <initializers
                xsi:type="gmfmap:FeatureValueSpec">
              <feature
                  xsi:type="ecore:EAttribute"
                  href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
              <value
                  body=" let base : String = 'Exit Point' in  let suffixes : Sequence(String) = Sequence {'', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'} in  let space : Namespace = self.namespace in  let allMissed : Sequence(String) = suffixes-> &#x9;select(s : String | not space.member->exists(e : NamedElement | e.name = base.concat(s)) ) in  let firstMissed : String = allMissed->first() in  let noMisses : Boolean = firstMissed.oclIsUndefined() in  let allNames : Set(String) =  &#x9;if noMisses &#x9;&#x9;then &#x9;&#x9;space.member->collect(e : NamedElement | &#x9;&#x9;&#x9;if e = self or e.name.oclIsUndefined() or e.name.substring(1, e.name.size().min(base.size())) &lt;> base &#x9;&#x9;&#x9;then '' else e.name &#x9;&#x9;&#x9;endif &#x9;&#x9;)->asSet()->excluding('') &#x9;&#x9;else Set{'not in use'} &#x9;&#x9;endif in  let longestName : String = &#x9;&#x9;if noMisses &#x9;&#x9;then allNames->select(n : String | not allNames->exists(nn : String | nn.size() > n.size()))->asSequence()->first()&#x9;&#x9;else 'not in use' &#x9;&#x9;endif &#x9;in  if noMisses then &#x9;&#x9;if longestName.oclIsUndefined() &#x9;&#x9;then base &#x9;&#x9;else longestName.concat('1') &#x9;&#x9;endif  else base.concat(firstMissed)  endif "/>
            </initializers>
          </domainInitializer>
          <labelMappings
              xsi:type="gmfmap:FeatureLabelMapping">
            <diagramLabel
                href="stateMachineDiagram.gmfgraph#EntryExitPoint_ExternalLabel"/>
            <features
                href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
          </labelMappings>
          <tool
              xsi:type="gmftool:CreationTool"
              href="stateMachineDiagram.gmftool#//@palette/@tools.0/@tools.13"/>
          <diagramNode
              href="stateMachineDiagram.gmfgraph#ExitPointPseudoStateNode"/>
        </ownedChild>
      </children>
    </ownedChild>
  </nodes>
  <links>
    <domainMetaElement
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Transition"/>
    <labelMappings
        xsi:type="gmfmap:FeatureLabelMapping"
        readOnly="true">
      <diagramLabel
          href="stateMachineDiagram.gmfgraph#TransitionLink_transition"/>
      <features
          href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//NamedElement/name"/>
    </labelMappings>
    <containmentFeature
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Region/transition"/>
    <tool
        xsi:type="gmftool:CreationTool"
        href="stateMachineDiagram.gmftool#//@palette/@tools.1/@tools.0"/>
    <diagramLink
        href="stateMachineDiagram.gmfgraph#TransitionLink"/>
    <sourceMetaFeature
        xsi:type="ecore:EReference"
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Transition/source"/>
    <linkMetaFeature
        xsi:type="ecore:EReference"
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//Transition/target"/>
  </links>
  <diagram>
    <diagramCanvas
        href="stateMachineDiagram.gmfgraph#statemachine"/>
    <domainModel
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#/"/>
    <domainMetaElement
        href="../../../plugin/org.eclipse.uml2.uml/model/UML.ecore#//StateMachine"/>
    <palette
        href="stateMachineDiagram.gmftool#//@palette"/>
  </diagram>
</gmfmap:Mapping>
