Browse Source

Merge pull request #2099 from Yakindu/issue_2088

Issue 2088
rherrmannr 7 years ago
parent
commit
cba17b16bb

+ 31 - 1
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -402,15 +402,31 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 
 			if (!STextValidationModelUtils.isDefault(exit)) {
 				boolean hasOutgoingTransition = false;
+				boolean equalsOutgoingTransition = false;
 				Iterator<Transition> transitionIt = state.getOutgoingTransitions().iterator();
 				while (transitionIt.hasNext() && !hasOutgoingTransition) {
 					Transition transition = transitionIt.next();
 					hasOutgoingTransition = STextValidationModelUtils.isDefaultExitTransition(transition)
 							|| STextValidationModelUtils.isNamedExitTransition(transition, exit.getName());
+				
 				}
 				if (!hasOutgoingTransition) {
 					error(EXIT_UNUSED, exit, null, -1);
 				}
+				for (Transition transition : state.getOutgoingTransitions()) {
+					for (ReactionProperty property : transition.getProperties()) {
+						if (property instanceof ExitPointSpec) {
+							String exitpoint = ((ExitPointSpec) property).getExitpoint();
+							if (exitpoint.equals(exit.getName())) {
+								equalsOutgoingTransition = true;
+							}
+						}
+					}
+				}
+				if (!equalsOutgoingTransition) {
+					warning(EXIT_NEVER_USED + "'" + exit.getName() + "'", exit, null, -1);
+				}
+				
 			} else {
 				boolean hasOutgoingTransition = false;
 				Iterator<Transition> transitionIt = state.getOutgoingTransitions().iterator();
@@ -496,7 +512,7 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			error(errorMsg, parentFirst, null, -1);
 		}
 	}
-
+	
 	@Check(CheckType.NORMAL)
 	public void checkUnboundEntryPoints(final org.yakindu.sct.model.sgraph.State state) {
 		if (state.isComposite()) {
@@ -544,6 +560,20 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 							if (!hasTargetEntry) {
 								error(TRANSITION_UNBOUND_NAMED_ENTRY_POINT + specName, transition, null, -1);
 							}
+							boolean usingEntry = false;
+							for (Region region : state.getRegions()) {
+								EList<Vertex> vertices = region.getVertices();
+								for(Vertex vertice : vertices) {
+									if (vertice instanceof Entry) {
+										if (spec.getEntrypoint().equals(vertice.getName())) {
+											usingEntry = true;
+										}
+									}
+								}
+							}
+							if (!usingEntry) {
+								warning(ENTRY_NOT_EXIST + specName, transition, null, -1);
+							}
 						}
 					}
 				}

+ 2 - 0
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextValidationMessages.java

@@ -41,7 +41,9 @@ public interface STextValidationMessages {
 	public static final String REGION_UNBOUND_DEFAULT_ENTRY_POINT = "Region must have a 'default' entry.";
 	public static final String REGION_UNBOUND_NAMED_ENTRY_POINT = "Region should have a named entry to support transitions entry specification: ";
 	public static final String ENTRY_UNUSED = "The named entry is not used by incoming transitions.";
+	public static final String ENTRY_NOT_EXIST = "The named entry does not exist: ";
 	public static final String EXIT_UNUSED = "This exit is not connected to any outgoing transitions.";
+	public static final String EXIT_NEVER_USED = "The named exit is not used: ";
 	public static final String TRANSITION_EXIT_SPEC_ON_MULTIPLE_SIBLINGS = "ExitPointSpec can't be used on transition siblings.";
 	public static final String ISSUE_TRANSITION_WITHOUT_TRIGGER = "Missing trigger. Transition is never taken. Use 'oncycle' or 'always' instead.";
 	public static final String EXITPOINTSPEC_WITH_TRIGGER = "Transitions with an exit point spec does not have a trigger or guard.";

+ 10 - 5
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/TestModelsContainErrorsTest.java

@@ -66,12 +66,17 @@ public class TestModelsContainErrorsTest {
 	}
 
 	@Test
-	public void testTestModelContainsErrors() throws Exception {
+	public void testTestModelContainsNoErrors() throws Exception {
 		AssertableDiagnostics validate = tester.validate(statechart);
-		//TODO: check warning in Choice.sct
-		if (statechart.getName().equals("Choice"))
-			return;
 		assertTrue("Testmodel " + statechart.getName() + " contains validation diagnostics",
-				Iterables.size(validate.getAllDiagnostics()) == 0);
+				Iterables.size(validate.getAllDiagnostics()) == getAllowedDiagnostics(statechart.getName()));
+	}
+	
+	private int getAllowedDiagnostics (String name) {
+		if("EnterState".equals(name)) // EnterState should contain 1 warning marker for unknown entry point 'g'
+			return 1;
+		if("ExitState".equals(name)) // ExitState should contain 1 warning marker for unusd exit point 'g'
+			return 1;
+		return 0;
 	}
 }

+ 31 - 1
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/validation/STextJavaValidatorTest.java

@@ -47,6 +47,7 @@ import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
+import org.yakindu.sct.model.sgraph.Vertex;
 import org.yakindu.sct.model.stext.inferrer.STextTypeInferrer;
 import org.yakindu.sct.model.stext.stext.ImportScope;
 import org.yakindu.sct.model.stext.stext.InterfaceScope;
@@ -697,7 +698,7 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnusedExitPoint.sct");
 		doValidateAllContents(Exit.class);
 
-		assertIssueCount(diagnostics, 1);
+		assertIssueCount(diagnostics, 2);
 		assertError(diagnostics, EXIT_UNUSED);
 
 		resetDiagnostics();
@@ -1027,4 +1028,33 @@ public class STextJavaValidatorTest extends AbstractSTextValidationTest implemen
 		result.assertAll(warningMsg("Duplicate"), warningMsg("Duplicate"), errorMsg("Duplicate"),
 				errorMsg("Duplicate"));
 	}
+	
+	@Test
+	public void checkUnknownEntry() {
+		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnknownEntryPoint.sct");
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (element instanceof Vertex) {
+				validator.validate(element, diagnostics, new HashMap<>());
+			}
+		}
+		assertIssueCount(diagnostics, 1);
+		assertWarning(diagnostics, ENTRY_NOT_EXIST + "'doesNotExist'");
+	}
+	
+	@Test
+	public void checkNeverUsedExit() {
+		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnusedExitPoint2.sct");
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) { 
+			EObject element = iter.next();
+			if (element instanceof Exit) {
+				validator.validate(element, diagnostics, new HashMap<>());
+			}
+		}
+		assertIssueCount(diagnostics, 1);
+		assertWarning(diagnostics, EXIT_NEVER_USED + "'unusedExitPoint'");
+	}
+	
 }

+ 208 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/validation/UnknownEntryPoint.sct

@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
+  <sgraph:Statechart xmi:id="_IPIaEG8PEei9CMIz-h2p1A" specification="@CycleBased(200)&#xA;&#xA;interface:&#xA;// Define events and&#xA;// and variables here. &#xA;//Use CTRL + Space for content assist." name="UnknownEntryPoint">
+    <regions xmi:id="_IPJBLW8PEei9CMIz-h2p1A" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_IPJoNm8PEei9CMIz-h2p1A">
+        <outgoingTransitions xmi:id="_QMLwMG8PEei9CMIz-h2p1A" specification="" target="_OLsfIG8PEei9CMIz-h2p1A"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_OLsfIG8PEei9CMIz-h2p1A" name="StateA" incomingTransitions="_QMLwMG8PEei9CMIz-h2p1A">
+        <outgoingTransitions xmi:id="_TRn3IG8PEei9CMIz-h2p1A" specification="always #>doesNotExist > doesExist" target="_OjcQwG8PEei9CMIz-h2p1A"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_OjcQwG8PEei9CMIz-h2p1A" name="StateB" incomingTransitions="_TRn3IG8PEei9CMIz-h2p1A">
+        <regions xmi:id="_Ojc30m8PEei9CMIz-h2p1A" name="r1">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_Bb9VwG8SEeindukGo-aWiw" name="">
+            <outgoingTransitions xmi:id="_Kgi3gG8ZEeindukGo-aWiw" specification="" target="_HSUA8G8ZEeindukGo-aWiw"/>
+          </vertices>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_FO7z928ZEeindukGo-aWiw" name="doesExist">
+            <outgoingTransitions xmi:id="_Mlg_8G8ZEeindukGo-aWiw" specification="" target="_JzjOoG8ZEeindukGo-aWiw"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_HSUA8G8ZEeindukGo-aWiw" name="StateD" incomingTransitions="_Kgi3gG8ZEeindukGo-aWiw"/>
+          <vertices xsi:type="sgraph:State" xmi:id="_JzjOoG8ZEeindukGo-aWiw" name="StateF" incomingTransitions="_Mlg_8G8ZEeindukGo-aWiw"/>
+        </regions>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_IPJBKm8PEei9CMIz-h2p1A" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_IPIaEG8PEei9CMIz-h2p1A" measurementUnit="Pixel">
+    <children xmi:id="_IPJBLm8PEei9CMIz-h2p1A" type="Region" element="_IPJBLW8PEei9CMIz-h2p1A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_IPJoMG8PEei9CMIz-h2p1A" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_IPJoMW8PEei9CMIz-h2p1A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_IPJoMm8PEei9CMIz-h2p1A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_IPJoM28PEei9CMIz-h2p1A" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_IPJoN28PEei9CMIz-h2p1A" type="Entry" element="_IPJoNm8PEei9CMIz-h2p1A">
+          <children xmi:id="_IPJoO28PEei9CMIz-h2p1A" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_IPKPQG8PEei9CMIz-h2p1A" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_IPKPQW8PEei9CMIz-h2p1A"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_IPKPQm8PEei9CMIz-h2p1A"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_IPJoPG8PEei9CMIz-h2p1A" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPJoPW8PEei9CMIz-h2p1A"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_IPJoOG8PEei9CMIz-h2p1A" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+          <styles xsi:type="notation:NamedStyle" xmi:id="_IPJoOW8PEei9CMIz-h2p1A" name="allowColors"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPKPQ28PEei9CMIz-h2p1A" x="70" y="20" width="15" height="15"/>
+        </children>
+        <children xmi:id="_OLtGMm8PEei9CMIz-h2p1A" type="State" element="_OLsfIG8PEei9CMIz-h2p1A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_OLttQG8PEei9CMIz-h2p1A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_OLttQW8PEei9CMIz-h2p1A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_OLttQm8PEei9CMIz-h2p1A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_OLttQ28PEei9CMIz-h2p1A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_OLttRG8PEei9CMIz-h2p1A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OLttRW8PEei9CMIz-h2p1A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_OLttRm8PEei9CMIz-h2p1A" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_OLtGM28PEei9CMIz-h2p1A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_OLtGNG8PEei9CMIz-h2p1A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_OLttR28PEei9CMIz-h2p1A" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OLtGNW8PEei9CMIz-h2p1A" x="72" y="107" width="75" height="53"/>
+        </children>
+        <children xmi:id="_Ojde4G8PEei9CMIz-h2p1A" type="State" element="_OjcQwG8PEei9CMIz-h2p1A">
+          <children xsi:type="notation:DecorationNode" xmi:id="_Ojde5G8PEei9CMIz-h2p1A" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_Ojde5W8PEei9CMIz-h2p1A"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_Ojde5m8PEei9CMIz-h2p1A"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_OjeF8G8PEei9CMIz-h2p1A" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_OjeF8W8PEei9CMIz-h2p1A" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OjeF8m8PEei9CMIz-h2p1A"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_OjeF828PEei9CMIz-h2p1A" type="StateFigureCompartment">
+            <children xmi:id="_N1vRsG8ZEeindukGo-aWiw" type="Region" element="_Ojc30m8PEei9CMIz-h2p1A">
+              <children xsi:type="notation:DecorationNode" xmi:id="_N1vRsW8ZEeindukGo-aWiw" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vRsm8ZEeindukGo-aWiw"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_N1vRs28ZEeindukGo-aWiw"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_N1vRtG8ZEeindukGo-aWiw" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_N1vRy28ZEeindukGo-aWiw" type="Entry" element="_Bb9VwG8SEeindukGo-aWiw">
+                  <children xmi:id="_N1vRzG8ZEeindukGo-aWiw" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_N1vRzW8ZEeindukGo-aWiw" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vRzm8ZEeindukGo-aWiw"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_N1vRz28ZEeindukGo-aWiw"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR0G8ZEeindukGo-aWiw" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR0W8ZEeindukGo-aWiw"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR0m8ZEeindukGo-aWiw" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_N1vR028ZEeindukGo-aWiw" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR1G8ZEeindukGo-aWiw" x="35" y="-19"/>
+                </children>
+                <children xmi:id="_N1vR328ZEeindukGo-aWiw" type="Entry" element="_FO7z928ZEeindukGo-aWiw">
+                  <children xmi:id="_N1vR4G8ZEeindukGo-aWiw" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_N1vR4W8ZEeindukGo-aWiw" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR4m8ZEeindukGo-aWiw"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_N1vR428ZEeindukGo-aWiw"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR5G8ZEeindukGo-aWiw" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR5W8ZEeindukGo-aWiw" x="19" y="-1"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR5m8ZEeindukGo-aWiw" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_N1vR528ZEeindukGo-aWiw" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR6G8ZEeindukGo-aWiw" x="152" y="-5"/>
+                </children>
+                <children xmi:id="_N1vR6W8ZEeindukGo-aWiw" type="State" element="_HSUA8G8ZEeindukGo-aWiw">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_N1vR6m8ZEeindukGo-aWiw" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR628ZEeindukGo-aWiw"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_N1vR7G8ZEeindukGo-aWiw"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_N1vR7W8ZEeindukGo-aWiw" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_N1vR7m8ZEeindukGo-aWiw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR728ZEeindukGo-aWiw"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_N1vR8G8ZEeindukGo-aWiw" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_N1vR8W8ZEeindukGo-aWiw" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_N1vR8m8ZEeindukGo-aWiw"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_N1vR828ZEeindukGo-aWiw" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1vR9G8ZEeindukGo-aWiw" x="20" y="59"/>
+                </children>
+                <children xmi:id="_N1v4zG8ZEeindukGo-aWiw" type="State" element="_JzjOoG8ZEeindukGo-aWiw">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_N1v4zW8ZEeindukGo-aWiw" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_N1v4zm8ZEeindukGo-aWiw"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_N1v4z28ZEeindukGo-aWiw"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_N1v40G8ZEeindukGo-aWiw" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_N1v40W8ZEeindukGo-aWiw" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1v40m8ZEeindukGo-aWiw"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_N1v4028ZEeindukGo-aWiw" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_N1v41G8ZEeindukGo-aWiw" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_N1v41W8ZEeindukGo-aWiw"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_N1v41m8ZEeindukGo-aWiw" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1v4128ZEeindukGo-aWiw" x="128" y="59"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1v42G8ZEeindukGo-aWiw"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_N1v42W8ZEeindukGo-aWiw" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_N1v42m8ZEeindukGo-aWiw"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_Ojde4W8PEei9CMIz-h2p1A" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_Ojde4m8PEei9CMIz-h2p1A"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_OjeF9G8PEei9CMIz-h2p1A" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Ojde428PEei9CMIz-h2p1A" x="90" y="243" width="439" height="247"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPJoNG8PEei9CMIz-h2p1A"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_IPJBL28PEei9CMIz-h2p1A" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPJoNW8PEei9CMIz-h2p1A" x="78" y="84" width="551" height="541"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_IPLdZG8PEei9CMIz-h2p1A" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_IPLdZm8PEei9CMIz-h2p1A" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_IPLdZ28PEei9CMIz-h2p1A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_IPLdaG8PEei9CMIz-h2p1A"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_IPLdaW8PEei9CMIz-h2p1A" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPLdam8PEei9CMIz-h2p1A"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_IPLda28PEei9CMIz-h2p1A" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:BooleanValueStyle" xmi:id="_IPJBK28PEei9CMIz-h2p1A" name="inlineDefinitionSection"/>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_IPJBLG8PEei9CMIz-h2p1A"/>
+    <edges xmi:id="_QMMXQG8PEei9CMIz-h2p1A" type="Transition" element="_QMLwMG8PEei9CMIz-h2p1A" source="_IPJoN28PEei9CMIz-h2p1A" target="_OLtGMm8PEei9CMIz-h2p1A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_QMM-UG8PEei9CMIz-h2p1A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_QMM-UW8PEei9CMIz-h2p1A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_QMM-Um8PEei9CMIz-h2p1A" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_QMMXQW8PEei9CMIz-h2p1A" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_QMMXQ28PEei9CMIz-h2p1A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_QMMXQm8PEei9CMIz-h2p1A" points="[2, 7, -19, -74]$[23, 80, 2, -1]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_QMOzgG8PEei9CMIz-h2p1A" id="(0.37333333333333335,0.03773584905660377)"/>
+    </edges>
+    <edges xmi:id="_TRqTYG8PEei9CMIz-h2p1A" type="Transition" element="_TRn3IG8PEei9CMIz-h2p1A" source="_OLtGMm8PEei9CMIz-h2p1A" target="_Ojde4G8PEei9CMIz-h2p1A">
+      <children xsi:type="notation:DecorationNode" xmi:id="_TRq6cG8PEei9CMIz-h2p1A" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_TRq6cW8PEei9CMIz-h2p1A"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_TRq6cm8PEei9CMIz-h2p1A" y="-224"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_TRqTYW8PEei9CMIz-h2p1A" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_TRqTY28PEei9CMIz-h2p1A" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_TRqTYm8PEei9CMIz-h2p1A" points="[-5, 7, -129, -3]$[-5, 44, -129, 34]$[123, 44, -1, 34]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_TRsvoG8PEei9CMIz-h2p1A" id="(0.6133333333333333,0.8679245283018868)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_TRsvoW8PEei9CMIz-h2p1A" id="(0.0045123530660625116,0.26019962651695533)"/>
+    </edges>
+    <edges xmi:id="_KgjekG8ZEeindukGo-aWiw" type="Transition" element="_Kgi3gG8ZEeindukGo-aWiw" source="_N1vRy28ZEeindukGo-aWiw" target="_N1vR6W8ZEeindukGo-aWiw">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KgjelG8ZEeindukGo-aWiw" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KgjelW8ZEeindukGo-aWiw"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_Kgjelm8ZEeindukGo-aWiw" x="25" y="4"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_KgjekW8ZEeindukGo-aWiw" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_Kgjek28ZEeindukGo-aWiw" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_Kgjekm8ZEeindukGo-aWiw" points="[4, 8, -10, -88]$[4, 1, -10, -95]$[20, 1, 6, -95]$[20, 72, 6, -24]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_fmtocG-nEeiTq_tlxqwNZA" id="(0.5,0.5)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_fmzvEG-nEeiTq_tlxqwNZA" id="(0.5,0.5)"/>
+    </edges>
+    <edges xmi:id="_MliOEG8ZEeindukGo-aWiw" type="Transition" element="_Mlg_8G8ZEeindukGo-aWiw" source="_N1vR328ZEeindukGo-aWiw" target="_N1v4zG8ZEeindukGo-aWiw">
+      <children xsi:type="notation:DecorationNode" xmi:id="_MliOFG8ZEeindukGo-aWiw" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_MliOFW8ZEeindukGo-aWiw"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_MliOFm8ZEeindukGo-aWiw" x="-20" y="-19"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_MliOEW8ZEeindukGo-aWiw" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_MliOE28ZEeindukGo-aWiw" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_MliOEm8ZEeindukGo-aWiw" points="[2, 7, -1, -51]$[2, 37, -1, -21]$[-9, 37, -12, -21]$[-9, 57, -12, -1]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_PxTmgG8ZEeindukGo-aWiw" id="(0.5,0.5)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_MlyswG8ZEeindukGo-aWiw" id="(0.5068493150684932,0.03773584905660377)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 266 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/validation/UnusedExitPoint2.sct

@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
+  <sgraph:Statechart xmi:id="_sXs0YG-3EeiAvKo30E3C2w" specification="@CycleBased(200)&#xA;&#xA;interface:&#xA;// Define events and&#xA;// and variables here. &#xA;//Use CTRL + Space for content assist." name="UnusedExitPoint2">
+    <regions xmi:id="_4sd7NG_DEeiAvKo30E3C2w" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_4sqvg2_DEeiAvKo30E3C2w">
+        <outgoingTransitions xmi:id="_4srWlG_DEeiAvKo30E3C2w" specification="" target="_4sfwbW_DEeiAvKo30E3C2w"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_4sfwbW_DEeiAvKo30E3C2w" name="StateB" incomingTransitions="_4srWlG_DEeiAvKo30E3C2w">
+        <outgoingTransitions xmi:id="_4sphYm_DEeiAvKo30E3C2w" specification="# usedExitPoint >" target="_4sfJUG_DEeiAvKo30E3C2w"/>
+        <outgoingTransitions xmi:id="_NdI-sG_NEeicrs4tQMXmcQ" specification="" target="_M5b0sG_NEeicrs4tQMXmcQ"/>
+        <regions xmi:id="_4siMoG_DEeiAvKo30E3C2w" name="r1">
+          <vertices xsi:type="sgraph:Exit" xmi:id="_4so6UG_DEeiAvKo30E3C2w" name="unusedExitPoint" incomingTransitions="_4snsMG_DEeiAvKo30E3C2w"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_4sl3Bm_DEeiAvKo30E3C2w">
+            <outgoingTransitions xmi:id="_4snFIG_DEeiAvKo30E3C2w" specification="" target="_4sizvG_DEeiAvKo30E3C2w"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_4sizvG_DEeiAvKo30E3C2w" name="StateD" incomingTransitions="_4snFIG_DEeiAvKo30E3C2w">
+            <outgoingTransitions xmi:id="_4snsMG_DEeiAvKo30E3C2w" specification="always" target="_4so6UG_DEeiAvKo30E3C2w"/>
+            <outgoingTransitions xmi:id="_2pjLwG_EEeiAvKo30E3C2w" specification="always" target="_2ppSYG_EEeiAvKo30E3C2w"/>
+            <outgoingTransitions xmi:id="_rczF0G_MEeicrs4tQMXmcQ" specification="always" target="_q-k4wG_MEeicrs4tQMXmcQ"/>
+          </vertices>
+          <vertices xsi:type="sgraph:Exit" xmi:id="_2ppSYG_EEeiAvKo30E3C2w" incomingTransitions="_2pjLwG_EEeiAvKo30E3C2w"/>
+          <vertices xsi:type="sgraph:Exit" xmi:id="_q-k4wG_MEeicrs4tQMXmcQ" name="usedExitPoint" incomingTransitions="_rczF0G_MEeicrs4tQMXmcQ"/>
+        </regions>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_4sfJUG_DEeiAvKo30E3C2w" name="StateC" incomingTransitions="_4sphYm_DEeiAvKo30E3C2w"/>
+      <vertices xsi:type="sgraph:State" xmi:id="_M5b0sG_NEeicrs4tQMXmcQ" name="Default Exit" incomingTransitions="_NdI-sG_NEeicrs4tQMXmcQ"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_sXupkG-3EeiAvKo30E3C2w" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_sXs0YG-3EeiAvKo30E3C2w" measurementUnit="Pixel">
+    <children xmi:id="_4sctEG_DEeiAvKo30E3C2w" type="Region" element="_4sd7NG_DEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_4sd7MW_DEeiAvKo30E3C2w" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_4sd7M2_DEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_4sd7Mm_DEeiAvKo30E3C2w"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_4sdUIm_DEeiAvKo30E3C2w" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_4sqIcW_DEeiAvKo30E3C2w" type="Entry" element="_4sqvg2_DEeiAvKo30E3C2w">
+          <children xmi:id="_4sqIdW_DEeiAvKo30E3C2w" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_4sqvgG_DEeiAvKo30E3C2w" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_4sqvgm_DEeiAvKo30E3C2w"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_4sqvgW_DEeiAvKo30E3C2w"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_4sqId2_DEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sqIdm_DEeiAvKo30E3C2w"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_4sqIdG_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+          <styles xsi:type="notation:NamedStyle" xmi:id="_4sqIc2_DEeiAvKo30E3C2w" name="allowColors"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sqIcm_DEeiAvKo30E3C2w" x="70" y="20" width="15" height="15"/>
+        </children>
+        <children xmi:id="_4sfwYW_DEeiAvKo30E3C2w" type="State" element="_4sfwbW_DEeiAvKo30E3C2w">
+          <children xsi:type="notation:DecorationNode" xmi:id="_4sfwYm_DEeiAvKo30E3C2w" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_4sfwY2_DEeiAvKo30E3C2w"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_4sfwZG_DEeiAvKo30E3C2w"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_4sfwZW_DEeiAvKo30E3C2w" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_4sfwZm_DEeiAvKo30E3C2w" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sfwZ2_DEeiAvKo30E3C2w"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_4sfwaG_DEeiAvKo30E3C2w" type="StateFigureCompartment">
+            <children xmi:id="_4shlkW_DEeiAvKo30E3C2w" type="Region" element="_4siMoG_DEeiAvKo30E3C2w">
+              <children xsi:type="notation:DecorationNode" xmi:id="_4shllm_DEeiAvKo30E3C2w" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_4shlmG_DEeiAvKo30E3C2w"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_4shll2_DEeiAvKo30E3C2w"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_4shllG_DEeiAvKo30E3C2w" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_4soTQG_DEeiAvKo30E3C2w" type="Exit" element="_4so6UG_DEeiAvKo30E3C2w">
+                  <children xmi:id="_4soTQW_DEeiAvKo30E3C2w" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_4soTQm_DEeiAvKo30E3C2w" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_4soTQ2_DEeiAvKo30E3C2w"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_4soTRG_DEeiAvKo30E3C2w"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_4soTRW_DEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4soTRm_DEeiAvKo30E3C2w" x="-58" y="-1"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_4soTR2_DEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4soTSG_DEeiAvKo30E3C2w" x="40" y="211"/>
+                </children>
+                <children xmi:id="_4slP8m_DEeiAvKo30E3C2w" type="Entry" element="_4sl3Bm_DEeiAvKo30E3C2w">
+                  <children xmi:id="_4sl3AG_DEeiAvKo30E3C2w" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_4sl3A2_DEeiAvKo30E3C2w" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_4sl3BW_DEeiAvKo30E3C2w"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_4sl3BG_DEeiAvKo30E3C2w"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_4sl3Am_DEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sl3AW_DEeiAvKo30E3C2w"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_4slP9W_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="0" lineColor="16777215"/>
+                  <styles xsi:type="notation:NamedStyle" xmi:id="_4slP9G_DEeiAvKo30E3C2w" name="allowColors"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4slP82_DEeiAvKo30E3C2w" x="10" y="27"/>
+                </children>
+                <children xmi:id="_4sizsG_DEeiAvKo30E3C2w" type="State" element="_4sizvG_DEeiAvKo30E3C2w">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_4sizsW_DEeiAvKo30E3C2w" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_4sizsm_DEeiAvKo30E3C2w"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_4sizs2_DEeiAvKo30E3C2w"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_4siztG_DEeiAvKo30E3C2w" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_4siztW_DEeiAvKo30E3C2w" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4siztm_DEeiAvKo30E3C2w"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_4sizt2_DEeiAvKo30E3C2w" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_4sizuG_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_4sizuW_DEeiAvKo30E3C2w"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_4sizum_DEeiAvKo30E3C2w" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sizu2_DEeiAvKo30E3C2w" x="32" y="99"/>
+                </children>
+                <children xmi:id="_2porUG_EEeiAvKo30E3C2w" type="Exit" element="_2ppSYG_EEeiAvKo30E3C2w">
+                  <children xmi:id="_2porUW_EEeiAvKo30E3C2w" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_2porUm_EEeiAvKo30E3C2w" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_2porU2_EEeiAvKo30E3C2w"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_2porVG_EEeiAvKo30E3C2w"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_2porVW_EEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_2porVm_EEeiAvKo30E3C2w"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_2porV2_EEeiAvKo30E3C2w" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_2porWG_EEeiAvKo30E3C2w" x="166" y="115"/>
+                </children>
+                <children xmi:id="_q-qYUG_MEeicrs4tQMXmcQ" type="Exit" element="_q-k4wG_MEeicrs4tQMXmcQ">
+                  <children xmi:id="_q-rmcG_MEeicrs4tQMXmcQ" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_q-sNgG_MEeicrs4tQMXmcQ" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_q-sNgW_MEeicrs4tQMXmcQ"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_q-s0kG_MEeicrs4tQMXmcQ"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_q-rmcW_MEeicrs4tQMXmcQ" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_q-rmcm_MEeicrs4tQMXmcQ" x="-4" y="19"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_q-qYUW_MEeicrs4tQMXmcQ" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_q-qYUm_MEeicrs4tQMXmcQ" x="140" y="201"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4shllW_DEeiAvKo30E3C2w"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_4shlk2_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4shlkm_DEeiAvKo30E3C2w"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_4sfwaW_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_4sfwam_DEeiAvKo30E3C2w"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_4sfwa2_DEeiAvKo30E3C2w" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sfwbG_DEeiAvKo30E3C2w" x="25" y="128" width="380" height="344"/>
+        </children>
+        <children xmi:id="_4seiQG_DEeiAvKo30E3C2w" type="State" element="_4sfJUG_DEeiAvKo30E3C2w">
+          <children xsi:type="notation:DecorationNode" xmi:id="_4seiQW_DEeiAvKo30E3C2w" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_4seiQm_DEeiAvKo30E3C2w"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_4seiQ2_DEeiAvKo30E3C2w"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_4seiRG_DEeiAvKo30E3C2w" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_4seiRW_DEeiAvKo30E3C2w" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4seiRm_DEeiAvKo30E3C2w"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_4seiR2_DEeiAvKo30E3C2w" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_4seiSG_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_4seiSW_DEeiAvKo30E3C2w"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_4seiSm_DEeiAvKo30E3C2w" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4seiS2_DEeiAvKo30E3C2w" x="278" y="70" width="74" height="53"/>
+        </children>
+        <children xmi:id="_M5ffEG_NEeicrs4tQMXmcQ" type="State" element="_M5b0sG_NEeicrs4tQMXmcQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_M5gGIG_NEeicrs4tQMXmcQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_M5gGIW_NEeicrs4tQMXmcQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_M5gGIm_NEeicrs4tQMXmcQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_M5gGI2_NEeicrs4tQMXmcQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_M5gtMG_NEeicrs4tQMXmcQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_M5gtMW_NEeicrs4tQMXmcQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_M5gtMm_NEeicrs4tQMXmcQ" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_M5ffEW_NEeicrs4tQMXmcQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_M5ffEm_NEeicrs4tQMXmcQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_M5gtM2_NEeicrs4tQMXmcQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_M5ffE2_NEeicrs4tQMXmcQ" x="469" y="352" width="113" height="53"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sd7MG_DEeiAvKo30E3C2w"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_4sdUIW_DEeiAvKo30E3C2w" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4sdUIG_DEeiAvKo30E3C2w" x="48" y="258" width="618" height="515"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_sX3zgG-3EeiAvKo30E3C2w" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_sX3zgm-3EeiAvKo30E3C2w" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_sX3zg2-3EeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_sX3zhG-3EeiAvKo30E3C2w"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_sX3zhW-3EeiAvKo30E3C2w" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_sX3zhm-3EeiAvKo30E3C2w"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_sX3zh2-3EeiAvKo30E3C2w" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:BooleanValueStyle" xmi:id="_sXupkW-3EeiAvKo30E3C2w" name="inlineDefinitionSection"/>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_sXupkm-3EeiAvKo30E3C2w"/>
+    <edges xmi:id="_4sqvhG_DEeiAvKo30E3C2w" type="Transition" element="_4srWlG_DEeiAvKo30E3C2w" source="_4sqIcW_DEeiAvKo30E3C2w" target="_4sfwYW_DEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_4srWkW_DEeiAvKo30E3C2w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_4srWk2_DEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_4srWkm_DEeiAvKo30E3C2w" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_4srWkG_DEeiAvKo30E3C2w" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_4sqvh2_DEeiAvKo30E3C2w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_4sqvhm_DEeiAvKo30E3C2w" points="[0, 7, -25, -215]$[-10, 218, -35, -4]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_4sqvhW_DEeiAvKo30E3C2w" id="(0.09333333333333334,0.14244424776155223)"/>
+    </edges>
+    <edges xmi:id="_4sl3B2_DEeiAvKo30E3C2w" type="Transition" element="_4snFIG_DEeiAvKo30E3C2w" source="_4slP8m_DEeiAvKo30E3C2w" target="_4sizsG_DEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_4smeEm_DEeiAvKo30E3C2w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_4smeFG_DEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_4smeE2_DEeiAvKo30E3C2w" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_4smeEW_DEeiAvKo30E3C2w" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_4smeEG_DEeiAvKo30E3C2w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_4sl3CG_DEeiAvKo30E3C2w" points="[7, 0, -25, -2]$[40, 2, 8, 0]"/>
+    </edges>
+    <edges xmi:id="_4soTSW_DEeiAvKo30E3C2w" type="Transition" element="_4snsMG_DEeiAvKo30E3C2w" source="_4sizsG_DEeiAvKo30E3C2w" target="_4soTQG_DEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_4soTSm_DEeiAvKo30E3C2w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_4soTS2_DEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_4soTTG_DEeiAvKo30E3C2w" x="56" y="4"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_4soTTW_DEeiAvKo30E3C2w" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_4soTTm_DEeiAvKo30E3C2w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_4soTT2_DEeiAvKo30E3C2w" points="[1, -3, -29, 62]$[22, -65, -8, 0]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_4soTUG_DEeiAvKo30E3C2w" id="(0.5263157894736842,0.07547169811320754)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_4soTUW_DEeiAvKo30E3C2w" id="(0.5,0.5)"/>
+    </edges>
+    <edges xmi:id="_2porWW_EEeiAvKo30E3C2w" type="Transition" element="_2pjLwG_EEeiAvKo30E3C2w" source="_4sizsG_DEeiAvKo30E3C2w" target="_2porUG_EEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_2porWm_EEeiAvKo30E3C2w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_2porW2_EEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_2porXG_EEeiAvKo30E3C2w" x="2" y="-36"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_2porXW_EEeiAvKo30E3C2w" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_2porXm_EEeiAvKo30E3C2w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_2porX2_EEeiAvKo30E3C2w" points="[7, -4, -79, 53]$[91, -52, 5, 5]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_2porYG_EEeiAvKo30E3C2w" id="(0.9078947368421053,0.2830188679245283)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_2porYW_EEeiAvKo30E3C2w" id="(0.5,0.5)"/>
+    </edges>
+    <edges xmi:id="_4so6UW_DEeiAvKo30E3C2w" type="Transition" element="_4sphYm_DEeiAvKo30E3C2w" source="_4sfwYW_DEeiAvKo30E3C2w" target="_4seiQG_DEeiAvKo30E3C2w">
+      <children xsi:type="notation:DecorationNode" xmi:id="_4so6V2_DEeiAvKo30E3C2w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_4sphYW_DEeiAvKo30E3C2w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_4sphYG_DEeiAvKo30E3C2w" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_4so6Vm_DEeiAvKo30E3C2w" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_4so6VW_DEeiAvKo30E3C2w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_4so6VG_DEeiAvKo30E3C2w" points="[19, -6, -71, 28]$[91, -11, 1, 23]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_4so6U2_DEeiAvKo30E3C2w" id="(0.4750775681341719,0.020969603693728356)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_4so6Um_DEeiAvKo30E3C2w" id="(0.14864864864864866,0.5283018867924528)"/>
+    </edges>
+    <edges xmi:id="_rc1iEG_MEeicrs4tQMXmcQ" type="Transition" element="_rczF0G_MEeicrs4tQMXmcQ" source="_4sizsG_DEeiAvKo30E3C2w" target="_q-qYUG_MEeicrs4tQMXmcQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_rc4lYG_MEeicrs4tQMXmcQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_rc4lYW_MEeicrs4tQMXmcQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_rc4lYm_MEeicrs4tQMXmcQ" x="-19" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_rc1iEW_MEeicrs4tQMXmcQ" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_rc3-UG_MEeicrs4tQMXmcQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_rc1iEm_MEeicrs4tQMXmcQ" points="[6, 10, -50, -84]$[6, 40, -50, -54]$[61, 40, 5, -54]$[61, 99, 5, 5]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_rc7osG_MEeicrs4tQMXmcQ" id="(0.8552631578947368,0.8113207547169812)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_pI5UEG_NEeit1txIZILtRw" id="(0.5,0.5)"/>
+    </edges>
+    <edges xmi:id="_NdKz4G_NEeicrs4tQMXmcQ" type="Transition" element="_NdI-sG_NEeicrs4tQMXmcQ" source="_4sfwYW_DEeiAvKo30E3C2w" target="_M5ffEG_NEeicrs4tQMXmcQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_NdKz5G_NEeicrs4tQMXmcQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_NdKz5W_NEeicrs4tQMXmcQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_NdKz5m_NEeicrs4tQMXmcQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_NdKz4W_NEeicrs4tQMXmcQ" routing="Rectilinear" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_NdKz42_NEeicrs4tQMXmcQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_NdKz4m_NEeicrs4tQMXmcQ" points="[4, 3, -121, -80]$[130, 71, 5, -12]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_NdN3MG_NEeicrs4tQMXmcQ" id="(0.8081709401709403,0.4296862429605792)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_NdN3MW_NEeicrs4tQMXmcQ" id="(0.2706552706552707,0.2641509433962264)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>