blob: 3cd58bc2a199e0469be2a8adaf4447d958a37ef7 [file] [log] [blame]
<?xml version="1.0" encoding="ASCII"?>
<umlx:UMLXModel 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:umlx="http://www.eclipse.org/qvt/2016/UMLX">
<comments>*****************************************************************************
Copyright (c) 2007,2008 Tata Consultancy Services and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Eclipse Public License v2.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/epl-v20.html
Contributors:
TCS - initial implementation for ModelMorf
E.D.Willink - alignment with evolved specification
E.D.Willink - rename / comment
*****************************************************************************</comments>
<ownedTxDiagrams xmi:id="T.HierarchicalStateMachine2FlatStateMachine" name="HierarchicalStateMachine2FlatStateMachine" package="org::eclipse::qvtd::xtext::umlx::tests::hstm2fstm">
<comments>Transform a hierarchical StateMachine into a flat StateMachine.</comments>
<ownedRelDiagrams xmi:id="R.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine" name="HierachicalStateMachine2FlatStateMachine" isTop="true">
<comments>Map each hierarchical StateMachine to a flat StateMachine</comments>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//StateMachine/name"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//StateMachine/name"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine..stateMachineName" name="stateMachineName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.hier">
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...hierarchicalStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine" name="flatStateMachine" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine...flatStateMachine..stateMachineName">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
</ownedRelDiagrams>
<ownedRelDiagrams xmi:id="R.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition" name="HierachicalTransition2FlatTransition" isTop="true">
<comments>Map each hierarchical Transition to a Flat Transition in the corresponding StateMachine
for each combination of possible leaf end states</comments>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//Transition/name"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//Transition/name"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..transitionName" name="transitionName" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafFromState" name="leafFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafToState" name="leafToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="X.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..null">
<initExpressionLines>this.getLeafStates(hierarchicalFromState)->includes(leafFromState)</initExpressionLines>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="_V65T4D79Eeeb3uIvElgAOw">
<initExpressionLines>this.getLeafStates(hierarchicalToState)->includes(leafToState)</initExpressionLines>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.hier">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalFromState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//Transition/fromState"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//StateMachine/ownedTransitions"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalToState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//Transition/toState"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalTransition" name="hierarchicalTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...hierarchicalTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//Transition"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalFromState" name="hierarchicalFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalFromState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalStateMachine..hierarchicalTransition">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalToState" name="hierarchicalToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier..hierarchicalTransition..hierarchicalToState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//Transition/fromState"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//StateMachine/ownedTransitions"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState" source="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" target="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//Transition/toState"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatTransition" name="flatTransition" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition...flatTransition..transitionName E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//Transition"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState" name="flatFromState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatFromState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatStateMachine" name="flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatStateMachine..flatTransition">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState" name="flatToState" incoming="E.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat..flatTransition..flatToState" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelInvocationNodes xmi:id="V.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine" isThen="false" referredRelDiagram="R.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine">
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.hier.hierarchicalStateMachine" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine"/>
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.HierachicalStateMachine2FlatStateMachine.flatStateMachine" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatStateMachine" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine"/>
</ownedRelInvocationNodes>
<ownedRelInvocationNodes xmi:id="V.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~" isThen="false" referredRelDiagram="R.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState">
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.leafState" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafFromState" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState"/>
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatFromState.leafFromState~.flatState" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatFromState" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState"/>
</ownedRelInvocationNodes>
<ownedRelInvocationNodes xmi:id="V.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~" isThen="false" referredRelDiagram="R.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState">
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.leafState" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition..leafToState" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState"/>
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.LeafState2FlatState~flatToState.leafToState~.flatState" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalTransition2FlatTransition.flat.flatToState" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState"/>
</ownedRelInvocationNodes>
</ownedRelDiagrams>
<ownedRelDiagrams xmi:id="R.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState" name="LeafState2FlatState" isTop="true">
<comments>Map each Leaf State to a Flat State in the corresponding StateMachine.</comments>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="FlatStateMachine.ecore#//State/name"/>
</ownedRelPatternEdges>
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName">
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="HierarchicalStateMachine.ecore#//State/name"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState..stateName" name="stateName" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName">
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.hier">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="HierarchicalStateMachine.ecore#//StateMachine/ownedStates"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.leafState" name="leafState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...leafState..stateName">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" name="hierarchicalStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier..hierarchicalStateMachine..leafState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="X.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.null">
<initExpressionLines>leafState.nestedStates->isEmpty()</initExpressionLines>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelDomainNodes xmi:id="D.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat" isEnforced="true" referredTxTypedModelNode="Tp.HierarchicalStateMachine2FlatStateMachine.flat">
<ownedRelPatternEdges xmi:id="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState" source="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" target="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState">
<referredEStructuralFeature xsi:type="ecore:EReference" href="FlatStateMachine.ecore#//StateMachine/ownedStates"/>
</ownedRelPatternEdges>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatState" name="flatState" incoming="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState" isRoot="true" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState...flatState..stateName">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//State"/>
</ownedRelPatternNodes>
<ownedRelPatternNodes xmi:id="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" name="flatStateMachine" invokingRelInvocationEdges="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.flatStateMachine" outgoing="E.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat..flatStateMachine..flatState">
<referredEClassifier xsi:type="ecore:EClass" href="FlatStateMachine.ecore#//StateMachine"/>
</ownedRelPatternNodes>
</ownedRelDomainNodes>
<ownedRelInvocationNodes xmi:id="V.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine" isThen="false" referredRelDiagram="R.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine">
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.hierarchicalStateMachine" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.hier.hierarchicalStateMachine" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.hier.hierarchicalStateMachine"/>
<ownedRelInvocationEdges xmi:id="A.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.HierachicalStateMachine2FlatStateMachine.flatStateMachine" invokingRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.LeafState2FlatState.flat.flatStateMachine" referredRelPatternNode="C.HierarchicalStateMachine2FlatStateMachine.HierachicalStateMachine2FlatStateMachine.flat.flatStateMachine"/>
</ownedRelInvocationNodes>
</ownedRelDiagrams>
<ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.HierarchicalStateMachine">
<importAliases>hierMM</importAliases>
<referredEPackage href="HierarchicalStateMachine.ecore#/"/>
</ownedTxPackageNodes>
<ownedTxPackageNodes xmi:id="U.HierarchicalStateMachine2FlatStateMachine.FlatStateMachine">
<importAliases>flatMM</importAliases>
<referredEPackage href="FlatStateMachine.ecore#/"/>
</ownedTxPackageNodes>
<ownedTxQueryNodes xmi:id="Q.HierarchicalStateMachine2FlatStateMachine.getLeafStates..hierarchicalState" name="getLeafStates" isMany="true">
<comments>Return the leafStates of a given hierarchicalState.</comments>
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
<initExpressionLines>hierarchicalState->closure(nestedStates)?->select(nestedStates->isEmpty())</initExpressionLines>
<ownedTxParameterNodes xmi:id="Qp.HierarchicalStateMachine2FlatStateMachine.getLeafStates.hierarchicalState" name="hierarchicalState">
<referredEClassifier xsi:type="ecore:EClass" href="HierarchicalStateMachine.ecore#//State"/>
</ownedTxParameterNodes>
</ownedTxQueryNodes>
<ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.hier" name="hier" check="true" usedTxPackageNodes="U.HierarchicalStateMachine2FlatStateMachine.HierarchicalStateMachine"/>
<ownedTxTypedModelNodes xmi:id="Tp.HierarchicalStateMachine2FlatStateMachine.flat" name="flat" check="true" enforce="true" usedTxPackageNodes="U.HierarchicalStateMachine2FlatStateMachine.FlatStateMachine"/>
</ownedTxDiagrams>
</umlx:UMLXModel>