Browse Source

Fixes issue 75. False warning on sync node outgoing transitions.

AxelTerfloth@googlemail.com 10 years ago
parent
commit
2bd90692db

+ 119 - 119
plugins/org.yakindu.sct.model.stext/model/SText.ecore

@@ -1,119 +1,119 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="stext" nsURI="http://www.yakindu.org/sct/statechart/SText" nsPrefix="stext">
-  <eClassifiers xsi:type="ecore:EClass" name="Root">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="roots" upperBound="-1"
-        eType="#//DefRoot" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DefRoot"/>
-  <eClassifiers xsi:type="ecore:EClass" name="StatechartRoot" eSuperTypes="#//DefRoot">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//StatechartSpecification"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StateRoot" eSuperTypes="#//DefRoot">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//StateSpecification"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TransitionRoot" eSuperTypes="#//DefRoot">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//TransitionSpecification"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StatechartSpecification" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ScopedElement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="StateSpecification">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TransitionSpecification">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="reaction" eType="#//TransitionReaction"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="StatechartScope" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"/>
-  <eClassifiers xsi:type="ecore:EClass" name="InterfaceScope" eSuperTypes="#//StatechartScope platform:/resource/org.yakindu.base.types/model/base.ecore#//NamedElement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="InternalScope" eSuperTypes="#//StatechartScope"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ImportScope" eSuperTypes="#//StatechartScope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
-        eType="#//Import" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Import">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="importedNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Event platform:/resource/org.yakindu.base.types/model/types.ecore#//Event">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//Direction"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="Direction">
-    <eLiterals name="LOCAL" literal="local"/>
-    <eLiterals name="IN" value="1" literal="in"/>
-    <eLiterals name="OUT" value="2" literal="out"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="VariableDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Variable platform:/resource/org.yakindu.base.types/model/types.ecore#//Property">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="writeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="external" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="initialValue" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="OperationDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.base.types/model/types.ecore#//Operation"/>
-  <eClassifiers xsi:type="ecore:EClass" name="LocalReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
-  <eClassifiers xsi:type="ecore:EClass" name="TransitionReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Guard">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EntryPointSpec" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ReactionProperty">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entrypoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ExitPointSpec" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ReactionProperty">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exitpoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="RegularEventSpec" eSuperTypes="#//EventSpec">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="TimeEventSpec" eSuperTypes="#//EventSpec">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TimeEventType"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unit" eType="#//TimeUnit"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="TimeEventType">
-    <eLiterals name="after" literal="after"/>
-    <eLiterals name="every" value="1" literal="every"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="BuiltinEventSpec" eSuperTypes="#//EventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="EntryEvent" eSuperTypes="#//BuiltinEventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ExitEvent" eSuperTypes="#//BuiltinEventSpec"/>
-  <eClassifiers xsi:type="ecore:EClass" name="AlwaysEvent" eSuperTypes="#//BuiltinEventSpec"/>
-  <eClassifiers xsi:type="ecore:EEnum" name="TimeUnit">
-    <eLiterals name="second" literal="s"/>
-    <eLiterals name="millisecond" value="1" literal="ms"/>
-    <eLiterals name="microsecond" value="2" literal="us"/>
-    <eLiterals name="nanosecond" value="3" literal="ns"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="SimpleScope" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ReactionTrigger" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="triggers" upperBound="-1"
-        eType="#//EventSpec" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Guard"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="DefaultTrigger" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger"/>
-  <eClassifiers xsi:type="ecore:EClass" name="ReactionEffect" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Effect">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
-        eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventRaisingExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="EventValueReferenceExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
-        containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ActiveStateReferenceExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//State"/>
-  </eClassifiers>
-</ecore:EPackage>
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="stext" nsURI="http://www.yakindu.org/sct/statechart/SText" nsPrefix="stext">
+  <eClassifiers xsi:type="ecore:EClass" name="Root">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="roots" upperBound="-1"
+        eType="#//DefRoot" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DefRoot"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StatechartRoot" eSuperTypes="#//DefRoot">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//StatechartSpecification"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StateRoot" eSuperTypes="#//DefRoot">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//StateSpecification"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TransitionRoot" eSuperTypes="#//DefRoot">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="def" eType="#//TransitionSpecification"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StatechartSpecification" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ScopedElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="StateSpecification">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="scope" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TransitionSpecification">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reaction" eType="#//TransitionReaction"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="StatechartScope" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"/>
+  <eClassifiers xsi:type="ecore:EClass" name="InterfaceScope" eSuperTypes="#//StatechartScope platform:/resource/org.yakindu.base.types/model/base.ecore#//NamedElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="InternalScope" eSuperTypes="#//StatechartScope"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ImportScope" eSuperTypes="#//StatechartScope">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="imports" upperBound="-1"
+        eType="#//Import" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Import">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="importedNamespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EventDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Event platform:/resource/org.yakindu.base.types/model/types.ecore#//Event">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="direction" eType="#//Direction"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="Direction">
+    <eLiterals name="LOCAL" literal="local"/>
+    <eLiterals name="IN" value="1" literal="in"/>
+    <eLiterals name="OUT" value="2" literal="out"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="VariableDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Variable platform:/resource/org.yakindu.base.types/model/types.ecore#//Property">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="writeable" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="readonly" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="external" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="initialValue" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OperationDefinition" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.base.types/model/types.ecore#//Operation"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LocalReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
+  <eClassifiers xsi:type="ecore:EClass" name="TransitionReaction" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Guard">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EntryPointSpec" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ReactionProperty">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="entrypoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ExitPointSpec" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//ReactionProperty">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="exitpoint" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EventSpec"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RegularEventSpec" eSuperTypes="#//EventSpec">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="TimeEventSpec" eSuperTypes="#//EventSpec">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" eType="#//TimeEventType"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="unit" eType="#//TimeUnit"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="TimeEventType">
+    <eLiterals name="after" literal="after"/>
+    <eLiterals name="every" value="1" literal="every"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="BuiltinEventSpec" eSuperTypes="#//EventSpec"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EntryEvent" eSuperTypes="#//BuiltinEventSpec"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ExitEvent" eSuperTypes="#//BuiltinEventSpec"/>
+  <eClassifiers xsi:type="ecore:EClass" name="AlwaysEvent" eSuperTypes="#//BuiltinEventSpec"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="TimeUnit">
+    <eLiterals name="second" literal="s"/>
+    <eLiterals name="millisecond" value="1" literal="ms"/>
+    <eLiterals name="microsecond" value="2" literal="us"/>
+    <eLiterals name="nanosecond" value="3" literal="ns"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SimpleScope" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Scope"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ReactionTrigger" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="triggers" upperBound="-1"
+        eType="#//EventSpec" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="guard" eType="#//Guard"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DefaultTrigger" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Trigger"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ReactionEffect" eSuperTypes="platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Effect">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
+        eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EventRaisingExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="event" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="EventValueReferenceExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ActiveStateReferenceExpression" eSuperTypes="platform:/resource/org.yakindu.base.expressions/model/Expressions.ecore#//Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="ecore:EClass platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//State"/>
+  </eClassifiers>
+</ecore:EPackage>

+ 108 - 108
plugins/org.yakindu.sct.model.stext/model/SText.genmodel

@@ -1,108 +1,108 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
-    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.yakindu.sct.model.stext/src-gen" editDirectory="/org.yakindu.sct.model.stext.edit/src"
-    editorDirectory="/org.yakindu.sct.model.stext.editor/src" modelPluginID="org.yakindu.sct.model.stext"
-    forceOverwrite="true" modelName="SText" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
-    complianceLevel="5.0" copyrightFields="false" editPluginID="org.yakindu.sct.model.stext.edit"
-    editorPluginID="org.yakindu.sct.model.stext.editor" runtimeVersion="2.8" usedGenPackages="platform:/resource/org.yakindu.base.expressions/model/Expressions.genmodel#//expressions platform:/resource/org.yakindu.base.types/model/base.genmodel#//base platform:/resource/org.yakindu.base.types/model/types.genmodel#//types platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel#//sgraph">
-  <genPackages prefix="Stext" basePackage="org.yakindu.sct.model.stext" disposableProviderFactory="true"
-      ecorePackage="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#/">
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction">
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/LOCAL"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/IN"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/OUT"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType">
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType/after"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType/every"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit">
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/second"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/millisecond"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/microsecond"/>
-      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/nanosecond"/>
-    </genEnums>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Root">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Root/roots"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefRoot"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartRoot">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartRoot/def"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateRoot">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateRoot/def"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionRoot">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionRoot/def"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartSpecification"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateSpecification">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateSpecification/scope"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionSpecification">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionSpecification/reaction"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartScope"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//InterfaceScope"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//InternalScope"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ImportScope">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ImportScope/imports"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Import">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Import/importedNamespace"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventDefinition">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventDefinition/direction"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/writeable"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/readonly"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/external"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/initialValue"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//OperationDefinition"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//LocalReaction"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionReaction"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Guard">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Guard/expression"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryPointSpec">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryPointSpec/entrypoint"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitPointSpec">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitPointSpec/exitpoint"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventSpec"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//RegularEventSpec">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//RegularEventSpec/event"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/type"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/value"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/unit"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//BuiltinEventSpec"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryEvent"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitEvent"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//AlwaysEvent"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//SimpleScope"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/triggers"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/guard"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefaultTrigger"/>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect/actions"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression/event"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression/value"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventValueReferenceExpression">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventValueReferenceExpression/value"/>
-    </genClasses>
-    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ActiveStateReferenceExpression">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ActiveStateReferenceExpression/value"/>
-    </genClasses>
-  </genPackages>
-</genmodel:GenModel>
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.yakindu.sct.model.stext/src-gen" editDirectory="/org.yakindu.sct.model.stext.edit/src"
+    editorDirectory="/org.yakindu.sct.model.stext.editor/src" modelPluginID="org.yakindu.sct.model.stext"
+    forceOverwrite="true" modelName="SText" updateClasspath="false" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    complianceLevel="5.0" copyrightFields="false" editPluginID="org.yakindu.sct.model.stext.edit"
+    editorPluginID="org.yakindu.sct.model.stext.editor" runtimeVersion="2.8" usedGenPackages="platform:/resource/org.yakindu.base.expressions/model/Expressions.genmodel#//expressions platform:/resource/org.yakindu.base.types/model/base.genmodel#//base platform:/resource/org.yakindu.base.types/model/types.genmodel#//types platform:/resource/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel#//sgraph">
+  <genPackages prefix="Stext" basePackage="org.yakindu.sct.model.stext" disposableProviderFactory="true"
+      ecorePackage="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction">
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/LOCAL"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/IN"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Direction/OUT"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType">
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType/after"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventType/every"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit">
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/second"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/millisecond"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/microsecond"/>
+      <genEnumLiterals ecoreEnumLiteral="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeUnit/nanosecond"/>
+    </genEnums>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Root">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Root/roots"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefRoot"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartRoot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartRoot/def"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateRoot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateRoot/def"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionRoot">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionRoot/def"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartSpecification"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateSpecification">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StateSpecification/scope"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionSpecification">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionSpecification/reaction"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//StatechartScope"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//InterfaceScope"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//InternalScope"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ImportScope">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ImportScope/imports"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Import">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Import/importedNamespace"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventDefinition">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventDefinition/direction"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/writeable"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/readonly"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/external"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//VariableDefinition/initialValue"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//OperationDefinition"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//LocalReaction"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TransitionReaction"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Guard">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//Guard/expression"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryPointSpec">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryPointSpec/entrypoint"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitPointSpec">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitPointSpec/exitpoint"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventSpec"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//RegularEventSpec">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//RegularEventSpec/event"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/type"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/value"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//TimeEventSpec/unit"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//BuiltinEventSpec"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EntryEvent"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ExitEvent"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//AlwaysEvent"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//SimpleScope"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/triggers"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionTrigger/guard"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//DefaultTrigger"/>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ReactionEffect/actions"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression/event"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventRaisingExpression/value"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventValueReferenceExpression">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//EventValueReferenceExpression/value"/>
+    </genClasses>
+    <genClasses ecoreClass="platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ActiveStateReferenceExpression">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference platform:/resource/org.yakindu.sct.model.stext/model/SText.ecore#//ActiveStateReferenceExpression/value"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>

+ 216 - 116
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/validation/STextJavaValidator.java

@@ -63,6 +63,7 @@ import org.yakindu.sct.model.sgraph.Region;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
+import org.yakindu.sct.model.sgraph.Synchronization;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
 import org.yakindu.sct.model.sgraph.Variable;
@@ -107,8 +108,10 @@ import de.itemis.xtext.utils.jface.viewers.ContextElementAdapter;
  * @auhor muelder
  * 
  */
-@ComposedChecks(validators = { SGraphJavaValidator.class, SCTResourceValidator.class, ExpressionsJavaValidator.class })
-public class STextJavaValidator extends AbstractSTextJavaValidator implements STextValidationMessages {
+@ComposedChecks(validators = { SGraphJavaValidator.class,
+		SCTResourceValidator.class, ExpressionsJavaValidator.class })
+public class STextJavaValidator extends AbstractSTextJavaValidator implements
+		STextValidationMessages {
 
 	@Inject
 	private ISTextTypeInferrer typeInferrer;
@@ -128,11 +131,14 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 
 	@Check(CheckType.FAST)
 	public void transitionsWithNoTrigger(Transition trans) {
-		if (trans.getSource() instanceof Entry || trans.getSource() instanceof Choice) {
+		if (trans.getSource() instanceof Entry
+				|| trans.getSource() instanceof Choice
+				|| trans.getSource() instanceof Synchronization) {
 			return;
 		}
 		if (trans.getSource() instanceof org.yakindu.sct.model.sgraph.State) {
-			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) trans.getSource();
+			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) trans
+					.getSource();
 			if (state.isComposite()) {
 				for (Region r : state.getRegions()) {
 					for (Vertex v : r.getVertices()) {
@@ -144,7 +150,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			}
 		}
 
-		if (!STextValidationModelUtils.getExitPointSpecs(trans.getProperties()).isEmpty()) {
+		if (!STextValidationModelUtils.getExitPointSpecs(trans.getProperties())
+				.isEmpty()) {
 			return;
 		}
 
@@ -157,17 +164,21 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	public void checkUnusedEntry(final Entry entry) {
 		if (entry.getParentRegion().getComposite() instanceof org.yakindu.sct.model.sgraph.State
 				&& entry.getIncomingTransitions().isEmpty()) {
-			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) entry.getParentRegion()
-					.getComposite();
+			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();
+				Iterator<Transition> transitionIt = state
+						.getIncomingTransitions().iterator();
 				while (transitionIt.hasNext() && !hasIncomingTransition) {
-					Iterator<ReactionProperty> propertyIt = transitionIt.next().getProperties().iterator();
+					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());
+							hasIncomingTransition = entry.getName()
+									.equals(((EntryPointSpec) property)
+											.getEntrypoint());
 						}
 					}
 				}
@@ -183,17 +194,23 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		Expression varRef = expression.getVarRef();
 		if (varRef instanceof FeatureCall) {
 			EObject referencedObject = ((FeatureCall) varRef).getFeature();
-			if (!(referencedObject instanceof Variable) && !(referencedObject instanceof Property)) {
-				error(LEFT_HAND_ASSIGNMENT, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
+			if (!(referencedObject instanceof Variable)
+					&& !(referencedObject instanceof Property)) {
+				error(LEFT_HAND_ASSIGNMENT,
+						ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
 			}
 		} else if (varRef instanceof ElementReferenceExpression) {
-			EObject referencedObject = ((ElementReferenceExpression) varRef).getReference();
-			if (!(referencedObject instanceof Variable) && !(referencedObject instanceof Property)) {
-				error(LEFT_HAND_ASSIGNMENT, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
+			EObject referencedObject = ((ElementReferenceExpression) varRef)
+					.getReference();
+			if (!(referencedObject instanceof Variable)
+					&& !(referencedObject instanceof Property)) {
+				error(LEFT_HAND_ASSIGNMENT,
+						ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
 			}
 
 		} else {
-			error(LEFT_HAND_ASSIGNMENT, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
+			error(LEFT_HAND_ASSIGNMENT,
+					ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
 		}
 	}
 
@@ -204,10 +221,12 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		if (varRef instanceof FeatureCall)
 			referencedObject = ((FeatureCall) varRef).getFeature();
 		else if (varRef instanceof ElementReferenceExpression)
-			referencedObject = ((ElementReferenceExpression) varRef).getReference();
+			referencedObject = ((ElementReferenceExpression) varRef)
+					.getReference();
 		if (referencedObject instanceof VariableDefinition) {
 			if (!((VariableDefinition) referencedObject).isWriteable()) {
-				error(ASSIGNMENT_TO_VALUE, ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
+				error(ASSIGNMENT_TO_VALUE,
+						ExpressionsPackage.Literals.ASSIGNMENT_EXPRESSION__VAR_REF);
 			}
 		}
 	}
@@ -230,10 +249,12 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			if (expression instanceof FeatureCall)
 				referencedObject = ((FeatureCall) expression).getFeature();
 			else if (expression instanceof ElementReferenceExpression)
-				referencedObject = ((ElementReferenceExpression) expression).getReference();
+				referencedObject = ((ElementReferenceExpression) expression)
+						.getReference();
 			if (referencedObject instanceof VariableDefinition) {
 				if (((VariableDefinition) referencedObject).isWriteable()) {
-					error(REFERENCE_TO_VARIABLE, StextPackage.Literals.VARIABLE_DEFINITION__INITIAL_VALUE);
+					error(REFERENCE_TO_VARIABLE,
+							StextPackage.Literals.VARIABLE_DEFINITION__INITIAL_VALUE);
 				}
 			}
 		}
@@ -243,25 +264,30 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	public void checkUnusedExit(final Exit exit) {
 		if (exit.getParentRegion().getComposite() instanceof org.yakindu.sct.model.sgraph.State
 				&& exit.getOutgoingTransitions().isEmpty()) {
-			org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) exit.getParentRegion()
-					.getComposite();
+			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();
+				Iterator<Transition> transitionIt = state
+						.getOutgoingTransitions().iterator();
 				while (transitionIt.hasNext() && !hasOutgoingTransition) {
 					Transition transition = transitionIt.next();
-					hasOutgoingTransition = STextValidationModelUtils.isDefaultExitTransition(transition) ? true
-							: STextValidationModelUtils.isNamedExitTransition(transition, exit.getName());
+					hasOutgoingTransition = STextValidationModelUtils
+							.isDefaultExitTransition(transition) ? true
+							: STextValidationModelUtils.isNamedExitTransition(
+									transition, exit.getName());
 				}
 				if (!hasOutgoingTransition) {
 					error(EXIT_UNUSED, exit, null, -1);
 				}
 			} else {
 				boolean hasOutgoingTransition = false;
-				Iterator<Transition> transitionIt = state.getOutgoingTransitions().iterator();
+				Iterator<Transition> transitionIt = state
+						.getOutgoingTransitions().iterator();
 				while (transitionIt.hasNext() && !hasOutgoingTransition) {
-					hasOutgoingTransition = STextValidationModelUtils.isDefaultExitTransition(transitionIt.next());
+					hasOutgoingTransition = STextValidationModelUtils
+							.isDefaultExitTransition(transitionIt.next());
 				}
 				if (!hasOutgoingTransition) {
 					error(EXIT_DEFAULT_UNUSED, exit, null, -1);
@@ -278,7 +304,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 					org.yakindu.sct.model.sgraph.State state = (org.yakindu.sct.model.sgraph.State) transition
 							.getTarget();
 					if (!state.isComposite()) {
-						warning(TRANSITION_ENTRY_SPEC_NOT_COMPOSITE, transition, null, -1);
+						warning(TRANSITION_ENTRY_SPEC_NOT_COMPOSITE,
+								transition, null, -1);
 					}
 				}
 			} else if (property instanceof ExitPointSpec) {
@@ -287,14 +314,19 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 					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);
 					} else {
 						// Validate an exit point is continued on one transition
 						// only.
 						for (Transition t : state.getOutgoingTransitions()) {
 							if (transition != t
-									&& STextValidationModelUtils.isNamedExitTransition(t, exitPointSpec.getExitpoint())) {
-								warning(TRANSITION_EXIT_SPEC_ON_MULTIPLE_SIBLINGS, transition, null, -1);
+									&& STextValidationModelUtils
+											.isNamedExitTransition(t,
+													exitPointSpec
+															.getExitpoint())) {
+								warning(TRANSITION_EXIT_SPEC_ON_MULTIPLE_SIBLINGS,
+										transition, null, -1);
 							}
 						}
 
@@ -302,18 +334,22 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 						// region
 
 						boolean hasExit = false;
-						Iterator<Region> regionIter = state.getRegions().iterator();
+						Iterator<Region> regionIter = state.getRegions()
+								.iterator();
 						while (regionIter.hasNext() && !hasExit) {
 
-							Iterator<Exit> exitIter = STextValidationModelUtils.getExits(regionIter.next().eContents())
+							Iterator<Exit> exitIter = STextValidationModelUtils
+									.getExits(regionIter.next().eContents())
 									.iterator();
 							while (exitIter.hasNext() && !hasExit) {
 								Exit exit = exitIter.next();
-								hasExit = exitPointSpec.getExitpoint().equals(exit.getName());
+								hasExit = exitPointSpec.getExitpoint().equals(
+										exit.getName());
 							}
 						}
 						if (!hasExit) {
-							error(TRANSITION_NOT_EXISTING_NAMED_EXIT_POINT, transition, null, -1);
+							error(TRANSITION_NOT_EXISTING_NAMED_EXIT_POINT,
+									transition, null, -1);
 						}
 
 					}
@@ -323,21 +359,26 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	}
 
 	@Check(CheckType.FAST)
-	public void checkUnboundEntryPoints(final org.yakindu.sct.model.sgraph.State state) {
+	public void checkUnboundEntryPoints(
+			final org.yakindu.sct.model.sgraph.State state) {
 		if (state.isComposite()) {
-			final List<Transition>[] transitions = STextValidationModelUtils.getEntrySpecSortedTransitions(state
-					.getIncomingTransitions());
+			final List<Transition>[] transitions = STextValidationModelUtils
+					.getEntrySpecSortedTransitions(state
+							.getIncomingTransitions());
 			Map<Region, List<Entry>> regions = null;
 
 			// first list contains Transitions without entry spec
 			if (!transitions[0].isEmpty()) {
-				regions = STextValidationModelUtils.getRegionsWithoutDefaultEntry(state.getRegions());
+				regions = STextValidationModelUtils
+						.getRegionsWithoutDefaultEntry(state.getRegions());
 				if (!regions.isEmpty()) {
 					for (Transition transition : transitions[0]) {
-						error(TRANSITION_UNBOUND_DEFAULT_ENTRY_POINT, transition, null, -1);
+						error(TRANSITION_UNBOUND_DEFAULT_ENTRY_POINT,
+								transition, null, -1);
 					}
 					for (Region region : regions.keySet()) {
-						error(REGION_UNBOUND_DEFAULT_ENTRY_POINT, region, null, -1);
+						error(REGION_UNBOUND_DEFAULT_ENTRY_POINT, region, null,
+								-1);
 					}
 				}
 			}
@@ -345,7 +386,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			// second list contains Transitions with entry spec
 			if (!transitions[1].isEmpty()) {
 				if (regions == null) {
-					regions = STextValidationModelUtils.getRegionsWithoutDefaultEntry(state.getRegions());
+					regions = STextValidationModelUtils
+							.getRegionsWithoutDefaultEntry(state.getRegions());
 				}
 				for (Transition transition : transitions[1]) {
 					boolean hasTargetEntry = true;
@@ -356,18 +398,21 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 							for (Region region : regions.keySet()) {
 								boolean hasEntry = false;
 								for (Entry entry : regions.get(region)) {
-									if (entry.getName().equals(spec.getEntrypoint())) {
+									if (entry.getName().equals(
+											spec.getEntrypoint())) {
 										hasEntry = true;
 										break;
 									}
 								}
 								if (!hasEntry) {
-									error(REGION_UNBOUND_NAMED_ENTRY_POINT + specName, region, null, -1);
+									error(REGION_UNBOUND_NAMED_ENTRY_POINT
+											+ specName, region, null, -1);
 									hasTargetEntry = false;
 								}
 							}
 							if (!hasTargetEntry) {
-								error(TRANSITION_UNBOUND_NAMED_ENTRY_POINT + specName, transition, null, -1);
+								error(TRANSITION_UNBOUND_NAMED_ENTRY_POINT
+										+ specName, transition, null, -1);
 							}
 						}
 					}
@@ -380,7 +425,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	public void checkVariableDefinition(final VariableDefinition definition) {
 		try {
 			InferenceResult result = typeInferrer.inferType(definition);
-			if (result.getType() != null && typeSystem.isVoidType(result.getType())) {
+			if (result.getType() != null
+					&& typeSystem.isVoidType(result.getType())) {
 				error(VARIABLE_VOID_TYPE, null);
 			} else {
 				report(result, null);
@@ -404,7 +450,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	}
 
 	@Check(CheckType.FAST)
-	public void checkOperationArguments_TypedElementReferenceExpression(final ElementReferenceExpression call) {
+	public void checkOperationArguments_TypedElementReferenceExpression(
+			final ElementReferenceExpression call) {
 		if (call.getReference() instanceof Operation) {
 			Operation operation = (Operation) call.getReference();
 			EList<Parameter> parameters = operation.getParameters();
@@ -420,16 +467,18 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 
 		final String name = getVariableName(exp);
 
-		List<AssignmentExpression> contents = EcoreUtil2.eAllOfType(exp, AssignmentExpression.class);
+		List<AssignmentExpression> contents = EcoreUtil2.eAllOfType(exp,
+				AssignmentExpression.class);
 		contents.remove(exp);
 
-		Iterable<AssignmentExpression> filter = Iterables.filter(contents, new Predicate<AssignmentExpression>() {
-			public boolean apply(final AssignmentExpression ex) {
-				String variableName = getVariableName(ex);
-				return variableName.equals(name);
+		Iterable<AssignmentExpression> filter = Iterables.filter(contents,
+				new Predicate<AssignmentExpression>() {
+					public boolean apply(final AssignmentExpression ex) {
+						String variableName = getVariableName(ex);
+						return variableName.equals(name);
 
-			}
-		});
+					}
+				});
 		if (Iterables.size(filter) > 0) {
 			error(ASSIGNMENT_EXPRESSION, null);
 		}
@@ -439,9 +488,11 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		Expression varRef = exp.getVarRef();
 		if (varRef instanceof ElementReferenceExpression
 				&& ((ElementReferenceExpression) varRef).getReference() instanceof Property) {
-			Property reference = (Property) ((ElementReferenceExpression) varRef).getReference();
+			Property reference = (Property) ((ElementReferenceExpression) varRef)
+					.getReference();
 			return reference.getName();
-		} else if (varRef instanceof FeatureCall && ((FeatureCall) varRef).getFeature() instanceof Property) {
+		} else if (varRef instanceof FeatureCall
+				&& ((FeatureCall) varRef).getFeature() instanceof Property) {
 			Property reference = (Property) ((FeatureCall) varRef).getFeature();
 			return reference.getName();
 		}
@@ -454,7 +505,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			return;
 		}
 		if (call.getFeature() instanceof Scope) {
-			error("A variable, event or operation is required", ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
+			error("A variable, event or operation is required",
+					ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
 					INSIGNIFICANT_INDEX, FEATURE_CALL_TO_SCOPE);
 		}
 	}
@@ -466,16 +518,18 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		}
 		if (call.getReference() instanceof Scope) {
 			error("A variable, event or operation is required",
-					ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, INSIGNIFICANT_INDEX,
-					FEATURE_CALL_TO_SCOPE);
+					ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE,
+					INSIGNIFICANT_INDEX, FEATURE_CALL_TO_SCOPE);
 		}
 	}
 
 	@Check(CheckType.FAST)
 	public void checkGuard(Guard guard) {
 		try {
-			InferenceResult result = typeInferrer.inferType(guard.getExpression());
-			if (result.getType() == null || !typeSystem.isBooleanType(result.getType())) {
+			InferenceResult result = typeInferrer.inferType(guard
+					.getExpression());
+			if (result.getType() == null
+					|| !typeSystem.isBooleanType(result.getType())) {
 				error(GUARD_EXPRESSION, StextPackage.Literals.GUARD__EXPRESSION);
 			}
 			report(result, null);
@@ -489,7 +543,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	public void checkTimeEventSpecValueExpression(TimeEventSpec spec) {
 		try {
 			InferenceResult result = typeInferrer.inferType(spec.getValue());
-			if (result.getType() == null || !typeSystem.isIntegerType(result.getType())) {
+			if (result.getType() == null
+					|| !typeSystem.isIntegerType(result.getType())) {
 				error(TIME_EXPRESSION, null);
 			}
 			report(result, StextPackage.Literals.TIME_EVENT_SPEC__VALUE);
@@ -505,8 +560,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			if (!(reactionTrigger.eContainer() instanceof LocalReaction)
 					&& (eventSpec instanceof EntryEvent || eventSpec instanceof ExitEvent)) {
 				error("entry and exit events are allowed as local reactions only.",
-						StextPackage.Literals.REACTION_TRIGGER__TRIGGERS, INSIGNIFICANT_INDEX,
-						LOCAL_REACTIONS_NOT_ALLOWED);
+						StextPackage.Literals.REACTION_TRIGGER__TRIGGERS,
+						INSIGNIFICANT_INDEX, LOCAL_REACTIONS_NOT_ALLOWED);
 			}
 		}
 	}
@@ -533,15 +588,18 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	public void checkReactionEffectActions(ReactionEffect effect) {
 		for (Expression exp : effect.getActions()) {
 
-			if (!(exp instanceof AssignmentExpression) && !(exp instanceof EventRaisingExpression)) {
+			if (!(exp instanceof AssignmentExpression)
+					&& !(exp instanceof EventRaisingExpression)) {
 
 				if (exp instanceof FeatureCall) {
 					checkFeatureCallEffect((FeatureCall) exp);
 				} else if (exp instanceof ElementReferenceExpression) {
 					checkElementReferenceEffect((ElementReferenceExpression) exp);
 				} else {
-					error("Action has no effect.", StextPackage.Literals.REACTION_EFFECT__ACTIONS, effect.getActions()
-							.indexOf(exp), FEATURE_CALL_HAS_NO_EFFECT);
+					error("Action has no effect.",
+							StextPackage.Literals.REACTION_EFFECT__ACTIONS,
+							effect.getActions().indexOf(exp),
+							FEATURE_CALL_HAS_NO_EFFECT);
 				}
 
 			}
@@ -552,16 +610,22 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		if (call.getFeature() != null && call.getFeature() instanceof Feature
 				&& !(call.getFeature() instanceof Operation)) {
 			if (call.getFeature() instanceof Property) {
-				error("Access to property '" + nameProvider.getFullyQualifiedName(call.getFeature())
-						+ "' has no effect.", call, ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
+				error("Access to property '"
+						+ nameProvider.getFullyQualifiedName(call.getFeature())
+						+ "' has no effect.", call,
+						ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
 						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			} else if (call.getFeature() instanceof Event) {
-				error("Access to event '" + nameProvider.getFullyQualifiedName(call.getFeature()) + "' has no effect.",
-						call, ExpressionsPackage.Literals.FEATURE_CALL__FEATURE, INSIGNIFICANT_INDEX,
-						FEATURE_CALL_HAS_NO_EFFECT);
+				error("Access to event '"
+						+ nameProvider.getFullyQualifiedName(call.getFeature())
+						+ "' has no effect.", call,
+						ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
+						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			} else {
-				error("Access to feature '" + nameProvider.getFullyQualifiedName(call.getFeature())
-						+ "' has no effect.", call, ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
+				error("Access to feature '"
+						+ nameProvider.getFullyQualifiedName(call.getFeature())
+						+ "' has no effect.", call,
+						ExpressionsPackage.Literals.FEATURE_CALL__FEATURE,
 						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			}
 		}
@@ -570,37 +634,49 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	protected void checkElementReferenceEffect(ElementReferenceExpression refExp) {
 		if (!(refExp.getReference() instanceof Operation)) {
 			if (refExp.getReference() instanceof Property) {
-				error("Access to property '" + nameProvider.getFullyQualifiedName(refExp.getReference())
-						+ "' has no effect.", refExp,
-						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, INSIGNIFICANT_INDEX,
-						FEATURE_CALL_HAS_NO_EFFECT);
+				error("Access to property '"
+						+ nameProvider.getFullyQualifiedName(refExp
+								.getReference()) + "' has no effect.",
+						refExp,
+						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE,
+						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			} else if (refExp.getReference() instanceof Event) {
-				error("Access to event '" + nameProvider.getFullyQualifiedName(refExp.getReference())
-						+ "' has no effect.", refExp,
-						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, INSIGNIFICANT_INDEX,
-						FEATURE_CALL_HAS_NO_EFFECT);
+				error("Access to event '"
+						+ nameProvider.getFullyQualifiedName(refExp
+								.getReference()) + "' has no effect.",
+						refExp,
+						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE,
+						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			} else {
-				error("Access to feature '" + nameProvider.getFullyQualifiedName(refExp.getReference())
-						+ "' has no effect.", refExp,
-						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE, INSIGNIFICANT_INDEX,
-						FEATURE_CALL_HAS_NO_EFFECT);
+				error("Access to feature '"
+						+ nameProvider.getFullyQualifiedName(refExp
+								.getReference()) + "' has no effect.",
+						refExp,
+						ExpressionsPackage.Literals.ELEMENT_REFERENCE_EXPRESSION__REFERENCE,
+						INSIGNIFICANT_INDEX, FEATURE_CALL_HAS_NO_EFFECT);
 			}
 		}
 	}
 
 	@Check(CheckType.FAST)
 	public void checkEventDefinition(EventDefinition event) {
-		if (event.eContainer() instanceof InterfaceScope && event.getDirection() == Direction.LOCAL) {
-			error(LOCAL_DECLARATIONS, StextPackage.Literals.EVENT_DEFINITION__DIRECTION);
+		if (event.eContainer() instanceof InterfaceScope
+				&& event.getDirection() == Direction.LOCAL) {
+			error(LOCAL_DECLARATIONS,
+					StextPackage.Literals.EVENT_DEFINITION__DIRECTION);
 		}
-		if (event.eContainer() instanceof InternalScope && event.getDirection() != Direction.LOCAL) {
-			error(IN_OUT_DECLARATIONS, StextPackage.Literals.EVENT_DEFINITION__DIRECTION);
+		if (event.eContainer() instanceof InternalScope
+				&& event.getDirection() != Direction.LOCAL) {
+			error(IN_OUT_DECLARATIONS,
+					StextPackage.Literals.EVENT_DEFINITION__DIRECTION);
 		}
 	}
 
 	@Check(CheckType.FAST)
 	public void checkExitPointSpecWithTrigger(Transition t) {
-		if (!STextValidationModelUtils.getExitPointSpecs(t.getProperties()).isEmpty() && t.getTrigger() != null
+		if (!STextValidationModelUtils.getExitPointSpecs(t.getProperties())
+				.isEmpty()
+				&& t.getTrigger() != null
 				&& t.getSource() instanceof org.yakindu.sct.model.sgraph.State) {
 			error(EXITPOINTSPEC_WITH_TRIGGER, t, null, -1);
 		}
@@ -611,14 +687,17 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		List<InterfaceScope> defaultInterfaces = new LinkedList<InterfaceScope>();
 
 		for (Scope scope : statechart.getScopes()) {
-			if (scope instanceof InterfaceScope && ((InterfaceScope) scope).getName() == null) {
+			if (scope instanceof InterfaceScope
+					&& ((InterfaceScope) scope).getName() == null) {
 				defaultInterfaces.add((InterfaceScope) scope);
 			}
 		}
 		if (defaultInterfaces.size() > 1) {
 			for (InterfaceScope scope : defaultInterfaces) {
-				error(ONLY_ONE_INTERFACE, scope, grammarAccess.getInterfaceScopeAccess().getInterfaceKeyword_1(),
-						ValidationMessageAcceptor.INSIGNIFICANT_INDEX, ONLY_ONE_INTERFACE);
+				error(ONLY_ONE_INTERFACE, scope, grammarAccess
+						.getInterfaceScopeAccess().getInterfaceKeyword_1(),
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						ONLY_ONE_INTERFACE);
 			}
 		}
 	}
@@ -633,19 +712,22 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 			}
 		}
 		if (!found)
-			warning(CHOICE_ONE_OUTGOING_DEFAULT_TRANSITION, SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS);
+			warning(CHOICE_ONE_OUTGOING_DEFAULT_TRANSITION,
+					SGraphPackage.Literals.VERTEX__OUTGOING_TRANSITIONS);
 	}
 
 	protected boolean isDefault(Trigger trigger) {
 
 		return trigger == null
 				|| trigger instanceof DefaultTrigger
-				|| ((trigger instanceof ReactionTrigger) && ((ReactionTrigger) trigger).getTriggers().size() == 0 && ((ReactionTrigger) trigger)
+				|| ((trigger instanceof ReactionTrigger)
+						&& ((ReactionTrigger) trigger).getTriggers().size() == 0 && ((ReactionTrigger) trigger)
 						.getGuard() == null);
 	}
 
 	@Override
-	protected String getCurrentLanguage(Map<Object, Object> context, EObject eObject) {
+	protected String getCurrentLanguage(Map<Object, Object> context,
+			EObject eObject) {
 		Resource eResource = eObject.eResource();
 		if (eResource instanceof XtextResource) {
 			return super.getCurrentLanguage(context, eObject);
@@ -655,22 +737,27 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		return "";
 	}
 
-	protected void error(String message, EObject source, Keyword keyword, int index, String code) {
+	protected void error(String message, EObject source, Keyword keyword,
+			int index, String code) {
 		final String[] issueData = null;
 		ICompositeNode rootNode = NodeModelUtils.findActualNodeFor(source);
 		if (rootNode != null) {
-			INode child = findNode(source, false, rootNode, keyword, new int[] { index });
+			INode child = findNode(source, false, rootNode, keyword,
+					new int[] { index });
 			if (child != null) {
 				int offset = child.getTotalOffset();
 				int length = child.getTotalLength();
-				getMessageAcceptor().acceptError(message, source, offset, length, code, issueData);
+				getMessageAcceptor().acceptError(message, source, offset,
+						length, code, issueData);
 				return;
 			}
 		}
-		error(message, source, (EStructuralFeature) null, ValidationMessageAcceptor.INSIGNIFICANT_INDEX, code);
+		error(message, source, (EStructuralFeature) null,
+				ValidationMessageAcceptor.INSIGNIFICANT_INDEX, code);
 	}
 
-	private INode findNode(EObject source, boolean sourceFound, INode root, Keyword keyword, int[] index) {
+	private INode findNode(EObject source, boolean sourceFound, INode root,
+			Keyword keyword, int[] index) {
 		if (sourceFound && root.getSemanticElement() != source) {
 			return null;
 		}
@@ -681,7 +768,9 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		// .equals or == does not work because sub grammars use their own
 		// Modules with custom
 		// grammarAccess instance and .equals is not overwritten.
-		if (grammarElement instanceof Keyword && keyword.getValue().equals(((Keyword) grammarElement).getValue())) {
+		if (grammarElement instanceof Keyword
+				&& keyword.getValue().equals(
+						((Keyword) grammarElement).getValue())) {
 			if (index[0] != INSIGNIFICANT_INDEX) {
 				index[0]--;
 			}
@@ -692,7 +781,8 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 		if (root instanceof ICompositeNode) {
 			ICompositeNode node = (ICompositeNode) root;
 			for (INode child : node.getChildren()) {
-				INode result = findNode(source, sourceFound, child, keyword, index);
+				INode result = findNode(source, sourceFound, child, keyword,
+						index);
 				if (result != null) {
 					return result;
 				}
@@ -711,26 +801,35 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	@Check(CheckType.FAST)
 	public void checkImportExists(Import importDef) {
 		String importedNamespace = importDef.getImportedNamespace();
-		if (!checkImportedNamespaceExists(importDef.getImportedNamespace(), getResource(importDef))) {
-			error("The import " + importedNamespace + " cannot be resolved", importDef,
-					StextPackage.Literals.IMPORT__IMPORTED_NAMESPACE, IMPORT_NOT_RESOLVED);
+		if (!checkImportedNamespaceExists(importDef.getImportedNamespace(),
+				getResource(importDef))) {
+			error("The import " + importedNamespace + " cannot be resolved",
+					importDef,
+					StextPackage.Literals.IMPORT__IMPORTED_NAMESPACE,
+					IMPORT_NOT_RESOLVED);
 		}
 	}
 
-	protected boolean checkImportedNamespaceExists(String importedNamespace, Resource res) {
+	protected boolean checkImportedNamespaceExists(String importedNamespace,
+			Resource res) {
 		if (importedNamespace.endsWith(".*")) {
-			importedNamespace = importedNamespace.substring(0, importedNamespace.length() - 2); // remove
-																								// wildcard
+			importedNamespace = importedNamespace.substring(0,
+					importedNamespace.length() - 2); // remove
+														// wildcard
 		}
-		IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider.getResourceDescriptions(res);
+		IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider
+				.getResourceDescriptions(res);
 		URI uri = res.getURI();
-		IResourceDescription resourceDescription = resourceDescriptions.getResourceDescription(uri);
+		IResourceDescription resourceDescription = resourceDescriptions
+				.getResourceDescription(uri);
 		if (resourceDescription == null) {
 			return false; // no resource description could be found, so package
 							// cannot be resolved anyway
 		}
-		for (IContainer container : containerManager.getVisibleContainers(resourceDescription, resourceDescriptions)) {
-			final Iterable<IResourceDescription> currentDescriptions = container.getResourceDescriptions();
+		for (IContainer container : containerManager.getVisibleContainers(
+				resourceDescription, resourceDescriptions)) {
+			final Iterable<IResourceDescription> currentDescriptions = container
+					.getResourceDescriptions();
 			for (IResourceDescription resDesc : currentDescriptions) {
 				Iterable<IEObjectDescription> visiblePackages = resDesc
 						.getExportedObjectsByType(TypesPackage.Literals.PACKAGE);
@@ -745,8 +844,9 @@ public class STextJavaValidator extends AbstractSTextJavaValidator implements ST
 	}
 
 	private Resource getResource(EObject context) {
-		final ContextElementAdapter provider = (ContextElementAdapter) EcoreUtil.getExistingAdapter(
-				context.eResource(), ContextElementAdapter.class);
+		final ContextElementAdapter provider = (ContextElementAdapter) EcoreUtil
+				.getExistingAdapter(context.eResource(),
+						ContextElementAdapter.class);
 		if (provider == null) {
 			return context.eResource();
 		} else {

+ 45 - 45
test-plugins/org.yakindu.sct.model.stext.test/src-gen/org/yakindu/sct/model/stext/STextInjectorProvider.java

@@ -1,45 +1,45 @@
-/*
-* generated by Xtext
-*/
-package org.yakindu.sct.model.stext;
-
-import org.eclipse.xtext.junit4.GlobalRegistries;
-import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
-import org.eclipse.xtext.junit4.IInjectorProvider;
-import org.eclipse.xtext.junit4.IRegistryConfigurator;
-
-import com.google.inject.Injector;
-
-public class STextInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
-	
-    protected GlobalStateMemento stateBeforeInjectorCreation;
-	protected GlobalStateMemento stateAfterInjectorCreation;
-	protected Injector injector;
-
-	static {
-		GlobalRegistries.initializeDefaults();
-	}
-
-	public Injector getInjector()
-	{
-		if (injector == null) {
-			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
-			this.injector = internalCreateInjector();
-			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
-		}
-		return injector;
-	}
-	
-	protected Injector internalCreateInjector() {
-	    return new STextStandaloneSetup().createInjectorAndDoEMFRegistration();
-	}
-
-	public void restoreRegistry() {
-		stateBeforeInjectorCreation.restoreGlobalState();
-	}
-
-	public void setupRegistry() {
-		getInjector();
-		stateAfterInjectorCreation.restoreGlobalState();
-	}
-}
+/*
+* generated by Xtext
+*/
+package org.yakindu.sct.model.stext;
+
+import org.eclipse.xtext.junit4.GlobalRegistries;
+import org.eclipse.xtext.junit4.GlobalRegistries.GlobalStateMemento;
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.xtext.junit4.IRegistryConfigurator;
+
+import com.google.inject.Injector;
+
+public class STextInjectorProvider implements IInjectorProvider, IRegistryConfigurator {
+	
+    protected GlobalStateMemento stateBeforeInjectorCreation;
+	protected GlobalStateMemento stateAfterInjectorCreation;
+	protected Injector injector;
+
+	static {
+		GlobalRegistries.initializeDefaults();
+	}
+
+	public Injector getInjector()
+	{
+		if (injector == null) {
+			stateBeforeInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+			this.injector = internalCreateInjector();
+			stateAfterInjectorCreation = GlobalRegistries.makeCopyOfGlobalState();
+		}
+		return injector;
+	}
+	
+	protected Injector internalCreateInjector() {
+	    return new STextStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}

+ 16 - 16
test-plugins/org.yakindu.sct.model.stext.test/src-gen/org/yakindu/sct/model/stext/STextUiInjectorProvider.java

@@ -1,16 +1,16 @@
-/*
-* generated by Xtext
-*/
-package org.yakindu.sct.model.stext;
-
-import org.eclipse.xtext.junit4.IInjectorProvider;
-
-import com.google.inject.Injector;
-
-public class STextUiInjectorProvider implements IInjectorProvider {
-	
-	public Injector getInjector() {
-		return org.yakindu.sct.model.stext.ui.internal.STextActivator.getInstance().getInjector("org.yakindu.sct.model.stext.SText");
-	}
-	
-}
+/*
+* generated by Xtext
+*/
+package org.yakindu.sct.model.stext;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+
+import com.google.inject.Injector;
+
+public class STextUiInjectorProvider implements IInjectorProvider {
+	
+	public Injector getInjector() {
+		return org.yakindu.sct.model.stext.ui.internal.STextActivator.getInstance().getInjector("org.yakindu.sct.model.stext.SText");
+	}
+	
+}

+ 250 - 126
test-plugins/org.yakindu.sct.model.stext.test/src/org/yakindu/sct/model/stext/test/STextJavaValidatorTest.java

@@ -14,7 +14,7 @@ package org.yakindu.sct.model.stext.test;
 import static org.eclipse.xtext.junit4.validation.AssertableDiagnostics.errorCode;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertTrue;
 import static org.yakindu.sct.test.models.AbstractTestModelsUtil.VALIDATION_TESTMODEL_DIR;
 
 import java.lang.reflect.Method;
@@ -81,9 +81,24 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Inject
 	private Injector injector;
 	private ValidatorTester<STextJavaValidator> tester;
+	protected BasicDiagnostic diagnostics;
+	protected SGraphFactory factory;
+	protected Statechart statechart;
+	protected StextResource resource;
+
+	public STextJavaValidatorTest() {
+	}
 
 	@Before
 	public void setup() {
+		factory = SGraphFactory.eINSTANCE;
+
+		resource = new StextResource(URI.createURI(""));
+		injector.injectMembers(resource);
+		statechart = factory.createStatechart();
+		resource.getContents().add(statechart);
+
+		diagnostics = new BasicDiagnostic();
 		tester = new ValidatorTester<STextJavaValidator>(validator, injector);
 	}
 
@@ -97,10 +112,11 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void checkVariableDefinition() {
-		Scope context = (Scope) parseExpression("interface if : var i : void", null,
-				InterfaceScope.class.getSimpleName());
+		Scope context = (Scope) parseExpression("interface if : var i : void",
+				null, InterfaceScope.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(context);
-		validationResult.assertErrorContains(STextJavaValidator.VARIABLE_VOID_TYPE);
+		validationResult
+				.assertErrorContains(STextJavaValidator.VARIABLE_VOID_TYPE);
 	}
 
 	/**
@@ -109,23 +125,29 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkAssignmentExpression() {
 
-		Scope context = (Scope) parseExpression("interface: var i : integer = 42 var j : integer =23", null,
+		Scope context = (Scope) parseExpression(
+				"interface: var i : integer = 42 var j : integer =23", null,
 				InterfaceScope.class.getSimpleName());
 
-		EObject expression = super.parseExpression("i += (i+=3) +4", context, Expression.class.getSimpleName());
+		EObject expression = super.parseExpression("i += (i+=3) +4", context,
+				Expression.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(expression);
-		validationResult.assertErrorContains(STextJavaValidator.ASSIGNMENT_EXPRESSION);
+		validationResult
+				.assertErrorContains(STextJavaValidator.ASSIGNMENT_EXPRESSION);
 
-		expression = super.parseExpression("i += (j+=3) +4", context, Expression.class.getSimpleName());
+		expression = super.parseExpression("i += (j+=3) +4", context,
+				Expression.class.getSimpleName());
 		validationResult = tester.validate(expression);
 		validationResult.assertOK();
 	}
 
 	@Test
 	public void checkTimeEventSpecValueExpression() {
-		EObject expression = super.parseExpression("after true s", ReactionTrigger.class.getSimpleName());
+		EObject expression = super.parseExpression("after true s",
+				ReactionTrigger.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(expression);
-		validationResult.assertErrorContains(STextJavaValidator.TIME_EXPRESSION);
+		validationResult
+				.assertErrorContains(STextJavaValidator.TIME_EXPRESSION);
 	}
 
 	@Test
@@ -137,40 +159,52 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	public void checkLeftHandAssignment() {
 
 		Scope scope = (Scope) parseExpression(
-				"interface if : operation myOperation() : boolean event Event1 : boolean var myVar : boolean", null,
-				InterfaceScope.class.getSimpleName());
+				"interface if : operation myOperation() : boolean event Event1 : boolean var myVar : boolean",
+				null, InterfaceScope.class.getSimpleName());
 
-		EObject model = super.parseExpression("3 = 3", Expression.class.getSimpleName(), scope);
+		EObject model = super.parseExpression("3 = 3",
+				Expression.class.getSimpleName(), scope);
 		AssertableDiagnostics validationResult = tester.validate(model);
-		validationResult.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
+		validationResult
+				.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
 
 		// Check for referenced elements in interface
-		model = super.parseExpression("if.myOperation() = true", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("if.myOperation() = true",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
-		validationResult.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
+		validationResult
+				.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
 
-		model = super.parseExpression("if.Event1 = true", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("if.Event1 = true",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
-		validationResult.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
+		validationResult
+				.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
 
-		model = super.parseExpression("if.myVar = true", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("if.myVar = true",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
 
 		// check for internal referenced elements
 		scope = (Scope) parseExpression(
-				"internal : operation myOperation() : integer event Event1 : integer var myVar : integer", null,
-				InternalScope.class.getSimpleName());
+				"internal : operation myOperation() : integer event Event1 : integer var myVar : integer",
+				null, InternalScope.class.getSimpleName());
 
-		model = super.parseExpression("myOperation() = 5", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("myOperation() = 5",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
-		validationResult.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
+		validationResult
+				.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
 
-		model = super.parseExpression("Event1 = 3", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("Event1 = 3",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
-		validationResult.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
+		validationResult
+				.assertErrorContains(STextJavaValidator.LEFT_HAND_ASSIGNMENT);
 
-		model = super.parseExpression("myVar = 5", Expression.class.getSimpleName(), scope);
+		model = super.parseExpression("myVar = 5",
+				Expression.class.getSimpleName(), scope);
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
 
@@ -182,9 +216,10 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkOperationArguments_FeatureCall() {
 		Scope scope = (Scope) parseExpression(
-				"interface if : operation myOperation(param1 : integer, param2: boolean)", null,
-				InterfaceScope.class.getSimpleName());
-		EObject model = super.parseExpression("if.myOperation(5,true)", Expression.class.getSimpleName(), scope);
+				"interface if : operation myOperation(param1 : integer, param2: boolean)",
+				null, InterfaceScope.class.getSimpleName());
+		EObject model = super.parseExpression("if.myOperation(5,true)",
+				Expression.class.getSimpleName(), scope);
 		AssertableDiagnostics validationResult = tester.validate(model);
 		validationResult.assertOK();
 	}
@@ -195,7 +230,8 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkOperationArguments_TypedElementReferenceExpression() {
 		Scope context = createInternalScope("internal: operation myOperation(param1 : integer, param2: boolean)");
-		EObject model = super.parseExpression("myOperation(5,true)", context, Expression.class.getSimpleName());
+		EObject model = super.parseExpression("myOperation(5,true)", context,
+				Expression.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(model);
 		validationResult.assertOK();
 	}
@@ -205,16 +241,21 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void checkGuard() {
-		EObject expression = super.parseExpression("[3 * 3]", ReactionTrigger.class.getSimpleName());
+		EObject expression = super.parseExpression("[3 * 3]",
+				ReactionTrigger.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(expression);
-		validationResult.assertErrorContains(STextJavaValidator.GUARD_EXPRESSION);
+		validationResult
+				.assertErrorContains(STextJavaValidator.GUARD_EXPRESSION);
 
 		Scope context = createInternalScope("internal: var myInt : integer var myBool : boolean = true)");
-		expression = super.parseExpression("[myInt = 5]", context, ReactionTrigger.class.getSimpleName());
+		expression = super.parseExpression("[myInt = 5]", context,
+				ReactionTrigger.class.getSimpleName());
 		validationResult = tester.validate(expression);
-		validationResult.assertErrorContains(STextJavaValidator.GUARD_EXPRESSION);
+		validationResult
+				.assertErrorContains(STextJavaValidator.GUARD_EXPRESSION);
 
-		expression = super.parseExpression("[myInt <= 5 || !myBool ]", context, ReactionTrigger.class.getSimpleName());
+		expression = super.parseExpression("[myInt <= 5 || !myBool ]", context,
+				ReactionTrigger.class.getSimpleName());
 		validationResult = tester.validate(expression);
 		validationResult.assertOK();
 
@@ -226,18 +267,21 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void checkFeatureCall() {
-		Scope context = (Scope) parseExpression("interface if : in event a : integer", null,
+		Scope context = (Scope) parseExpression(
+				"interface if : in event a : integer", null,
 				InterfaceScope.class.getSimpleName());
 		EObject model = super.parseExpression("if.a / raise if.a:1", context,
 				TransitionSpecification.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(model);
 		validationResult.assertOK();
 
-		model = super.parseExpression("if / raise if.a:1", context, TransitionSpecification.class.getSimpleName());
+		model = super.parseExpression("if / raise if.a:1", context,
+				TransitionSpecification.class.getSimpleName());
 		validationResult = tester.validate(model);
 		validationResult.assertError(FEATURE_CALL_TO_SCOPE);
 
-		model = super.parseExpression("if.a / raise if", context, TransitionSpecification.class.getSimpleName());
+		model = super.parseExpression("if.a / raise if", context,
+				TransitionSpecification.class.getSimpleName());
 		validationResult = tester.validate(model);
 		validationResult.assertError(FEATURE_CALL_TO_SCOPE);
 	}
@@ -249,22 +293,26 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkReactionTrigger() {
 		// ENTRY, EXIT not allowed in transitions
-		Scope context = (Scope) parseExpression("internal : event a : integer var myVar : integer", null,
+		Scope context = (Scope) parseExpression(
+				"internal : event a : integer var myVar : integer", null,
 				InternalScope.class.getSimpleName());
 		EObject model = super.parseExpression("entry / myVar = 5", context,
 				TransitionSpecification.class.getSimpleName());
 		AssertableDiagnostics validationResult = tester.validate(model);
 		validationResult.assertError(LOCAL_REACTIONS_NOT_ALLOWED);
 
-		model = super.parseExpression("exit / myVar = 5", context, TransitionSpecification.class.getSimpleName());
+		model = super.parseExpression("exit / myVar = 5", context,
+				TransitionSpecification.class.getSimpleName());
 		validationResult = tester.validate(model);
 		validationResult.assertError(LOCAL_REACTIONS_NOT_ALLOWED);
 
-		model = super.parseExpression("oncycle / myVar = 5", context, TransitionSpecification.class.getSimpleName());
+		model = super.parseExpression("oncycle / myVar = 5", context,
+				TransitionSpecification.class.getSimpleName());
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
 
-		model = super.parseExpression("always / myVar = 5", context, TransitionSpecification.class.getSimpleName());
+		model = super.parseExpression("always / myVar = 5", context,
+				TransitionSpecification.class.getSimpleName());
 		validationResult = tester.validate(model);
 		validationResult.assertOK();
 	}
@@ -274,36 +322,45 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void checkReactionEffectActions() {
-		Scope s1 = (InternalScope) parseExpression("internal : var a : integer event e operation o () : void", null,
-				InternalScope.class.getSimpleName());
-		Scope s2 = (InterfaceScope) parseExpression("interface if : var a : integer in event e operation o()", null,
-				InterfaceScope.class.getSimpleName());
-
-		EObject model = super.parseExpression("a", s1, ReactionEffect.class.getSimpleName());
+		Scope s1 = (InternalScope) parseExpression(
+				"internal : var a : integer event e operation o () : void",
+				null, InternalScope.class.getSimpleName());
+		Scope s2 = (InterfaceScope) parseExpression(
+				"interface if : var a : integer in event e operation o()",
+				null, InterfaceScope.class.getSimpleName());
+
+		EObject model = super.parseExpression("a", s1,
+				ReactionEffect.class.getSimpleName());
 		AssertableDiagnostics result = tester.validate(model);
 		result.assertError(FEATURE_CALL_HAS_NO_EFFECT);
 
-		model = super.parseExpression("1+3", s1, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("1+3", s1,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertError(FEATURE_CALL_HAS_NO_EFFECT);
 
-		model = super.parseExpression("valueof(e)", s1, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("valueof(e)", s1,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertError(FEATURE_CALL_HAS_NO_EFFECT);
 
-		model = super.parseExpression("o()", s1, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("o()", s1,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertOK();
 
-		model = super.parseExpression("if.a", s2, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("if.a", s2,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertError(FEATURE_CALL_HAS_NO_EFFECT);
 
-		model = super.parseExpression("valueof(if.e)", s2, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("valueof(if.e)", s2,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertError(FEATURE_CALL_HAS_NO_EFFECT);
 
-		model = super.parseExpression("if.o", s2, ReactionEffect.class.getSimpleName());
+		model = super.parseExpression("if.o", s2,
+				ReactionEffect.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertOK();
 
@@ -315,17 +372,20 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkEventDefinition() {
 		// No local declarations in interface scope
-		EObject model = super.parseExpression("interface MyInterface: event Event1", null,
+		EObject model = super.parseExpression(
+				"interface MyInterface: event Event1", null,
 				InterfaceScope.class.getSimpleName());
 		AssertableDiagnostics result = tester.validate(model);
 		result.assertErrorContains(LOCAL_DECLARATIONS);
 		// No in declarations in internal scope
-		model = super.parseExpression("internal: in event Event1", null, InternalScope.class.getSimpleName());
+		model = super.parseExpression("internal: in event Event1", null,
+				InternalScope.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertDiagnosticsCount(1);
 		result.assertErrorContains(STextJavaValidator.IN_OUT_DECLARATIONS);
 		// No out declarations in internal scope
-		model = super.parseExpression("internal: out event Event1", null, InternalScope.class.getSimpleName());
+		model = super.parseExpression("internal: out event Event1", null,
+				InternalScope.class.getSimpleName());
 		result = tester.validate(model);
 		result.assertDiagnosticsCount(1);
 		result.assertErrorContains(IN_OUT_DECLARATIONS);
@@ -336,11 +396,13 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void checkInterfaceScope() {
-		EObject model = super.parseExpression("interface: in event event1 interface: in event event2", null,
+		EObject model = super.parseExpression(
+				"interface: in event event1 interface: in event event2", null,
 				StatechartSpecification.class.getSimpleName());
 		AssertableDiagnostics result = tester.validate(model);
 		result.assertDiagnosticsCount(2);
-		result.assertAll(errorCode(ONLY_ONE_INTERFACE), errorCode(ONLY_ONE_INTERFACE));
+		result.assertAll(errorCode(ONLY_ONE_INTERFACE),
+				errorCode(ONLY_ONE_INTERFACE));
 	}
 
 	/**
@@ -373,7 +435,8 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	 */
 	@Test
 	public void testAllChecksHaveTests() throws Exception {
-		Iterable<Method> methods = Lists.newArrayList(STextJavaValidator.class.getDeclaredMethods());
+		Iterable<Method> methods = Lists.newArrayList(STextJavaValidator.class
+				.getDeclaredMethods());
 		methods = Iterables.filter(methods, new Predicate<Method>() {
 			public boolean apply(Method input) {
 				return input.getAnnotation(Check.class) != null;
@@ -381,21 +444,24 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		});
 		for (Method checkMethod : methods) {
 			Method testMethod = getClass().getMethod(checkMethod.getName());
-			assertNotNull("Missing @Test Annotation for method " + checkMethod.getName(),
+			assertNotNull(
+					"Missing @Test Annotation for method "
+							+ checkMethod.getName(),
 					testMethod.getAnnotation(Test.class));
 		}
 	}
 
 	@Test
 	public void checkUnusedEntry() {
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
-		Statechart statechart = AbstractTestModelsUtil
-				.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnusedEntryPoint.sct");
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "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>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
@@ -405,26 +471,31 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 
 	@Test
 	public void checkUnusedExit() {
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
-		Statechart statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnusedExitPoint.sct");
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "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>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
 		assertIssueCount(diagnostics, 1);
 		assertError(diagnostics, EXIT_UNUSED);
 
-		diagnostics = new BasicDiagnostic();
-		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnusedDefaultExitPoint.sct");
+		resetDiagnostics();
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "UnusedDefaultExitPoint.sct");
 		iter = statechart.eAllContents();
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Exit) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
@@ -435,29 +506,32 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void checkTransitionPropertySpec() {
 		// Test source state isn't composite
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
-		Statechart statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR
-				+ "TransitionEntrySpecNotComposite.sct");
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "TransitionEntrySpecNotComposite.sct");
 		Iterator<EObject> iter = statechart.eAllContents();
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				assertTrue(validator.validate(element, diagnostics, new HashMap<Object, Object>()));
+				assertTrue(validator.validate(element, diagnostics,
+						new HashMap<Object, Object>()));
 			}
 		}
 		// Test target state isn't composite
 		assertIssueCount(diagnostics, 2);
 		assertWarning(diagnostics, TRANSITION_ENTRY_SPEC_NOT_COMPOSITE);
 
-		diagnostics = new BasicDiagnostic();
-		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR
-				+ "TransitionExitSpecNotComposite.sct");
+		resetDiagnostics();
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "TransitionExitSpecNotComposite.sct");
 		iter = statechart.eAllContents();
 
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				assertTrue(validator.validate(element, diagnostics, new HashMap<Object, Object>()));
+				assertTrue(validator.validate(element, diagnostics,
+						new HashMap<Object, Object>()));
 			}
 		}
 
@@ -465,14 +539,16 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		assertWarning(diagnostics, TRANSITION_EXIT_SPEC_NOT_COMPOSITE);
 
 		// Test exit spec is used on multiple transition siblings.
-		diagnostics = new BasicDiagnostic();
-		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR
-				+ "TransitionExitSpecOnMultipleSiblings.sct");
+		resetDiagnostics();
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "TransitionExitSpecOnMultipleSiblings.sct");
 		iter = statechart.eAllContents();
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				assertTrue(validator.validate(element, diagnostics, new HashMap<Object, Object>()));
+				assertTrue(validator.validate(element, diagnostics,
+						new HashMap<Object, Object>()));
 			}
 		}
 
@@ -480,14 +556,16 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		assertWarning(diagnostics, TRANSITION_EXIT_SPEC_ON_MULTIPLE_SIBLINGS);
 
 		// Test transition unbound named exit point spec.
-		diagnostics = new BasicDiagnostic();
-		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR
-				+ "TransitionNotExistingNamedExitPoint.sct");
+		resetDiagnostics();
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "TransitionNotExistingNamedExitPoint.sct");
 		iter = statechart.eAllContents();
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
@@ -497,9 +575,9 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 
 	@Test
 	public void checkUnboundEntryPoints() {
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
-		Statechart statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR
-				+ "UnboundDefaultEntryPoints.sct");
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "UnboundDefaultEntryPoints.sct");
 		Iterator<EObject> iter = statechart.eAllContents();
 
 		// create and add triggers to all transitions to prevent to trigger
@@ -511,10 +589,12 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 			EObject element = iter.next();
 			if (element instanceof Transition) {
 				((Transition) element).setTrigger(trigger);
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 			if (element instanceof State) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
@@ -522,33 +602,38 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		assertError(diagnostics, TRANSITION_UNBOUND_DEFAULT_ENTRY_POINT);
 		assertError(diagnostics, REGION_UNBOUND_DEFAULT_ENTRY_POINT);
 
-		diagnostics = new BasicDiagnostic();
-		statechart = AbstractTestModelsUtil.loadStatechart(VALIDATION_TESTMODEL_DIR + "UnboundEntryPoints02.sct");
+		resetDiagnostics();
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "UnboundEntryPoints02.sct");
 		iter = statechart.eAllContents();
 
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
 				((Transition) element).setTrigger(trigger);
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 			if (element instanceof State) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 		assertIssueCount(diagnostics, 4);
 	}
-	
+
 	@Test
 	public void checkExitPointSpecWithTrigger() {
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
-		Statechart statechart = AbstractTestModelsUtil
-				.loadStatechart(VALIDATION_TESTMODEL_DIR + "NoTriggerOnTransitionWithExitPointSpec.sct");
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "NoTriggerOnTransitionWithExitPointSpec.sct");
 		Iterator<EObject> iter = statechart.eAllContents();
 		while (iter.hasNext()) {
 			EObject element = iter.next();
 			if (element instanceof Transition) {
-				validator.validate(element, diagnostics, new HashMap<Object, Object>());
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
 			}
 		}
 
@@ -580,11 +665,6 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 	@Test
 	public void transitionsWithNoTrigger() {
 
-		StextResource resource = new StextResource(URI.createURI(""));
-		injector.injectMembers(resource);
-		SGraphFactory factory = SGraphFactory.eINSTANCE;
-		Statechart statechart = factory.createStatechart();
-		resource.getContents().add(statechart);
 		Region region = factory.createRegion();
 
 		// create vertices for main region
@@ -627,50 +707,85 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		region.getVertices().add(d);
 		statechart.getRegions().add(region);
 
-		BasicDiagnostic diagnostics = new BasicDiagnostic();
 		// transitions from entry point to State A -> valid model with no
 		// warnings
-		assertTrue(validator.validate(eToF, diagnostics, new HashMap<Object, Object>()));
+		assertTrue(validator.validate(eToF, diagnostics,
+				new HashMap<Object, Object>()));
 		assertIssueCount(diagnostics, 0);
 
 		// transitions from entry point to State A -> valid model with no
 		// warnings
-		assertTrue(validator.validate(entryToA, diagnostics, new HashMap<Object, Object>()));
+		assertTrue(validator.validate(entryToA, diagnostics,
+				new HashMap<Object, Object>()));
 		assertIssueCount(diagnostics, 0);
 
 		// transition from StateA to StateB -> valid model with warnings expect
 		// 1 warning in total
-		assertTrue(validator.validate(aToB, diagnostics, new HashMap<Object, Object>()));
+		assertTrue(validator.validate(aToB, diagnostics,
+				new HashMap<Object, Object>()));
 		assertIssueCount(diagnostics, 1);
+		resetDiagnostics();
 
 		// transition from EntryB to StateBB -> valid model with no warnings
 		// expect 1 warning in total
-		assertTrue(validator.validate(entryBToBB, diagnostics, new HashMap<Object, Object>()));
-		assertIssueCount(diagnostics, 1);
+		assertTrue(validator.validate(entryBToBB, diagnostics,
+				new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 0);
 
 		// transition from BB to ExitB -> valid model with warnings expect 2
 		// warning in total
-		assertTrue(validator.validate(bbToExitB, diagnostics, new HashMap<Object, Object>()));
-		assertIssueCount(diagnostics, 2);
+		assertTrue(validator.validate(bbToExitB, diagnostics,
+				new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 1);
+		resetDiagnostics();
 
 		// transition from B to C -> valid model with no warning warnings expect
 		// 2 warning in total
-		assertTrue(validator.validate(bToC, diagnostics, new HashMap<Object, Object>()));
-		assertIssueCount(diagnostics, 2);
+		assertTrue(validator.validate(bToC, diagnostics,
+				new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 0);
 
 		// transition from C to D -> valid model with warning warning expect 3
 		// warning in total
-		assertTrue(validator.validate(cToD, diagnostics, new HashMap<Object, Object>()));
-		assertIssueCount(diagnostics, 3);
+		assertTrue(validator.validate(cToD, diagnostics,
+				new HashMap<Object, Object>()));
+		assertIssueCount(diagnostics, 1);
+		resetDiagnostics();
 
 	}
-	
+
+	/**
+	 * The outgoing transitions of a sync (fork / join) node must not have any
+	 * trigger part. Thus empty transitions must not have any warning. This test
+	 * case addresses a bug #75 (
+	 * https://code.google.com/a/eclipselabs.org/p/yakindu/issues/detail?id=75 )
+	 * .
+	 */
+	@Test
+	public void validEmptyTransitionFromSync() {
+		statechart = AbstractTestModelsUtil
+				.loadStatechart(VALIDATION_TESTMODEL_DIR
+						+ "ValidEmptyTransitionFromSync.sct");
+		Iterator<EObject> iter = statechart.eAllContents();
+		while (iter.hasNext()) {
+			EObject element = iter.next();
+			if (element instanceof Transition) {
+				validator.validate(element, diagnostics,
+						new HashMap<Object, Object>());
+			}
+		}
+
+		assertIssueCount(diagnostics, 0);
+	}
+
 	@Test
 	public void checkImportExists() {
-		ImportScope importScope = (ImportScope) parseExpression("import: not.existing.*", null,
+		ImportScope importScope = (ImportScope) parseExpression(
+				"import: not.existing.*", null,
 				ImportScope.class.getSimpleName());
 
-		AssertableDiagnostics validationResult = tester.validate(importScope.getImports().get(0));
+		AssertableDiagnostics validationResult = tester.validate(importScope
+				.getImports().get(0));
 		validationResult.assertError(STextJavaValidator.IMPORT_NOT_RESOLVED);
 	}
 
@@ -685,19 +800,24 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 
 	protected void assertError(Diagnostic diag, String message) {
 		Diagnostic d = issueByName(diag, message);
-		assertNotNull("Issue '" + message + "' does not exist.", issueByName(diag, message));
-		assertEquals("Issue '" + message + "' is no error.", Diagnostic.ERROR, d.getSeverity());
+		assertNotNull("Issue '" + message + "' does not exist.",
+				issueByName(diag, message));
+		assertEquals("Issue '" + message + "' is no error.", Diagnostic.ERROR,
+				d.getSeverity());
 	}
 
 	protected void assertWarning(Diagnostic diag, String message) {
 		Diagnostic d = issueByName(diag, message);
-		assertNotNull("Issue '" + message + "' does not exist.", issueByName(diag, message));
-		assertEquals("Issue '" + message + "' is no warning.", Diagnostic.WARNING, d.getSeverity());
+		assertNotNull("Issue '" + message + "' does not exist.",
+				issueByName(diag, message));
+		assertEquals("Issue '" + message + "' is no warning.",
+				Diagnostic.WARNING, d.getSeverity());
 	}
 
 	protected void assertIssueCount(Diagnostic diag, int count) {
 		int c = diag.getChildren().size();
-		assertEquals("expected " + count + " issue(s) but were " + c + " [" + diag.toString() + "]", count, c);
+		assertEquals("expected " + count + " issue(s) but were " + c + " ["
+				+ diag.toString() + "]", count, c);
 	}
 
 	protected Diagnostic issueByName(Diagnostic diag, String message) {
@@ -707,4 +827,8 @@ public class STextJavaValidatorTest extends AbstractSTextTest implements STextVa
 		}
 		return null;
 	}
+
+	protected void resetDiagnostics() {
+		diagnostics = new BasicDiagnostic();
+	}
 }

+ 1 - 0
test-plugins/org.yakindu.sct.test.models/.settings/org.eclipse.core.resources.prefs

@@ -29,6 +29,7 @@ encoding//testmodels/SCTUnit/VariableInitialization.sct=UTF-8
 encoding//testmodels/validation/EntryTransitionToParentState.sct=UTF-8
 encoding//testmodels/validation/NoTriggerOnTransitionWithExitPointSpec.sct=UTF-8
 encoding//testmodels/validation/RegionCantBeEnteredUsingShallowHistory.sct=UTF-8
+encoding//testmodels/validation/ValidEmptyTransitionFromSync.sct=UTF-8
 encoding//testmodels/validation/ValidTransitionToInnerChoice.sct=UTF-8
 encoding//tests/EntryExitSelfTransition.sctunit=UTF-8
 encoding/<project>=UTF-8

+ 324 - 0
test-plugins/org.yakindu.sct.test.models/testmodels/validation/ValidEmptyTransitionFromSync.sct

@@ -0,0 +1,324 @@
+<?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="_x2hFAG_pEeS1xYwspMh3zQ" specification="interface:&#xA;&#xA;&#x9;in event e" name="ValidEmptyTransitionFromSync">
+    <regions xmi:id="_x2iTIm_pEeS1xYwspMh3zQ" name="main region">
+      <vertices xsi:type="sgraph:Entry" xmi:id="_x2nysW_pEeS1xYwspMh3zQ">
+        <outgoingTransitions xmi:id="_x2pn4W_pEeS1xYwspMh3zQ" target="_x2oZxm_pEeS1xYwspMh3zQ"/>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_x2oZxm_pEeS1xYwspMh3zQ" name="A" incomingTransitions="_x2pn4W_pEeS1xYwspMh3zQ _jIEosG_rEeS1xYwspMh3zQ">
+        <regions xmi:id="_3-ODEG_pEeS1xYwspMh3zQ" name="r1">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_8O-GkG_pEeS1xYwspMh3zQ">
+            <outgoingTransitions xmi:id="_BqzdIG_qEeS1xYwspMh3zQ" specification="" target="__CaekG_pEeS1xYwspMh3zQ"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="__CaekG_pEeS1xYwspMh3zQ" name="AA" incomingTransitions="_BqzdIG_qEeS1xYwspMh3zQ">
+            <outgoingTransitions xmi:id="_UHsPMG_qEeS1xYwspMh3zQ" specification="e" target="_E0H-gG_qEeS1xYwspMh3zQ"/>
+          </vertices>
+        </regions>
+        <regions xmi:id="_4vB08G_pEeS1xYwspMh3zQ" name="r2">
+          <vertices xsi:type="sgraph:Entry" xmi:id="_9J3BgG_pEeS1xYwspMh3zQ">
+            <outgoingTransitions xmi:id="_CPRcIG_qEeS1xYwspMh3zQ" specification="" target="_9n_vAG_pEeS1xYwspMh3zQ"/>
+          </vertices>
+          <vertices xsi:type="sgraph:State" xmi:id="_9n_vAG_pEeS1xYwspMh3zQ" name="AB" incomingTransitions="_CPRcIG_qEeS1xYwspMh3zQ">
+            <outgoingTransitions xmi:id="_UnqIsG_qEeS1xYwspMh3zQ" specification="always" target="_E0H-gG_qEeS1xYwspMh3zQ"/>
+          </vertices>
+        </regions>
+      </vertices>
+      <vertices xsi:type="sgraph:State" xmi:id="_z_I-YG_pEeS1xYwspMh3zQ" name="B">
+        <outgoingTransitions xmi:id="_jIEosG_rEeS1xYwspMh3zQ" specification="e" target="_x2oZxm_pEeS1xYwspMh3zQ"/>
+        <regions xmi:id="_dDXJsG_qEeS1xYwspMh3zQ" name="r1">
+          <vertices xsi:type="sgraph:State" xmi:id="_cN2okG_rEeS1xYwspMh3zQ" name="BA" incomingTransitions="_fpaJcG_rEeS1xYwspMh3zQ"/>
+        </regions>
+        <regions xmi:id="_ePaGEG_qEeS1xYwspMh3zQ" name="r2">
+          <vertices xsi:type="sgraph:State" xmi:id="_dNqfwG_rEeS1xYwspMh3zQ" name="BB" incomingTransitions="_gUMy4G_rEeS1xYwspMh3zQ"/>
+        </regions>
+      </vertices>
+      <vertices xsi:type="sgraph:Synchronization" xmi:id="_E0H-gG_qEeS1xYwspMh3zQ" incomingTransitions="_UHsPMG_qEeS1xYwspMh3zQ _UnqIsG_qEeS1xYwspMh3zQ">
+        <outgoingTransitions xmi:id="_fpaJcG_rEeS1xYwspMh3zQ" specification="" target="_cN2okG_rEeS1xYwspMh3zQ"/>
+        <outgoingTransitions xmi:id="_gUMy4G_rEeS1xYwspMh3zQ" specification="" target="_dNqfwG_rEeS1xYwspMh3zQ"/>
+      </vertices>
+    </regions>
+  </sgraph:Statechart>
+  <notation:Diagram xmi:id="_x2iTIG_pEeS1xYwspMh3zQ" type="org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor" element="_x2hFAG_pEeS1xYwspMh3zQ" measurementUnit="Pixel">
+    <children xmi:id="_x2lWcG_pEeS1xYwspMh3zQ" type="Region" element="_x2iTIm_pEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_x2nLoG_pEeS1xYwspMh3zQ" type="RegionName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_x2nLoW_pEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_x2nLom_pEeS1xYwspMh3zQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_x2nLo2_pEeS1xYwspMh3zQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+        <children xmi:id="_x2nysm_pEeS1xYwspMh3zQ" type="Entry" element="_x2nysW_pEeS1xYwspMh3zQ">
+          <children xmi:id="_x2nytW_pEeS1xYwspMh3zQ" type="BorderItemLabelContainer">
+            <children xsi:type="notation:DecorationNode" xmi:id="_x2oZwm_pEeS1xYwspMh3zQ" type="BorderItemLabel">
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_x2oZw2_pEeS1xYwspMh3zQ"/>
+              <layoutConstraint xsi:type="notation:Location" xmi:id="_x2oZxG_pEeS1xYwspMh3zQ"/>
+            </children>
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_x2oZwG_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+            <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2oZwW_pEeS1xYwspMh3zQ"/>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_x2nys2_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2oZxW_pEeS1xYwspMh3zQ" x="70" y="20" width="15" height="15"/>
+        </children>
+        <children xmi:id="_x2oZyW_pEeS1xYwspMh3zQ" type="State" element="_x2oZxm_pEeS1xYwspMh3zQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_x2pA0G_pEeS1xYwspMh3zQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_x2pA0W_pEeS1xYwspMh3zQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_x2pA0m_pEeS1xYwspMh3zQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_x2pA02_pEeS1xYwspMh3zQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_x2pA1G_pEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2pA1W_pEeS1xYwspMh3zQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_x2pA1m_pEeS1xYwspMh3zQ" type="StateFigureCompartment">
+            <children xmi:id="_5pD0QG_pEeS1xYwspMh3zQ" type="Region" element="_3-ODEG_pEeS1xYwspMh3zQ">
+              <children xsi:type="notation:DecorationNode" xmi:id="_5pD0QW_pEeS1xYwspMh3zQ" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_5pD0Qm_pEeS1xYwspMh3zQ"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_5pD0Q2_pEeS1xYwspMh3zQ"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_5pD0RG_pEeS1xYwspMh3zQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_8O_UsG_pEeS1xYwspMh3zQ" type="Entry" element="_8O-GkG_pEeS1xYwspMh3zQ">
+                  <children xmi:id="_8O_Us2_pEeS1xYwspMh3zQ" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_8O_Utm_pEeS1xYwspMh3zQ" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_8O_Ut2_pEeS1xYwspMh3zQ"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_8O_7wG_pEeS1xYwspMh3zQ"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_8O_UtG_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_8O_UtW_pEeS1xYwspMh3zQ"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_8O_UsW_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_8O_Usm_pEeS1xYwspMh3zQ" x="19" y="19"/>
+                </children>
+                <children xmi:id="__CbFoG_pEeS1xYwspMh3zQ" type="State" element="__CaekG_pEeS1xYwspMh3zQ">
+                  <children xsi:type="notation:DecorationNode" xmi:id="__CbFpG_pEeS1xYwspMh3zQ" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="__CbFpW_pEeS1xYwspMh3zQ"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="__CbFpm_pEeS1xYwspMh3zQ"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="__CbFp2_pEeS1xYwspMh3zQ" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="__CbssG_pEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="__CbssW_pEeS1xYwspMh3zQ"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="__Cbssm_pEeS1xYwspMh3zQ" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="__CbFoW_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="__CbFom_pEeS1xYwspMh3zQ"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="__Cbss2_pEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="__CbFo2_pEeS1xYwspMh3zQ" x="63" y="19"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_5pD0RW_pEeS1xYwspMh3zQ"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_5pD0Rm_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_5pD0R2_pEeS1xYwspMh3zQ"/>
+            </children>
+            <children xmi:id="_4vERMG_pEeS1xYwspMh3zQ" type="Region" element="_4vB08G_pEeS1xYwspMh3zQ">
+              <children xsi:type="notation:DecorationNode" xmi:id="_4vERM2_pEeS1xYwspMh3zQ" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_4vERNG_pEeS1xYwspMh3zQ"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_4vERNW_pEeS1xYwspMh3zQ"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_4vERNm_pEeS1xYwspMh3zQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_9J3okG_pEeS1xYwspMh3zQ" type="Entry" element="_9J3BgG_pEeS1xYwspMh3zQ">
+                  <children xmi:id="_9J3ok2_pEeS1xYwspMh3zQ" type="BorderItemLabelContainer">
+                    <children xsi:type="notation:DecorationNode" xmi:id="_9J4PoG_pEeS1xYwspMh3zQ" type="BorderItemLabel">
+                      <styles xsi:type="notation:ShapeStyle" xmi:id="_9J4PoW_pEeS1xYwspMh3zQ"/>
+                      <layoutConstraint xsi:type="notation:Location" xmi:id="_9J4Pom_pEeS1xYwspMh3zQ"/>
+                    </children>
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_9J3olG_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+                    <layoutConstraint xsi:type="notation:Bounds" xmi:id="_9J3olW_pEeS1xYwspMh3zQ"/>
+                  </children>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_9J3okW_pEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_9J3okm_pEeS1xYwspMh3zQ" x="15" y="26"/>
+                </children>
+                <children xmi:id="_9oA9IG_pEeS1xYwspMh3zQ" type="State" element="_9n_vAG_pEeS1xYwspMh3zQ">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_9oA9JG_pEeS1xYwspMh3zQ" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_9oA9JW_pEeS1xYwspMh3zQ"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_9oA9Jm_pEeS1xYwspMh3zQ"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_9oA9J2_pEeS1xYwspMh3zQ" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_9oA9KG_pEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_9oA9KW_pEeS1xYwspMh3zQ"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_9oA9Km_pEeS1xYwspMh3zQ" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_9oA9IW_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_9oA9Im_pEeS1xYwspMh3zQ"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_9oA9K2_pEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_9oA9I2_pEeS1xYwspMh3zQ" x="62" y="19"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4vERN2_pEeS1xYwspMh3zQ"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_4vERMW_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_4vERMm_pEeS1xYwspMh3zQ"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_x2oZym_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_x2oZy2_pEeS1xYwspMh3zQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_x2pA12_pEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2pn4G_pEeS1xYwspMh3zQ" x="65" y="77" width="351" height="205"/>
+        </children>
+        <children xmi:id="_z_Od8G_pEeS1xYwspMh3zQ" type="State" element="_z_I-YG_pEeS1xYwspMh3zQ">
+          <children xsi:type="notation:DecorationNode" xmi:id="_z_Od9G_pEeS1xYwspMh3zQ" type="StateName">
+            <styles xsi:type="notation:ShapeStyle" xmi:id="_z_Od9W_pEeS1xYwspMh3zQ"/>
+            <layoutConstraint xsi:type="notation:Location" xmi:id="_z_Od9m_pEeS1xYwspMh3zQ"/>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_z_Od92_pEeS1xYwspMh3zQ" type="StateTextCompartment">
+            <children xsi:type="notation:Shape" xmi:id="_z_Od-G_pEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_z_Od-W_pEeS1xYwspMh3zQ"/>
+            </children>
+          </children>
+          <children xsi:type="notation:Compartment" xmi:id="_z_PFAG_pEeS1xYwspMh3zQ" type="StateFigureCompartment">
+            <children xmi:id="_dDYX0G_qEeS1xYwspMh3zQ" type="Region" element="_dDXJsG_qEeS1xYwspMh3zQ">
+              <children xsi:type="notation:DecorationNode" xmi:id="_dDYX02_qEeS1xYwspMh3zQ" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_dDYX1G_qEeS1xYwspMh3zQ"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_dDYX1W_qEeS1xYwspMh3zQ"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_dDYX1m_qEeS1xYwspMh3zQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_cN3PoG_rEeS1xYwspMh3zQ" type="State" element="_cN2okG_rEeS1xYwspMh3zQ">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_cN3PpG_rEeS1xYwspMh3zQ" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_cN3PpW_rEeS1xYwspMh3zQ"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_cN32sG_rEeS1xYwspMh3zQ"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_cN32sW_rEeS1xYwspMh3zQ" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_cN32sm_rEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_cN32s2_rEeS1xYwspMh3zQ"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_cN32tG_rEeS1xYwspMh3zQ" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_cN3PoW_rEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_cN3Pom_rEeS1xYwspMh3zQ"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_cN32tW_rEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_cN3Po2_rEeS1xYwspMh3zQ" x="43" y="24"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_dDYX12_qEeS1xYwspMh3zQ"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_dDYX0W_qEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_dDYX0m_qEeS1xYwspMh3zQ"/>
+            </children>
+            <children xmi:id="_ePatIG_qEeS1xYwspMh3zQ" type="Region" element="_ePaGEG_qEeS1xYwspMh3zQ">
+              <children xsi:type="notation:DecorationNode" xmi:id="_ePbUMG_qEeS1xYwspMh3zQ" type="RegionName">
+                <styles xsi:type="notation:ShapeStyle" xmi:id="_ePbUMW_qEeS1xYwspMh3zQ"/>
+                <layoutConstraint xsi:type="notation:Location" xmi:id="_ePbUMm_qEeS1xYwspMh3zQ"/>
+              </children>
+              <children xsi:type="notation:Shape" xmi:id="_ePbUM2_qEeS1xYwspMh3zQ" type="RegionCompartment" fontName="Verdana" lineColor="4210752">
+                <children xmi:id="_dNrG0m_rEeS1xYwspMh3zQ" type="State" element="_dNqfwG_rEeS1xYwspMh3zQ">
+                  <children xsi:type="notation:DecorationNode" xmi:id="_dNrt42_rEeS1xYwspMh3zQ" type="StateName">
+                    <styles xsi:type="notation:ShapeStyle" xmi:id="_dNrt5G_rEeS1xYwspMh3zQ"/>
+                    <layoutConstraint xsi:type="notation:Location" xmi:id="_dNrt5W_rEeS1xYwspMh3zQ"/>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_dNrt5m_rEeS1xYwspMh3zQ" type="StateTextCompartment">
+                    <children xsi:type="notation:Shape" xmi:id="_dNrt52_rEeS1xYwspMh3zQ" type="StateTextCompartmentExpression" fontName="Verdana" lineColor="4210752">
+                      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_dNrt6G_rEeS1xYwspMh3zQ"/>
+                    </children>
+                  </children>
+                  <children xsi:type="notation:Compartment" xmi:id="_dNrt6W_rEeS1xYwspMh3zQ" type="StateFigureCompartment"/>
+                  <styles xsi:type="notation:ShapeStyle" xmi:id="_dNrt4G_rEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+                  <styles xsi:type="notation:FontStyle" xmi:id="_dNrt4W_rEeS1xYwspMh3zQ"/>
+                  <styles xsi:type="notation:BooleanValueStyle" xmi:id="_dNrt6m_rEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+                  <layoutConstraint xsi:type="notation:Bounds" xmi:id="_dNrt4m_rEeS1xYwspMh3zQ" x="48" y="22"/>
+                </children>
+                <layoutConstraint xsi:type="notation:Bounds" xmi:id="_ePbUNG_qEeS1xYwspMh3zQ"/>
+              </children>
+              <styles xsi:type="notation:ShapeStyle" xmi:id="_ePatIW_qEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+              <layoutConstraint xsi:type="notation:Bounds" xmi:id="_ePatIm_qEeS1xYwspMh3zQ"/>
+            </children>
+          </children>
+          <styles xsi:type="notation:ShapeStyle" xmi:id="_z_Od8W_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15981773" lineColor="12632256"/>
+          <styles xsi:type="notation:FontStyle" xmi:id="_z_Od8m_pEeS1xYwspMh3zQ"/>
+          <styles xsi:type="notation:BooleanValueStyle" xmi:id="_z_PFAW_pEeS1xYwspMh3zQ" name="isHorizontal" booleanValue="true"/>
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_z_Od82_pEeS1xYwspMh3zQ" x="71" y="405" width="345" height="160"/>
+        </children>
+        <children xsi:type="notation:Shape" xmi:id="_E0IlkG_qEeS1xYwspMh3zQ" type="Synchronization" element="_E0H-gG_qEeS1xYwspMh3zQ" fontName="Verdana" lineColor="4210752">
+          <layoutConstraint xsi:type="notation:Bounds" xmi:id="_E0IlkW_qEeS1xYwspMh3zQ" x="198" y="325" width="80" height="8"/>
+        </children>
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2nLpG_pEeS1xYwspMh3zQ"/>
+      </children>
+      <styles xsi:type="notation:ShapeStyle" xmi:id="_x2lWcW_pEeS1xYwspMh3zQ" fontName="Verdana" fillColor="15790320" lineColor="12632256"/>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2nysG_pEeS1xYwspMh3zQ" x="216" y="10" width="452" height="623"/>
+    </children>
+    <children xsi:type="notation:Shape" xmi:id="_x2q2AG_pEeS1xYwspMh3zQ" type="StatechartText" fontName="Verdana" lineColor="4210752">
+      <children xsi:type="notation:DecorationNode" xmi:id="_x2q2Am_pEeS1xYwspMh3zQ" type="StatechartName">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_x2q2A2_pEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_x2q2BG_pEeS1xYwspMh3zQ"/>
+      </children>
+      <children xsi:type="notation:Shape" xmi:id="_x2q2BW_pEeS1xYwspMh3zQ" type="StatechartTextExpression" fontName="Verdana" lineColor="4210752">
+        <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2q2Bm_pEeS1xYwspMh3zQ"/>
+      </children>
+      <layoutConstraint xsi:type="notation:Bounds" xmi:id="_x2q2B2_pEeS1xYwspMh3zQ" x="10" y="10" width="200" height="400"/>
+    </children>
+    <styles xsi:type="notation:DiagramStyle" xmi:id="_x2iTIW_pEeS1xYwspMh3zQ"/>
+    <edges xmi:id="_x2qO8G_pEeS1xYwspMh3zQ" type="Transition" element="_x2pn4W_pEeS1xYwspMh3zQ" source="_x2nysm_pEeS1xYwspMh3zQ" target="_x2oZyW_pEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_x2qO9G_pEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_x2qO9W_pEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_x2qO9m_pEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_x2qO8W_pEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_x2qO82_pEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_x2qO8m_pEeS1xYwspMh3zQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    </edges>
+    <edges xmi:id="_Bq0rQG_qEeS1xYwspMh3zQ" type="Transition" element="_BqzdIG_qEeS1xYwspMh3zQ" source="_8O_UsG_pEeS1xYwspMh3zQ" target="__CbFoG_pEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_Bq0rRG_qEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_Bq0rRW_qEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_Bq0rRm_qEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_Bq0rQW_qEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_Bq0rQ2_qEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_Bq0rQm_qEeS1xYwspMh3zQ" points="[7, 3, -76, -28]$[83, 55, 0, 24]"/>
+    </edges>
+    <edges xmi:id="_CPSqQG_qEeS1xYwspMh3zQ" type="Transition" element="_CPRcIG_qEeS1xYwspMh3zQ" source="_9J3okG_pEeS1xYwspMh3zQ" target="_9oA9IG_pEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_CPSqRG_qEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_CPSqRW_qEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_CPSqRm_qEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_CPSqQW_qEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_CPSqQ2_qEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_CPSqQm_qEeS1xYwspMh3zQ" points="[7, 2, -72, -29]$[51, 31, -28, 0]"/>
+    </edges>
+    <edges xmi:id="_UHtdUG_qEeS1xYwspMh3zQ" type="Transition" element="_UHsPMG_qEeS1xYwspMh3zQ" source="__CbFoG_pEeS1xYwspMh3zQ" target="_E0IlkG_qEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_UHtdVG_qEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_UHtdVW_qEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_UHtdVm_qEeS1xYwspMh3zQ" x="-30" y="16"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_UHtdUW_qEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_UHtdU2_qEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_UHtdUm_qEeS1xYwspMh3zQ" points="[12, 24, -75, -139]$[78, 159, -9, -4]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_e8y7EG_rEeS1xYwspMh3zQ" id="(0.2125,0.125)"/>
+    </edges>
+    <edges xmi:id="_UnqvwG_qEeS1xYwspMh3zQ" type="Transition" element="_UnqIsG_qEeS1xYwspMh3zQ" source="_9oA9IG_pEeS1xYwspMh3zQ" target="_E0IlkG_qEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_UnrW0G_qEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_UnrW0W_qEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_UnrW0m_qEeS1xYwspMh3zQ" x="-31" y="25"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_UnqvwW_qEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_Unqvw2_qEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_Unqvwm_qEeS1xYwspMh3zQ" points="[-8, 24, 48, -137]$[-40, 159, 16, -2]"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_Unsk8G_qEeS1xYwspMh3zQ" id="(0.8,0.25)"/>
+    </edges>
+    <edges xmi:id="_fpbXkG_rEeS1xYwspMh3zQ" type="Transition" element="_fpaJcG_rEeS1xYwspMh3zQ" source="_E0IlkG_qEeS1xYwspMh3zQ" target="_cN3PoG_rEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_fpbXlG_rEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_fpbXlW_rEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_fpbXlm_rEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_fpbXkW_rEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_fpbXk2_rEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_fpbXkm_rEeS1xYwspMh3zQ" points="[-2, 3, 71, -178]$[-66, 205, 7, 24]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_fpclsG_rEeS1xYwspMh3zQ" id="(0.225,0.625)"/>
+    </edges>
+    <edges xmi:id="_gUOBAG_rEeS1xYwspMh3zQ" type="Transition" element="_gUMy4G_rEeS1xYwspMh3zQ" source="_E0IlkG_qEeS1xYwspMh3zQ" target="_dNrG0m_rEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_gUOBBG_rEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_gUOBBW_rEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_gUOBBm_rEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_gUOBAW_rEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_gUOBA2_rEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_gUOBAm_rEeS1xYwspMh3zQ" points="[1, 4, -67, -176]$[68, 204, 0, 24]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_lY3moG_rEeS1xYwspMh3zQ" id="(0.8125,0.75)"/>
+    </edges>
+    <edges xmi:id="_jIF20G_rEeS1xYwspMh3zQ" type="Transition" element="_jIEosG_rEeS1xYwspMh3zQ" source="_z_Od8G_pEeS1xYwspMh3zQ" target="_x2oZyW_pEeS1xYwspMh3zQ">
+      <children xsi:type="notation:DecorationNode" xmi:id="_jIF21G_rEeS1xYwspMh3zQ" type="TransitionExpression">
+        <styles xsi:type="notation:ShapeStyle" xmi:id="_jIF21W_rEeS1xYwspMh3zQ"/>
+        <layoutConstraint xsi:type="notation:Location" xmi:id="_jIF21m_rEeS1xYwspMh3zQ" y="10"/>
+      </children>
+      <styles xsi:type="notation:ConnectorStyle" xmi:id="_jIF20W_rEeS1xYwspMh3zQ" lineColor="4210752"/>
+      <styles xsi:type="notation:FontStyle" xmi:id="_jIF202_rEeS1xYwspMh3zQ" fontName="Verdana"/>
+      <bendpoints xsi:type="notation:RelativeBendpoints" xmi:id="_jIF20m_rEeS1xYwspMh3zQ" points="[2, -20, -17, 326]$[20, -348, 1, -2]"/>
+      <sourceAnchor xsi:type="notation:IdentityAnchor" xmi:id="_jIHE8G_rEeS1xYwspMh3zQ" id="(0.08259587020648967,0.025)"/>
+      <targetAnchor xsi:type="notation:IdentityAnchor" xmi:id="_jIHE8W_rEeS1xYwspMh3zQ" id="(0.10541310541310542,0.014634146341463415)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>