Browse Source

Added validation and tests for unused entry and exit nodes.

markus.muehlbrandt@gmail.com 12 years ago
parent
commit
aa31a81771

+ 79 - 5
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -11,6 +11,7 @@
  */
 package org.yakindu.sct.model.stext.validation;
 
+import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -114,6 +115,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 	public static final String REGION_UNBOUND_DEFAULT_EXIT_POINT = "Region must have a 'default' exit.";
 	public static final String REGION_UNBOUND_NAMED_ENTRY_POINT = "Region should have a named entry to support transitions entry specification: ";
 	public static final String REGION_UNBOUND_NAMED_EXIT_POINT = "Region should have a named exit to support transitions exit specification: ";
+	public static final String ENTRY_UNUSED = "The named entry is not used by incoming transitions.";
+	public static final String EXIT_UNUSED = "The named exit is not used by outgoing transitions.";
 
 	@Inject
 	private ISTextTypeInferrer typeInferrer;
@@ -127,6 +130,78 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 	@Named(Constants.LANGUAGE_NAME)
 	private String languageName;
 
+	@Check(CheckType.FAST)
+	public void checkUnusedEntry(final Entry entry) {
+		if (entry.getParentRegion().getComposite() instanceof org.yakindu.sct.model.sgraph.State) {
+			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) entry
+					.getParentRegion().getComposite();
+
+			if (!STextValidationModelUtils.isDefault(entry)) {
+
+				boolean hasIncomingTransition = false;
+				Iterator<Transition> transitionIt = state
+						.getIncomingTransitions().iterator();
+
+				while (transitionIt.hasNext() && !hasIncomingTransition) {
+
+					Iterator<ReactionProperty> propertyIt = transitionIt.next()
+							.getProperties().iterator();
+
+					while (propertyIt.hasNext() && !hasIncomingTransition) {
+
+						ReactionProperty property = propertyIt.next();
+
+						if (property instanceof EntryPointSpec) {
+
+							hasIncomingTransition = entry.getName()
+									.equals(((EntryPointSpec) property)
+											.getEntrypoint());
+						}
+					}
+				}
+				if (!hasIncomingTransition) {
+					warning(ENTRY_UNUSED, entry, null, -1);
+				}
+			}
+		}
+	}
+	
+	@Check(CheckType.FAST)
+	public void checkUnusedExit(final Exit exit) {
+		if (exit.getParentRegion().getComposite() instanceof org.yakindu.sct.model.sgraph.State) {
+			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) exit
+					.getParentRegion().getComposite();
+
+			if (!STextValidationModelUtils.isDefault(exit)) {
+
+				boolean hasOutgoingTransition = false;
+				Iterator<Transition> transitionIt = state
+						.getOutgoingTransitions().iterator();
+
+				while (transitionIt.hasNext() && !hasOutgoingTransition) {
+
+					Iterator<ReactionProperty> propertyIt = transitionIt.next()
+							.getProperties().iterator();
+
+					while (propertyIt.hasNext() && !hasOutgoingTransition) {
+
+						ReactionProperty property = propertyIt.next();
+
+						if (property instanceof ExitPointSpec) {
+
+							hasOutgoingTransition = exit.getName()
+									.equals(((ExitPointSpec) property)
+											.getExitpoint());
+						}
+					}
+				}
+				if (!hasOutgoingTransition) {
+					warning(EXIT_UNUSED, exit, null, -1);
+				}
+			}
+		}
+	}
+
 	@Check(CheckType.FAST)
 	public void checkTransitionSpecOnAtomicState(final Transition transition) {
 		for (ReactionProperty property : transition.getProperties()) {
@@ -139,14 +214,13 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 								transition, null, -1);
 					}
 				}
-			}
-			else if (property instanceof ExitPointSpec) {
+			} else if (property instanceof ExitPointSpec) {
 				if (transition.getSource() instanceof org.yakindu.sct.model.sgraph.State) {
 					org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) transition
 							.getSource();
 					if (!state.isComposite()) {
-						warning(TRANSITION_EXIT_SPEC_NOT_COMPOSITE,
-								transition, null, -1);
+						warning(TRANSITION_EXIT_SPEC_NOT_COMPOSITE, transition,
+								null, -1);
 					}
 				}
 			}
@@ -215,7 +289,7 @@ public class STextJavaValidator extends AbstractSTextJavaValidator {
 			}
 		}
 	}
-	
+
 	@Check(CheckType.FAST)
 	public void checkUnboundExitPoints(
 			final org.yakindu.sct.model.sgraph.State state) {

+ 14 - 1
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextValidationModelUtils.java

@@ -122,12 +122,25 @@ public final class STextValidationModelUtils {
 	}
 
 	// BASE
-	private static boolean isDefault(final NamedElement element) {
+	public static boolean isDefault(final NamedElement element) {
 		return element.getName() == null
 				|| (element.getName() != null && (element.getName().isEmpty() || element
 						.getName().equalsIgnoreCase("default")));
 	}
 
+	// stext
+	public static boolean isDefault(final ReactionProperty property) {
+		String target = null;
+		if (property instanceof EntryPointSpec) {
+			target = ((EntryPointSpec) property).getEntrypoint();
+		} else if (property instanceof ExitPointSpec) {
+			target = ((ExitPointSpec) property).getExitpoint();
+		}
+		return target == null
+				|| (target != null && (target.isEmpty() || target
+						.equalsIgnoreCase("default")));
+	}
+
 	// SGRAPH
 	private static List<Entry> getEntries(List<EObject> elements) {
 		List<Entry> entries = new ArrayList<Entry>();

+ 40 - 0
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/STextJavaValidatorTest.java

@@ -27,6 +27,8 @@ import static org.yakindu.sct.model.stext.validation.STextJavaValidator.TRANSITI
 import static org.yakindu.sct.model.stext.validation.STextJavaValidator.TRANSITION_EXIT_SPEC_NOT_COMPOSITE;
 import static org.yakindu.sct.model.stext.validation.STextJavaValidator.TRANSITION_UNBOUND_DEFAULT_ENTRY_POINT;
 import static org.yakindu.sct.model.stext.validation.STextJavaValidator.TRANSITION_UNBOUND_DEFAULT_EXIT_POINT;
+import static org.yakindu.sct.model.stext.validation.STextJavaValidator.ENTRY_UNUSED;
+import static org.yakindu.sct.model.stext.validation.STextJavaValidator.EXIT_UNUSED;
 
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -44,6 +46,8 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.yakindu.sct.model.sgraph.Entry;
+import org.yakindu.sct.model.sgraph.Exit;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
@@ -505,6 +509,42 @@ public class STextJavaValidatorTest extends AbstractSTextTest {
 
 		assertIssueCount(diagnostics, 4);
 	}
+	
+	@Test
+	public void checkUnusedEntry() {
+		BasicDiagnostic diagnostics = new BasicDiagnostic();
+		Statechart statechart = AbstractTestModelsUtil
+				.loadStatechart("UnusedEntryPoint.sct");
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (element instanceof Entry) {
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
+			}
+		}
+
+		assertIssueCount(diagnostics, 1);
+		assertWarning(diagnostics, ENTRY_UNUSED);
+	}
+	
+	@Test
+	public void checkUnusedExit() {
+		BasicDiagnostic diagnostics = new BasicDiagnostic();
+		Statechart statechart = AbstractTestModelsUtil
+				.loadStatechart("UnusedExitPoint.sct");
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (element instanceof Exit) {
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
+			}
+		}
+
+		assertIssueCount(diagnostics, 1);
+		assertWarning(diagnostics, EXIT_UNUSED);
+	}
 
 	protected void assertError(BasicDiagnostic diag, String message) {
 		Diagnostic d = issueByName(diag, message);

+ 210 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/validation/UnusedEntryPoint.sct

@@ -0,0 +1,210 @@
+<?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="_KY5PIK10EeKDu_-BQi0Wmg" name="UnusedEntryPoint">
+    <regions xmi:id="_KY6dQq10EeKDu_-BQi0Wmg" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_KY_Vwa10EeKDu_-BQi0Wmg">
+        <outgoingTransitions xmi:id="_KZByA610EeKDu_-BQi0Wmg" target="_KY_81a10EeKDu_-BQi0Wmg"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_KY_81a10EeKDu_-BQi0Wmg" name="A" incomingTransitions="_KZByA610EeKDu_-BQi0Wmg">
+        <regions xmi:id="_OJpj8K10EeKDu_-BQi0Wmg">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_oHXtYK14EeKDu_-BQi0Wmg" name="">
+            <outgoingTransitions xmi:id="_WI7bwK2BEeK1webgUiVXVA" specification="" target="_U9Y1sK2BEeK1webgUiVXVA"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_U9Y1sK2BEeK1webgUiVXVA" name="A" incomingTransitions="_WI7bwK2BEeK1webgUiVXVA"/>
+        </regions>
+        <regions xmi:id="_Oh0MUK10EeKDu_-BQi0Wmg">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_t9_igK14EeKDu_-BQi0Wmg" name="entryA">
+            <outgoingTransitions xmi:id="_zCWNMK14EeKDu_-BQi0Wmg" specification="" target="_yQy0cK14EeKDu_-BQi0Wmg"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_yQy0cK14EeKDu_-BQi0Wmg" name="B" incomingTransitions="_zCWNMK14EeKDu_-BQi0Wmg _l-xdoK2CEeK1webgUiVXVA"/>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_lhmZcK2CEeK1webgUiVXVA">
+            <outgoingTransitions xmi:id="_l-xdoK2CEeK1webgUiVXVA" specification="" target="_yQy0cK14EeKDu_-BQi0Wmg"/>
+          </vertices>
+        </regions>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_KY6dQK10EeKDu_-BQi0Wmg" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_KY5PIK10EeKDu_-BQi0Wmg" measurementUnit="Pixel">
+    <children xmi:id="_KY8ScK10EeKDu_-BQi0Wmg" type="Region" element="_KY6dQq10EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KY-HoK10EeKDu_-BQi0Wmg" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KY-Hoa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KY-Hoq10EeKDu_-BQi0Wmg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_KY-usK10EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_KY_Vwq10EeKDu_-BQi0Wmg" type="Entry" element="_KY_Vwa10EeKDu_-BQi0Wmg">
+          <children xmi:id="_KY_Vxa10EeKDu_-BQi0Wmg" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_KY_80a10EeKDu_-BQi0Wmg" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_80q10EeKDu_-BQi0Wmg"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_KY_80610EeKDu_-BQi0Wmg"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_Vxq10EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_80K10EeKDu_-BQi0Wmg"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_Vw610EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_81K10EeKDu_-BQi0Wmg" x="149" y="27" width="15" height="15"/>
+        </children>
+        <children xmi:id="_KZAj4a10EeKDu_-BQi0Wmg" type="State" element="_KY_81a10EeKDu_-BQi0Wmg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_KZBK8K10EeKDu_-BQi0Wmg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_KZBK8a10EeKDu_-BQi0Wmg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_KZBK8q10EeKDu_-BQi0Wmg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_KZBK8610EeKDu_-BQi0Wmg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_KZBK9K10EeKDu_-BQi0Wmg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZBK9a10EeKDu_-BQi0Wmg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_KZByAK10EeKDu_-BQi0Wmg" type="StateFigureCompartment">
+            <children xmi:id="_OJsnQK10EeKDu_-BQi0Wmg" type="Region" element="_OJpj8K10EeKDu_-BQi0Wmg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_OJuccK10EeKDu_-BQi0Wmg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_OJucca10EeKDu_-BQi0Wmg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_OJuccq10EeKDu_-BQi0Wmg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_OJucc610EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_oHaJoK14EeKDu_-BQi0Wmg" type="Entry" element="_oHXtYK14EeKDu_-BQi0Wmg">
+                  <children xmi:id="_oHaJo614EeKDu_-BQi0Wmg" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_oHawsK14EeKDu_-BQi0Wmg" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_oHawsa14EeKDu_-BQi0Wmg"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_oHawsq14EeKDu_-BQi0Wmg"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_oHaJpK14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_oHaJpa14EeKDu_-BQi0Wmg"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_oHaJoa14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_oHaJoq14EeKDu_-BQi0Wmg" x="42" y="23"/>
+                </children>
+                <children xmi:id="_U9gKcK2BEeK1webgUiVXVA" type="State" element="_U9Y1sK2BEeK1webgUiVXVA">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_U9imsK2BEeK1webgUiVXVA" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_U9imsa2BEeK1webgUiVXVA"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_U9imsq2BEeK1webgUiVXVA"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_U9jNwK2BEeK1webgUiVXVA" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_U9jNwa2BEeK1webgUiVXVA" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_U9jNwq2BEeK1webgUiVXVA"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_U9j00K2BEeK1webgUiVXVA" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_U9gKca2BEeK1webgUiVXVA" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_U9gKcq2BEeK1webgUiVXVA"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_U9kb4K2BEeK1webgUiVXVA" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_U9gKc62BEeK1webgUiVXVA" x="32" y="58"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OJucdK10EeKDu_-BQi0Wmg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_OJsnQa10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OJsnQq10EeKDu_-BQi0Wmg"/>
+            </children>
+            <children xmi:id="_Oh2okK10EeKDu_-BQi0Wmg" type="Region" element="_Oh0MUK10EeKDu_-BQi0Wmg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_Oh32sK10EeKDu_-BQi0Wmg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_Oh32sa10EeKDu_-BQi0Wmg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_Oh4dwK10EeKDu_-BQi0Wmg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_Oh5r4K10EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_t-BXsK14EeKDu_-BQi0Wmg" type="Entry" element="_t9_igK14EeKDu_-BQi0Wmg">
+                  <children xmi:id="_t-B-wK14EeKDu_-BQi0Wmg" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_t-B-w614EeKDu_-BQi0Wmg" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_t-B-xK14EeKDu_-BQi0Wmg"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_t-B-xa14EeKDu_-BQi0Wmg"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_t-B-wa14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_t-B-wq14EeKDu_-BQi0Wmg"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_t-BXsa14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_t-BXsq14EeKDu_-BQi0Wmg" x="67" y="18"/>
+                </children>
+                <children xmi:id="_yQ4UAK14EeKDu_-BQi0Wmg" type="State" element="_yQy0cK14EeKDu_-BQi0Wmg">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_yQ6JMK14EeKDu_-BQi0Wmg" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_yQ6JMa14EeKDu_-BQi0Wmg"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_yQ6JMq14EeKDu_-BQi0Wmg"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_yQ6JM614EeKDu_-BQi0Wmg" type="StateTextCompartment" collapsed="true">
+                    <children xsi:type="notation:Shape" xmi:id="_yQ6JNK14EeKDu_-BQi0Wmg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_yQ6JNa14EeKDu_-BQi0Wmg"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_yQ6wQK14EeKDu_-BQi0Wmg" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_yQ4UAa14EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_yQ4UAq14EeKDu_-BQi0Wmg"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_yQ6wQa14EeKDu_-BQi0Wmg" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_yQ4UA614EeKDu_-BQi0Wmg" x="57" y="53"/>
+                </children>
+                <children xmi:id="_lhoOoK2CEeK1webgUiVXVA" type="Entry" element="_lhmZcK2CEeK1webgUiVXVA">
+                  <children xmi:id="_lhoOo62CEeK1webgUiVXVA" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_lhoOpq2CEeK1webgUiVXVA" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_lho1sK2CEeK1webgUiVXVA"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_lho1sa2CEeK1webgUiVXVA"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_lhoOpK2CEeK1webgUiVXVA" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lhoOpa2CEeK1webgUiVXVA"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_lhoOoa2CEeK1webgUiVXVA" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lhoOoq2CEeK1webgUiVXVA" x="19" y="60"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Oh5r4a10EeKDu_-BQi0Wmg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_Oh2oka10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Oh2okq10EeKDu_-BQi0Wmg"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_KZAj4q10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_KZAj4610EeKDu_-BQi0Wmg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_KZByAa10EeKDu_-BQi0Wmg" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZByAq10EeKDu_-BQi0Wmg" x="40" y="86" width="238" height="194"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY-usa10EeKDu_-BQi0Wmg"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_KY8Sca10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_VwK10EeKDu_-BQi0Wmg" x="220" y="10" width="406" height="400"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_KZDnM610EeKDu_-BQi0Wmg" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KZEOQK10EeKDu_-BQi0Wmg" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KZEOQa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KZEOQq10EeKDu_-BQi0Wmg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_KZEOQ610EeKDu_-BQi0Wmg" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZEORK10EeKDu_-BQi0Wmg"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZEORa10EeKDu_-BQi0Wmg" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_KY6dQa10EeKDu_-BQi0Wmg"/>
+    <edges xmi:id="_KZDAIK10EeKDu_-BQi0Wmg" type="Transition" element="_KZByA610EeKDu_-BQi0Wmg" source="_KY_Vwq10EeKDu_-BQi0Wmg" target="_KZAj4a10EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KZDnMK10EeKDu_-BQi0Wmg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KZDnMa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KZDnMq10EeKDu_-BQi0Wmg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_KZDAIa10EeKDu_-BQi0Wmg" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_KZDAI610EeKDu_-BQi0Wmg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_KZDAIq10EeKDu_-BQi0Wmg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_0bMOcK2DEeK6f61rDSOHrA" id="(0.509090909090909,0.12096774193548387)"/>
+    </edges>
+    <edges xmi:id="_zCXbUK14EeKDu_-BQi0Wmg" type="Transition" element="_zCWNMK14EeKDu_-BQi0Wmg" source="_t-BXsK14EeKDu_-BQi0Wmg" target="_yQ4UAK14EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_zCYCYK14EeKDu_-BQi0Wmg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_zCYCYa14EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_zCYCYq14EeKDu_-BQi0Wmg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_zCXbUa14EeKDu_-BQi0Wmg" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_zCXbU614EeKDu_-BQi0Wmg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_zCXbUq14EeKDu_-BQi0Wmg" points="[0, 7, -1, -48]$[4, 47, 3, -8]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_zCZ3kK14EeKDu_-BQi0Wmg" id="(0.475,0.16981132075471697)"/>
+    </edges>
+    <edges xmi:id="_WI-fEK2BEeK1webgUiVXVA" type="Transition" element="_WI7bwK2BEeK1webgUiVXVA" source="_oHaJoK14EeKDu_-BQi0Wmg" target="_U9gKcK2BEeK1webgUiVXVA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_WI_GIK2BEeK1webgUiVXVA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_WI_GIa2BEeK1webgUiVXVA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_WI_GIq2BEeK1webgUiVXVA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_WI-fEa2BEeK1webgUiVXVA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_WI-fE62BEeK1webgUiVXVA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_WI-fEq2BEeK1webgUiVXVA" points="[0, 7, 0, -53]$[3, 50, 3, -10]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_WJBiYK2BEeK1webgUiVXVA" id="(0.55,0.22641509433962265)"/>
+    </edges>
+    <edges xmi:id="_l-yEsK2CEeK1webgUiVXVA" type="Transition" element="_l-xdoK2CEeK1webgUiVXVA" source="_lhoOoK2CEeK1webgUiVXVA" target="_yQ4UAK14EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_l-yrwa2CEeK1webgUiVXVA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_l-yrwq2CEeK1webgUiVXVA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_l-yrw62CEeK1webgUiVXVA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_l-yEsa2CEeK1webgUiVXVA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_l-yrwK2CEeK1webgUiVXVA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_l-yEsq2CEeK1webgUiVXVA" points="[7, 0, -50, -1]$[58, -14, 1, -15]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_l-0g8K2CEeK1webgUiVXVA" id="(0.2,0.32075471698113206)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 272 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/validation/UnusedExitPoint.sct

@@ -0,0 +1,272 @@
+<?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="_KY5PIK10EeKDu_-BQi0Wmg" name="UnusedExitPoint">
+    <regions xmi:id="_KY6dQq10EeKDu_-BQi0Wmg" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_KY_Vwa10EeKDu_-BQi0Wmg">
+        <outgoingTransitions xmi:id="_KZByA610EeKDu_-BQi0Wmg" target="_KY_81a10EeKDu_-BQi0Wmg"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_KY_81a10EeKDu_-BQi0Wmg" name="A" incomingTransitions="_KZByA610EeKDu_-BQi0Wmg">
+        <outgoingTransitions xmi:id="_M0ulIK2EEeK6f61rDSOHrA" specification="" target="_BRt08K2EEeK6f61rDSOHrA"/>
+        <regions xmi:id="_OJpj8K10EeKDu_-BQi0Wmg">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_oHXtYK14EeKDu_-BQi0Wmg" name="">
+            <outgoingTransitions xmi:id="_WI7bwK2BEeK1webgUiVXVA" specification="" target="_U9Y1sK2BEeK1webgUiVXVA"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_U9Y1sK2BEeK1webgUiVXVA" name="A" incomingTransitions="_WI7bwK2BEeK1webgUiVXVA">
+            <outgoingTransitions xmi:id="_MOlLIK2EEeK6f61rDSOHrA" specification="" target="_LzHXIK2EEeK6f61rDSOHrA"/>
+          </vertices>
+          <vertices xsi:type="sgraph:Exit" xmi:id="_LzHXIK2EEeK6f61rDSOHrA" incomingTransitions="_MOlLIK2EEeK6f61rDSOHrA"/>
+        </regions>
+        <regions xmi:id="_Oh0MUK10EeKDu_-BQi0Wmg">
+          <vertices xsi:type="sgraph:State" xmi:id="_yQy0cK14EeKDu_-BQi0Wmg" name="B" incomingTransitions="_l-xdoK2CEeK1webgUiVXVA">
+            <outgoingTransitions xmi:id="_GvjWoK2EEeK6f61rDSOHrA" specification="" target="_GCA7MK2EEeK6f61rDSOHrA"/>
+            <outgoingTransitions xmi:id="_O8dGoK2EEeK6f61rDSOHrA" specification="" target="_OlfYIK2EEeK6f61rDSOHrA"/>
+          </vertices>
+          <vertices xsi:type="sgraph:Entry" xmi:id="_lhmZcK2CEeK1webgUiVXVA">
+            <outgoingTransitions xmi:id="_l-xdoK2CEeK1webgUiVXVA" specification="" target="_yQy0cK14EeKDu_-BQi0Wmg"/>
+          </vertices>
+          <vertices xsi:type="sgraph:Exit" xmi:id="_GCA7MK2EEeK6f61rDSOHrA" name="exitA" incomingTransitions="_GvjWoK2EEeK6f61rDSOHrA"/>
+          <vertices xsi:type="sgraph:Exit" xmi:id="_OlfYIK2EEeK6f61rDSOHrA" incomingTransitions="_O8dGoK2EEeK6f61rDSOHrA"/>
+        </regions>
+      </vertices>
+      <vertices xsi:type="sgraph:FinalState" xmi:id="_BRt08K2EEeK6f61rDSOHrA" incomingTransitions="_M0ulIK2EEeK6f61rDSOHrA"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_KY6dQK10EeKDu_-BQi0Wmg" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_KY5PIK10EeKDu_-BQi0Wmg" measurementUnit="Pixel">
+    <children xmi:id="_KY8ScK10EeKDu_-BQi0Wmg" type="Region" element="_KY6dQq10EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KY-HoK10EeKDu_-BQi0Wmg" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KY-Hoa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KY-Hoq10EeKDu_-BQi0Wmg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_KY-usK10EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_KY_Vwq10EeKDu_-BQi0Wmg" type="Entry" element="_KY_Vwa10EeKDu_-BQi0Wmg">
+          <children xmi:id="_KY_Vxa10EeKDu_-BQi0Wmg" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_KY_80a10EeKDu_-BQi0Wmg" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_80q10EeKDu_-BQi0Wmg"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_KY_80610EeKDu_-BQi0Wmg"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_Vxq10EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_80K10EeKDu_-BQi0Wmg"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_KY_Vw610EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_81K10EeKDu_-BQi0Wmg" x="149" y="27" width="15" height="15"/>
+        </children>
+        <children xmi:id="_KZAj4a10EeKDu_-BQi0Wmg" type="State" element="_KY_81a10EeKDu_-BQi0Wmg">
+          <children xsi:type="notation:DecorationNode" xmi:id="_KZBK8K10EeKDu_-BQi0Wmg" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_KZBK8a10EeKDu_-BQi0Wmg"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_KZBK8q10EeKDu_-BQi0Wmg"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_KZBK8610EeKDu_-BQi0Wmg" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_KZBK9K10EeKDu_-BQi0Wmg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZBK9a10EeKDu_-BQi0Wmg"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_KZByAK10EeKDu_-BQi0Wmg" type="StateFigureCompartment">
+            <children xmi:id="_OJsnQK10EeKDu_-BQi0Wmg" type="Region" element="_OJpj8K10EeKDu_-BQi0Wmg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_OJuccK10EeKDu_-BQi0Wmg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_OJucca10EeKDu_-BQi0Wmg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_OJuccq10EeKDu_-BQi0Wmg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_OJucc610EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_oHaJoK14EeKDu_-BQi0Wmg" type="Entry" element="_oHXtYK14EeKDu_-BQi0Wmg">
+                  <children xmi:id="_oHaJo614EeKDu_-BQi0Wmg" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_oHawsK14EeKDu_-BQi0Wmg" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_oHawsa14EeKDu_-BQi0Wmg"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_oHawsq14EeKDu_-BQi0Wmg"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_oHaJpK14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_oHaJpa14EeKDu_-BQi0Wmg"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_oHaJoa14EeKDu_-BQi0Wmg" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_oHaJoq14EeKDu_-BQi0Wmg" x="28" y="12"/>
+                </children>
+                <children xmi:id="_U9gKcK2BEeK1webgUiVXVA" type="State" element="_U9Y1sK2BEeK1webgUiVXVA">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_U9imsK2BEeK1webgUiVXVA" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_U9imsa2BEeK1webgUiVXVA"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_U9imsq2BEeK1webgUiVXVA"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_U9jNwK2BEeK1webgUiVXVA" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_U9jNwa2BEeK1webgUiVXVA" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_U9jNwq2BEeK1webgUiVXVA"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_U9j00K2BEeK1webgUiVXVA" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_U9gKca2BEeK1webgUiVXVA" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_U9gKcq2BEeK1webgUiVXVA"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_U9kb4K2BEeK1webgUiVXVA" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_U9gKc62BEeK1webgUiVXVA" x="18" y="47"/>
+                </children>
+                <children xmi:id="_LzH-MK2EEeK6f61rDSOHrA" type="Exit" element="_LzHXIK2EEeK6f61rDSOHrA">
+                  <children xmi:id="_LzIlQK2EEeK6f61rDSOHrA" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_LzIlQ62EEeK6f61rDSOHrA" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_LzIlRK2EEeK6f61rDSOHrA"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_LzIlRa2EEeK6f61rDSOHrA"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_LzIlQa2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_LzIlQq2EEeK6f61rDSOHrA"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_LzH-Ma2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_LzH-Mq2EEeK6f61rDSOHrA" x="28" y="117"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OJucdK10EeKDu_-BQi0Wmg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_OJsnQa10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_OJsnQq10EeKDu_-BQi0Wmg"/>
+            </children>
+            <children xmi:id="_Oh2okK10EeKDu_-BQi0Wmg" type="Region" element="_Oh0MUK10EeKDu_-BQi0Wmg">
+              <children xsi:type="notation:DecorationNode" xmi:id="_Oh32sK10EeKDu_-BQi0Wmg" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_Oh32sa10EeKDu_-BQi0Wmg"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_Oh4dwK10EeKDu_-BQi0Wmg"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_Oh5r4K10EeKDu_-BQi0Wmg" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_yQ4UAK14EeKDu_-BQi0Wmg" type="State" element="_yQy0cK14EeKDu_-BQi0Wmg">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_yQ6JMK14EeKDu_-BQi0Wmg" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_yQ6JMa14EeKDu_-BQi0Wmg"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_yQ6JMq14EeKDu_-BQi0Wmg"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_yQ6JM614EeKDu_-BQi0Wmg" type="StateTextCompartment" collapsed="true">
+                    <children xsi:type="notation:Shape" xmi:id="_yQ6JNK14EeKDu_-BQi0Wmg" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_yQ6JNa14EeKDu_-BQi0Wmg"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_yQ6wQK14EeKDu_-BQi0Wmg" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_yQ4UAa14EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_yQ4UAq14EeKDu_-BQi0Wmg"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_yQ6wQa14EeKDu_-BQi0Wmg" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_yQ4UA614EeKDu_-BQi0Wmg" x="49" y="43"/>
+                </children>
+                <children xmi:id="_lhoOoK2CEeK1webgUiVXVA" type="Entry" element="_lhmZcK2CEeK1webgUiVXVA">
+                  <children xmi:id="_lhoOo62CEeK1webgUiVXVA" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_lhoOpq2CEeK1webgUiVXVA" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_lho1sK2CEeK1webgUiVXVA"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_lho1sa2CEeK1webgUiVXVA"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_lhoOpK2CEeK1webgUiVXVA" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lhoOpa2CEeK1webgUiVXVA"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_lhoOoa2CEeK1webgUiVXVA" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_lhoOoq2CEeK1webgUiVXVA" x="59" y="13"/>
+                </children>
+                <children xmi:id="_GCBiQK2EEeK6f61rDSOHrA" type="Exit" element="_GCA7MK2EEeK6f61rDSOHrA">
+                  <children xmi:id="_GCCJUK2EEeK6f61rDSOHrA" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_GCCJU62EEeK6f61rDSOHrA" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_GCCJVK2EEeK6f61rDSOHrA"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_GCCJVa2EEeK6f61rDSOHrA"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_GCCJUa2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GCCJUq2EEeK6f61rDSOHrA"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_GCBiQa2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GCBiQq2EEeK6f61rDSOHrA" x="59" y="108"/>
+                </children>
+                <children xmi:id="_Olf_MK2EEeK6f61rDSOHrA" type="Exit" element="_OlfYIK2EEeK6f61rDSOHrA">
+                  <children xmi:id="_Olf_M62EEeK6f61rDSOHrA" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_OlgmQK2EEeK6f61rDSOHrA" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_OlgmQa2EEeK6f61rDSOHrA"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_OlgmQq2EEeK6f61rDSOHrA"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_Olf_NK2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Olf_Na2EEeK6f61rDSOHrA"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_Olf_Ma2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Olf_Mq2EEeK6f61rDSOHrA" x="7" y="59"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Oh5r4a10EeKDu_-BQi0Wmg"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_Oh2oka10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_Oh2okq10EeKDu_-BQi0Wmg"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_KZAj4q10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_KZAj4610EeKDu_-BQi0Wmg"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_KZByAa10EeKDu_-BQi0Wmg" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZByAq10EeKDu_-BQi0Wmg" x="40" y="86" width="253" height="227"/>
+        </children>
+        <children xsi:type="notation:Shape" xmi:id="_BRvDEK2EEeK6f61rDSOHrA" type="FinalState" element="_BRt08K2EEeK6f61rDSOHrA" fontName="Verdana" lineColor="4210752">
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_BRvDEa2EEeK6f61rDSOHrA" x="140" y="334" width="15" height="15"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY-usa10EeKDu_-BQi0Wmg"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_KY8Sca10EeKDu_-BQi0Wmg" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KY_VwK10EeKDu_-BQi0Wmg" x="220" y="10" width="406" height="400"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_KZDnM610EeKDu_-BQi0Wmg" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KZEOQK10EeKDu_-BQi0Wmg" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KZEOQa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KZEOQq10EeKDu_-BQi0Wmg"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_KZEOQ610EeKDu_-BQi0Wmg" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZEORK10EeKDu_-BQi0Wmg"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_KZEORa10EeKDu_-BQi0Wmg" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_KY6dQa10EeKDu_-BQi0Wmg"/>
+    <edges xmi:id="_KZDAIK10EeKDu_-BQi0Wmg" type="Transition" element="_KZByA610EeKDu_-BQi0Wmg" source="_KY_Vwq10EeKDu_-BQi0Wmg" target="_KZAj4a10EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_KZDnMK10EeKDu_-BQi0Wmg" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_KZDnMa10EeKDu_-BQi0Wmg"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_KZDnMq10EeKDu_-BQi0Wmg" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_KZDAIa10EeKDu_-BQi0Wmg" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_KZDAI610EeKDu_-BQi0Wmg" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_KZDAIq10EeKDu_-BQi0Wmg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_0bMOcK2DEeK6f61rDSOHrA" id="(0.509090909090909,0.12096774193548387)"/>
+    </edges>
+    <edges xmi:id="_WI-fEK2BEeK1webgUiVXVA" type="Transition" element="_WI7bwK2BEeK1webgUiVXVA" source="_oHaJoK14EeKDu_-BQi0Wmg" target="_U9gKcK2BEeK1webgUiVXVA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_WI_GIK2BEeK1webgUiVXVA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_WI_GIa2BEeK1webgUiVXVA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_WI_GIq2BEeK1webgUiVXVA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_WI-fEa2BEeK1webgUiVXVA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_WI-fE62BEeK1webgUiVXVA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_WI-fEq2BEeK1webgUiVXVA" points="[0, 7, 0, -53]$[3, 50, 3, -10]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_WJBiYK2BEeK1webgUiVXVA" id="(0.55,0.22641509433962265)"/>
+    </edges>
+    <edges xmi:id="_l-yEsK2CEeK1webgUiVXVA" type="Transition" element="_l-xdoK2CEeK1webgUiVXVA" source="_lhoOoK2CEeK1webgUiVXVA" target="_yQ4UAK14EeKDu_-BQi0Wmg">
+      <children xsi:type="notation:DecorationNode" xmi:id="_l-yrwa2CEeK1webgUiVXVA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_l-yrwq2CEeK1webgUiVXVA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_l-yrw62CEeK1webgUiVXVA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_l-yEsa2CEeK1webgUiVXVA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_l-yrwK2CEeK1webgUiVXVA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_l-yEsq2CEeK1webgUiVXVA" points="[7, 0, -50, -1]$[58, -14, 1, -15]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_l-0g8K2CEeK1webgUiVXVA" id="(0.575,0.11320754716981132)"/>
+    </edges>
+    <edges xmi:id="_GvkkwK2EEeK6f61rDSOHrA" type="Transition" element="_GvjWoK2EEeK6f61rDSOHrA" source="_yQ4UAK14EeKDu_-BQi0Wmg" target="_GCBiQK2EEeK6f61rDSOHrA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GvlL0a2EEeK6f61rDSOHrA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GvlL0q2EEeK6f61rDSOHrA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GvlL062EEeK6f61rDSOHrA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_Gvkkwa2EEeK6f61rDSOHrA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_GvlL0K2EEeK6f61rDSOHrA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_Gvkkwq2EEeK6f61rDSOHrA" points="[-14, 12, 32, -25]$[-39, 40, 7, 3]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_GvnBAK2EEeK6f61rDSOHrA" id="(0.425,0.7547169811320755)"/>
+    </edges>
+    <edges xmi:id="_MOmZQK2EEeK6f61rDSOHrA" type="Transition" element="_MOlLIK2EEeK6f61rDSOHrA" source="_U9gKcK2BEeK1webgUiVXVA" target="_LzH-MK2EEeK6f61rDSOHrA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_MOmZRK2EEeK6f61rDSOHrA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_MOmZRa2EEeK6f61rDSOHrA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_MOmZRq2EEeK6f61rDSOHrA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_MOmZQa2EEeK6f61rDSOHrA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_MOmZQ62EEeK6f61rDSOHrA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_MOmZQq2EEeK6f61rDSOHrA" points="[-1, 24, 2, -25]$[4, 52, 7, 3]"/>
+    </edges>
+    <edges xmi:id="_M0vzQK2EEeK6f61rDSOHrA" type="Transition" element="_M0ulIK2EEeK6f61rDSOHrA" source="_KZAj4a10EeKDu_-BQi0Wmg" target="_BRvDEK2EEeK6f61rDSOHrA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_M0vzRK2EEeK6f61rDSOHrA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_M0vzRa2EEeK6f61rDSOHrA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_M0vzRq2EEeK6f61rDSOHrA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_M0vzQa2EEeK6f61rDSOHrA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_M0vzQ62EEeK6f61rDSOHrA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_M0vzQq2EEeK6f61rDSOHrA" points="[-1, 8, -1, -33]$[-5, 46, -5, 5]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_M0yPgK2EEeK6f61rDSOHrA" id="(0.43478260869565216,0.9647577092511013)"/>
+    </edges>
+    <edges xmi:id="_O8eUwK2EEeK6f61rDSOHrA" type="Transition" element="_O8dGoK2EEeK6f61rDSOHrA" source="_yQ4UAK14EeKDu_-BQi0Wmg" target="_Olf_MK2EEeK6f61rDSOHrA">
+      <children xsi:type="notation:DecorationNode" xmi:id="_O8eUxK2EEeK6f61rDSOHrA" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_O8eUxa2EEeK6f61rDSOHrA"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_O8eUxq2EEeK6f61rDSOHrA" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_O8eUwa2EEeK6f61rDSOHrA" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_O8eUw62EEeK6f61rDSOHrA" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_O8eUwq2EEeK6f61rDSOHrA" points="[-17, 1, 43, 2]$[-55, 4, 5, 5]"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>