浏览代码

Bugfix: Rename refactoring with more than 1 Statement

Andreas Mülder 12 年之前
父节点
当前提交
1f1589b34a

+ 2 - 0
plugins/org.yakindu.sct.model.stext.resource/src/org/yakindu/sct/model/stext/resource/impl/StextResource.java

@@ -54,6 +54,8 @@ public class StextResource extends AbstractSCTResource {
 		EList<Declaration> declarations = scope.getDeclarations();
 		StringBuilder builder = new StringBuilder();
 		for (Declaration declaration : declarations) {
+			if (builder.length() > 0)
+				builder.append("\n");
 			builder.append(serializeReaction((Reaction) declaration));
 		}
 		state.setSpecification(builder.toString());

+ 17 - 3
test-plugins/org.yakindu.sct.refactoring.tests/src/org/yakindu/sct/refactoring/refactor/RefactoringTest.java

@@ -1,19 +1,33 @@
+/**
+ * Copyright (c) 2013 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.refactoring.refactor;
 
-import junit.framework.Assert;
-
 import org.eclipse.xtext.parser.IParser;
+import org.junit.Assert;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.refactoring.refactor.util.SctEqualityHelper;
 import org.yakindu.sct.refactoring.test.models.RefactoringTestModels;
 
 import com.google.inject.Inject;
 
+/**
+ * 
+ * @author thomas kutz - Initial contribution and API
+ * 
+ */
 public class RefactoringTest {
 
 	@Inject
 	protected IParser parser;
-	
+
 	@Inject
 	protected RefactoringTestModels models;
 

+ 15 - 19
test-plugins/org.yakindu.sct.refactoring.tests/src/org/yakindu/sct/refactoring/refactor/StateBasedRefactoringTest.java

@@ -12,11 +12,10 @@ package org.yakindu.sct.refactoring.refactor;
 
 import java.util.List;
 
-import junit.framework.Assert;
-
 import org.eclipse.xtext.EcoreUtil2;
 import org.eclipse.xtext.junit4.InjectWith;
 import org.eclipse.xtext.junit4.XtextRunner;
+import org.junit.Assert;
 import org.junit.runner.RunWith;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
@@ -33,10 +32,8 @@ import org.yakindu.sct.test.models.TestModelInjectorProvider;
 @InjectWith(TestModelInjectorProvider.class)
 public abstract class StateBasedRefactoringTest extends RefactoringTest {
 
-	protected void testRefactoringOnState(String pathToInitialSct,
-			String pathToExpectedSct, String stateName) {
-		Statechart initial = models
-				.loadStatechartFromResource(pathToInitialSct);
+	protected void testRefactoringOnState(String pathToInitialSct, String pathToExpectedSct, String stateName) {
+		Statechart initial = models.loadStatechartFromResource(pathToInitialSct);
 
 		State state = getStateByName(initial, stateName);
 
@@ -47,30 +44,29 @@ public abstract class StateBasedRefactoringTest extends RefactoringTest {
 		initialRes.setSerializerEnabled(false);
 		initialRes.linkSpecificationElements();
 
-		Statechart expected = models
-				.loadStatechartFromResource(pathToExpectedSct);
-		
+		Statechart expected = models.loadStatechartFromResource(pathToExpectedSct);
+
 		compareStatecharts(initial, expected);
 	}
-	
-	protected void testRefactoringIsExecutableOnState(String pathToInitialSct,
-			String pathToExpectedSct, String stateName, boolean expectedResult) {
-		Statechart initial = models
-				.loadStatechartFromResource(pathToInitialSct);
+
+	protected void testRefactoringIsExecutableOnState(String pathToInitialSct, String pathToExpectedSct,
+			String stateName, boolean expectedResult) {
+		Statechart initial = models.loadStatechartFromResource(pathToInitialSct);
 
 		State state = getStateByName(initial, stateName);
 
 		AbstractRefactoring<?> refactoring = getRefactoring(state);
 		if (expectedResult) {
-			Assert.assertTrue("Refactoring on state '"+stateName+"' was not executable, although it should be.", refactoring.isExecutable());
-		}
-		else {			
-			Assert.assertFalse("Refactoring on state '"+stateName+"' was executable, although it should not be.", refactoring.isExecutable());
+			Assert.assertTrue("Refactoring on state '" + stateName + "' was not executable, although it should be.",
+					refactoring.isExecutable());
+		} else {
+			Assert.assertFalse("Refactoring on state '" + stateName + "' was executable, although it should not be.",
+					refactoring.isExecutable());
 		}
 	}
 
 	protected abstract AbstractRefactoring<?> getRefactoring(State state);
-	
+
 	protected State getStateByName(Statechart statechart, String name) {
 		List<State> allStates = EcoreUtil2.getAllContentsOfType(statechart, State.class);
 		for (State state : allStates) {

+ 28 - 18
test-plugins/org.yakindu.sct.refactoring.tests/src/org/yakindu/sct/refactoring/refactor/impl/RenameRefactoringTest.java

@@ -32,7 +32,6 @@ import org.yakindu.sct.test.models.TestModelInjectorProvider;
 
 import com.google.common.collect.Lists;
 
-
 /**
  * Tests for {@link RenameRefactoring}.
  * 
@@ -46,8 +45,7 @@ public class RenameRefactoringTest extends RefactoringTest {
 	@Test
 	public void testRenameVariable() {
 
-		Statechart initial = models.loadStatechartFromResource(RENAMING
-				+ INITIAL_STATECHART);
+		Statechart initial = models.loadStatechartFromResource(RENAMING + INITIAL_STATECHART);
 		// get element to rename
 		Variable someVariable = null;
 		EList<Scope> scopes = initial.getScopes();
@@ -57,19 +55,16 @@ public class RenameRefactoringTest extends RefactoringTest {
 				someVariable = iScope.getVariables().get(0);
 			}
 		}
-		Statechart expected = models.loadStatechartFromResource(RENAMING
-				+ "AfterRenamingVariable.sct");
+		Statechart expected = models.loadStatechartFromResource(RENAMING + "AfterRenamingVariable.sct");
 
 		testRenaming(initial, expected, someVariable, "someNewVariableName");
 	}
 
 	@Test
 	public void testRenameEvent() {
-		Statechart initial = models.loadStatechartFromResource(RENAMING
-				+ INITIAL_STATECHART);
+		Statechart initial = models.loadStatechartFromResource(RENAMING + INITIAL_STATECHART);
 
-		Statechart expected = models.loadStatechartFromResource(RENAMING
-				+ "AfterRenamingEvent.sct");
+		Statechart expected = models.loadStatechartFromResource(RENAMING + "AfterRenamingEvent.sct");
 
 		// get element to rename
 		Event someEvent1 = null;
@@ -84,17 +79,15 @@ public class RenameRefactoringTest extends RefactoringTest {
 				}
 			}
 		}
-		
+
 		testRenaming(initial, expected, someEvent1, "someNewEventName");
 	}
 
 	@Test
 	public void testRenameInterface() {
-		Statechart initial = models.loadStatechartFromResource(RENAMING
-				+ INITIAL_STATECHART);
+		Statechart initial = models.loadStatechartFromResource(RENAMING + INITIAL_STATECHART);
 
-		Statechart expected = models.loadStatechartFromResource(RENAMING
-				+ "AfterRenamingInterface.sct");
+		Statechart expected = models.loadStatechartFromResource(RENAMING + "AfterRenamingInterface.sct");
 
 		// get element to rename
 		InterfaceScope someInterface = null;
@@ -104,7 +97,7 @@ public class RenameRefactoringTest extends RefactoringTest {
 				someInterface = (InterfaceScope) scope;
 			}
 		}
-		
+
 		testRenaming(initial, expected, someInterface, "someNewInterfaceName");
 	}
 
@@ -113,10 +106,27 @@ public class RenameRefactoringTest extends RefactoringTest {
 	public void testNoRenamingIntoExistingName() {
 		fail("Not yet implemented.");
 	}
-	
+	@Test
+	public void testRenameMultiStatement() {
+		Statechart initial = models.loadStatechartFromResource(RENAMING + "beforeMultiStatement.sct");
+		Statechart expected = models.loadStatechartFromResource(RENAMING + "AfterMultiStatement.sct");
+
+		// get element to rename
+		InterfaceScope someInterface = null;
+		EList<Scope> scopes = initial.getScopes();
+		for (Scope scope : scopes) {
+			if (scope instanceof InterfaceScope) {
+				someInterface = (InterfaceScope) scope;
+			}
+		}
+
+		testRenaming(initial, expected, someInterface.getVariables().get(0), "y");
+
+	}
+
 	private void testRenaming(Statechart initial, Statechart expected, NamedElement elementToRename, String newName) {
 		RenameRefactoring refactoring = new RenameRefactoring();
-		
+
 		refactoring.setContextObjects(Lists.newArrayList(elementToRename));
 		refactoring.setNewName(newName);
 
@@ -126,7 +136,7 @@ public class RenameRefactoringTest extends RefactoringTest {
 		initialRes.setSerializerEnabled(false);
 
 		initialRes.linkSpecificationElements();
-		
+
 		compareStatecharts(initial, expected);
 	}
 

+ 73 - 0
test-plugins/org.yakindu.sct.refactoring.tests/testmodels/refactoring/renaming/AfterMultiStatement.sct

@@ -0,0 +1,73 @@
+<?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="_GNI7IA_yEeO4u4l4xHg7lQ" specification="interface:&#xD;&#xA;var y : boolean&#xD;&#xA;" name="default">
+    <regions xmi:id="_GNuxAA_yEeO4u4l4xHg7lQ" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_GOEvQA_yEeO4u4l4xHg7lQ">
+        <outgoingTransitions xmi:id="_uRUs4BCOEeO14rkGLjKN-w" specification="" target="_UYpXkA_yEeO4u4l4xHg7lQ"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_UYpXkA_yEeO4u4l4xHg7lQ" specification="entry / y = true&#xD;&#xA;exit / y = false" name="B" incomingTransitions="_uRUs4BCOEeO14rkGLjKN-w"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_GNuJ8A_yEeO4u4l4xHg7lQ" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_GNI7IA_yEeO4u4l4xHg7lQ" measurementUnit="Pixel">
+    <children xmi:id="_GNzCcA_yEeO4u4l4xHg7lQ" type="Region" element="_GNuxAA_yEeO4u4l4xHg7lQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GOC6EA_yEeO4u4l4xHg7lQ" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GOC6EQ_yEeO4u4l4xHg7lQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GOC6Eg_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_GODhIA_yEeO4u4l4xHg7lQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_GOFWUA_yEeO4u4l4xHg7lQ" type="Entry" element="_GOEvQA_yEeO4u4l4xHg7lQ">
+          <children xmi:id="_GOFWUw_yEeO4u4l4xHg7lQ" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_GOF9YA_yEeO4u4l4xHg7lQ" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_GOF9YQ_yEeO4u4l4xHg7lQ"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_GOF9Yg_yEeO4u4l4xHg7lQ"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_GOFWVA_yEeO4u4l4xHg7lQ" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOFWVQ_yEeO4u4l4xHg7lQ"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_GOFWUQ_yEeO4u4l4xHg7lQ" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOF9Yw_yEeO4u4l4xHg7lQ" x="70" y="20"/>
+        </children>
+        <children xmi:id="_UYrMwA_yEeO4u4l4xHg7lQ" type="State" element="_UYpXkA_yEeO4u4l4xHg7lQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_UYrMxA_yEeO4u4l4xHg7lQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_UYrMxQ_yEeO4u4l4xHg7lQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_UYrMxg_yEeO4u4l4xHg7lQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_UYrMxw_yEeO4u4l4xHg7lQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_UYrz0A_yEeO4u4l4xHg7lQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_UYrz0Q_yEeO4u4l4xHg7lQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_UYrz0g_yEeO4u4l4xHg7lQ" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_UYrMwQ_yEeO4u4l4xHg7lQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_UYrMwg_yEeO4u4l4xHg7lQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_UYrz0w_yEeO4u4l4xHg7lQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_UYrMww_yEeO4u4l4xHg7lQ" x="129" y="112"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GODhIQ_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_GNzCcQ_yEeO4u4l4xHg7lQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOEIMA_yEeO4u4l4xHg7lQ" x="220" y="10" width="401" height="281"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_GORjkA_yEeO4u4l4xHg7lQ" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GORjkg_yEeO4u4l4xHg7lQ" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GORjkw_yEeO4u4l4xHg7lQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GORjlA_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_GORjlQ_yEeO4u4l4xHg7lQ" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOSKoA_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOSKoQ_yEeO4u4l4xHg7lQ" x="10" y="10" width="200" height="286"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_GNuJ8Q_yEeO4u4l4xHg7lQ"/>
+    <edges xmi:id="_uRaMcBCOEeO14rkGLjKN-w" type="Transition" element="_uRUs4BCOEeO14rkGLjKN-w" source="_GOFWUA_yEeO4u4l4xHg7lQ" target="_UYrMwA_yEeO4u4l4xHg7lQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_uRhhMBCOEeO14rkGLjKN-w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_uRhhMRCOEeO14rkGLjKN-w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_uRhhMhCOEeO14rkGLjKN-w" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_uRaMcRCOEeO14rkGLjKN-w" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_uRazgBCOEeO14rkGLjKN-w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_uRaMchCOEeO14rkGLjKN-w" points="[7, 2, -232, -68]$[240, 55, 1, -15]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_uRo18BCOEeO14rkGLjKN-w" id="(0.104,0.2698412698412698)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>

+ 73 - 0
test-plugins/org.yakindu.sct.refactoring.tests/testmodels/refactoring/renaming/beforeMultiStatement.sct

@@ -0,0 +1,73 @@
+<?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="_GNI7IA_yEeO4u4l4xHg7lQ" specification="interface:&#xD;&#xA;var y : boolean&#xD;&#xA;" name="default">
+    <regions xmi:id="_GNuxAA_yEeO4u4l4xHg7lQ" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_GOEvQA_yEeO4u4l4xHg7lQ">
+        <outgoingTransitions xmi:id="_uRUs4BCOEeO14rkGLjKN-w" specification="" target="_UYpXkA_yEeO4u4l4xHg7lQ"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_UYpXkA_yEeO4u4l4xHg7lQ" specification="entry / y = true&#xD;&#xA;exit / y = false" name="B" incomingTransitions="_uRUs4BCOEeO14rkGLjKN-w"/>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_GNuJ8A_yEeO4u4l4xHg7lQ" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_GNI7IA_yEeO4u4l4xHg7lQ" measurementUnit="Pixel">
+    <children xmi:id="_GNzCcA_yEeO4u4l4xHg7lQ" type="Region" element="_GNuxAA_yEeO4u4l4xHg7lQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GOC6EA_yEeO4u4l4xHg7lQ" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GOC6EQ_yEeO4u4l4xHg7lQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GOC6Eg_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_GODhIA_yEeO4u4l4xHg7lQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_GOFWUA_yEeO4u4l4xHg7lQ" type="Entry" element="_GOEvQA_yEeO4u4l4xHg7lQ">
+          <children xmi:id="_GOFWUw_yEeO4u4l4xHg7lQ" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_GOF9YA_yEeO4u4l4xHg7lQ" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_GOF9YQ_yEeO4u4l4xHg7lQ"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_GOF9Yg_yEeO4u4l4xHg7lQ"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_GOFWVA_yEeO4u4l4xHg7lQ" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOFWVQ_yEeO4u4l4xHg7lQ"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_GOFWUQ_yEeO4u4l4xHg7lQ" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOF9Yw_yEeO4u4l4xHg7lQ" x="70" y="20"/>
+        </children>
+        <children xmi:id="_UYrMwA_yEeO4u4l4xHg7lQ" type="State" element="_UYpXkA_yEeO4u4l4xHg7lQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_UYrMxA_yEeO4u4l4xHg7lQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_UYrMxQ_yEeO4u4l4xHg7lQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_UYrMxg_yEeO4u4l4xHg7lQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_UYrMxw_yEeO4u4l4xHg7lQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_UYrz0A_yEeO4u4l4xHg7lQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_UYrz0Q_yEeO4u4l4xHg7lQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_UYrz0g_yEeO4u4l4xHg7lQ" type="StateFigureCompartment"/>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_UYrMwQ_yEeO4u4l4xHg7lQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_UYrMwg_yEeO4u4l4xHg7lQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_UYrz0w_yEeO4u4l4xHg7lQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_UYrMww_yEeO4u4l4xHg7lQ" x="129" y="112"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GODhIQ_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_GNzCcQ_yEeO4u4l4xHg7lQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOEIMA_yEeO4u4l4xHg7lQ" x="220" y="10" width="401" height="281"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_GORjkA_yEeO4u4l4xHg7lQ" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_GORjkg_yEeO4u4l4xHg7lQ" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_GORjkw_yEeO4u4l4xHg7lQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_GORjlA_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_GORjlQ_yEeO4u4l4xHg7lQ" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOSKoA_yEeO4u4l4xHg7lQ"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_GOSKoQ_yEeO4u4l4xHg7lQ" x="10" y="10" width="200" height="286"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_GNuJ8Q_yEeO4u4l4xHg7lQ"/>
+    <edges xmi:id="_uRaMcBCOEeO14rkGLjKN-w" type="Transition" element="_uRUs4BCOEeO14rkGLjKN-w" source="_GOFWUA_yEeO4u4l4xHg7lQ" target="_UYrMwA_yEeO4u4l4xHg7lQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_uRhhMBCOEeO14rkGLjKN-w" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_uRhhMRCOEeO14rkGLjKN-w"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_uRhhMhCOEeO14rkGLjKN-w" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_uRaMcRCOEeO14rkGLjKN-w" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_uRazgBCOEeO14rkGLjKN-w" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_uRaMchCOEeO14rkGLjKN-w" points="[7, 2, -232, -68]$[240, 55, 1, -15]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_uRo18BCOEeO14rkGLjKN-w" id="(0.104,0.2698412698412698)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>