Ver código fonte

Reactivated entry and exit specifications for transition expressions and added ReactionProperty type to sgraph.

terfloth@itemis.de 12 anos atrás
pai
commit
998d02f2a4
53 arquivos alterados com 13136 adições e 8691 exclusões
  1. BIN
      plugins/org.yakindu.sct.model.sgraph.edit/icons/full/ctool16/CreateReaction_properties_ReactionProperty.gif
  2. BIN
      plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/ReactionProperty.gif
  3. 2 0
      plugins/org.yakindu.sct.model.sgraph.edit/plugin.properties
  4. 8 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/ReactionItemProvider.java
  5. 134 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/ReactionPropertyItemProvider.java
  6. 24 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SGraphItemProviderAdapterFactory.java
  7. 8 0
      plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/TransitionItemProvider.java
  8. 105 102
      plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore
  9. 31 130
      plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecorediag
  10. 87 85
      plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel
  11. 18 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Reaction.java
  12. 33 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/ReactionProperty.java
  13. 9 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphFactory.java
  14. 131 55
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java
  15. 42 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionImpl.java
  16. 56 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionPropertyImpl.java
  17. 12 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java
  18. 53 21
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java
  19. 44 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/TransitionImpl.java
  20. 31 12
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java
  21. 43 21
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java
  22. 169 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/EntryPointSpecItemProvider.java
  23. 169 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/ExitPointSpecItemProvider.java
  24. 18 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/LocalReactionItemProvider.java
  25. 52 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/StextItemProviderAdapterFactory.java
  26. 10 0
      plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/TransitionReactionItemProvider.java
  27. 18 0
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java
  28. 7 0
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java
  29. 371 0
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g
  30. 13 11
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.tokens
  31. 294 262
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java
  32. 6766 5656
      plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java
  33. 6 0
      plugins/org.yakindu.sct.model.stext/model/SText.ecore
  34. 6 0
      plugins/org.yakindu.sct.model.stext/model/SText.genmodel
  35. 110 73
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi
  36. 443 62
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java
  37. 149 1
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.g
  38. 43 41
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.tokens
  39. 433 400
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java
  40. 2109 1645
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java
  41. 120 45
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java
  42. 51 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/EntryPointSpec.java
  43. 51 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ExitPointSpec.java
  44. 18 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextFactory.java
  45. 200 48
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java
  46. 178 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryPointSpecImpl.java
  47. 178 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitPointSpecImpl.java
  48. 49 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java
  49. 24 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java
  50. 70 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java
  51. 61 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java
  52. 65 0
      plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java
  53. 14 21
      plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext

BIN
plugins/org.yakindu.sct.model.sgraph.edit/icons/full/ctool16/CreateReaction_properties_ReactionProperty.gif


BIN
plugins/org.yakindu.sct.model.sgraph.edit/icons/full/obj16/ReactionProperty.gif


+ 2 - 0
plugins/org.yakindu.sct.model.sgraph.edit/plugin.properties

@@ -149,3 +149,5 @@ _UI_CompositeElement_regions_feature = Regions
 _UI_SpecificationElement_type = Specification Element
 _UI_SpecificationElement_expression_feature = Expression
 _UI_SpecificationElement_specification_feature = Specification
+_UI_ReactionProperty_type = Reaction Property
+_UI_Reaction_properties_feature = Properties

+ 8 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/ReactionItemProvider.java

@@ -27,6 +27,7 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemProviderAdapter;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.SGraphFactory;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 
 /**
@@ -89,6 +90,7 @@ public class ReactionItemProvider
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(SGraphPackage.Literals.REACTION__TRIGGER);
 			childrenFeatures.add(SGraphPackage.Literals.REACTION__EFFECT);
+			childrenFeatures.add(SGraphPackage.Literals.REACTION__PROPERTIES);
 		}
 		return childrenFeatures;
 	}
@@ -131,6 +133,7 @@ public class ReactionItemProvider
 		switch (notification.getFeatureID(Reaction.class)) {
 			case SGraphPackage.REACTION__TRIGGER:
 			case SGraphPackage.REACTION__EFFECT:
+			case SGraphPackage.REACTION__PROPERTIES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -147,6 +150,11 @@ public class ReactionItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.REACTION__PROPERTIES,
+				 SGraphFactory.eINSTANCE.createReactionProperty()));
 	}
 
 	/**

+ 134 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/ReactionPropertyItemProvider.java

@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.sgraph.ReactionProperty} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ReactionPropertyItemProvider
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ReactionPropertyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns ReactionProperty.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/ReactionProperty"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_ReactionProperty_type");
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return SGraphEditPlugin.INSTANCE;
+	}
+
+}

+ 24 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/SGraphItemProviderAdapterFactory.java

@@ -245,6 +245,29 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		return exitItemProvider;
 	}
 
+	/**
+	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.ReactionProperty} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReactionPropertyItemProvider reactionPropertyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.yakindu.sct.model.sgraph.ReactionProperty}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createReactionPropertyAdapter() {
+		if (reactionPropertyItemProvider == null) {
+			reactionPropertyItemProvider = new ReactionPropertyItemProvider(this);
+		}
+
+		return reactionPropertyItemProvider;
+	}
+
 	/**
 	 * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.sgraph.Scope} instances.
 	 * <!-- begin-user-doc -->
@@ -466,6 +489,7 @@ public class SGraphItemProviderAdapterFactory extends SGraphAdapterFactory imple
 		if (statechartItemProvider != null) statechartItemProvider.dispose();
 		if (entryItemProvider != null) entryItemProvider.dispose();
 		if (exitItemProvider != null) exitItemProvider.dispose();
+		if (reactionPropertyItemProvider != null) reactionPropertyItemProvider.dispose();
 		if (scopeItemProvider != null) scopeItemProvider.dispose();
 		if (synchronizationItemProvider != null) synchronizationItemProvider.dispose();
 		if (stateItemProvider != null) stateItemProvider.dispose();

+ 8 - 0
plugins/org.yakindu.sct.model.sgraph.edit/src/org/yakindu/sct/model/sgraph/provider/TransitionItemProvider.java

@@ -26,6 +26,7 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.base.BasePackage;
+import org.yakindu.sct.model.sgraph.SGraphFactory;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Transition;
 
@@ -152,6 +153,7 @@ public class TransitionItemProvider extends SpecificationElementItemProvider
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(SGraphPackage.Literals.REACTION__TRIGGER);
 			childrenFeatures.add(SGraphPackage.Literals.REACTION__EFFECT);
+			childrenFeatures.add(SGraphPackage.Literals.REACTION__PROPERTIES);
 		}
 		return childrenFeatures;
 	}
@@ -215,6 +217,7 @@ public class TransitionItemProvider extends SpecificationElementItemProvider
 				return;
 			case SGraphPackage.TRANSITION__TRIGGER:
 			case SGraphPackage.TRANSITION__EFFECT:
+			case SGraphPackage.TRANSITION__PROPERTIES:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -232,6 +235,11 @@ public class TransitionItemProvider extends SpecificationElementItemProvider
 	protected void collectNewChildDescriptors(
 			Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(SGraphPackage.Literals.REACTION__PROPERTIES,
+				 SGraphFactory.eINSTANCE.createReactionProperty()));
 	}
 
 }

+ 105 - 102
plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore

@@ -1,102 +1,105 @@
-<?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="sgraph" nsURI="http://www.yakindu.org/sct/sgraph/2.0.0" nsPrefix="sgraph">
-  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" abstract="true" eSuperTypes="#//Vertex"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="parentRegion" ordered="false"
-        lowerBound="1" eType="#//Region" eOpposite="#//Region/vertices"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingTransitions" ordered="false"
-        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingTransitions" ordered="false"
-        upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/source"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="vertices" ordered="false"
-        upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/parentRegion"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="composite" lowerBound="1"
-        eType="#//CompositeElement" eOpposite="#//CompositeElement/regions"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//SpecificationElement #//Reaction ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
-        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incomingTransitions"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
-        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//RegularState"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//Declaration"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//Declaration"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Choice" eSuperTypes="#//Pseudostate">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChoiceKind"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Statechart" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//NamedElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Entry" eSuperTypes="#//Pseudostate">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//EntryKind"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Effect" abstract="true"/>
-  <eClassifiers xsi:type="ecore:EClass" name="SpecificationElement" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="specification" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Reaction" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="#//Trigger"
-        transient="true" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="#//Effect"
-        transient="true" containment="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EEnum" name="EntryKind">
-    <eLiterals name="initial" literal="INITIAL"/>
-    <eLiterals name="shallowHistory" value="1" literal="SHALLOW_HISTORY"/>
-    <eLiterals name="deepHistory" value="2" literal="DEEP_HISTORY"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ReactiveElement" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="reactions" upperBound="-1"
-        eType="#//Reaction" changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="localReactions" upperBound="-1"
-        eType="#//Reaction" changeable="false" volatile="true" transient="true" derived="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Exit" eSuperTypes="#//Pseudostate"/>
-  <eClassifiers xsi:type="ecore:EClass" name="Scope">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="declarations" upperBound="-1"
-        eType="#//Declaration" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
-        eType="#//Event" changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="variables" unique="false"
-        upperBound="-1" eType="#//Variable" changeable="false" volatile="true" transient="true"
-        derived="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="ScopedElement" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="scopes" upperBound="-1"
-        eType="#//Scope" transient="true" containment="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="#//Pseudostate"/>
-  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//RegularState #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="orthogonal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"
-        transient="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="substatechartId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="subchart" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="simple" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-    <eStructuralFeatures xsi:type="ecore:EAttribute" name="leaf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
-        changeable="false" volatile="true" transient="true" derived="true"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Statement"/>
-  <eClassifiers xsi:type="ecore:EClass" name="RegularState" eSuperTypes="#//Vertex"/>
-  <eClassifiers xsi:type="ecore:EEnum" name="ChoiceKind">
-    <eLiterals name="dynamic"/>
-    <eLiterals name="static" value="1"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="CompositeElement" abstract="true">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="regions" upperBound="-1"
-        eType="#//Region" containment="true" eOpposite="#//Region/composite"/>
-  </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="sgraph" nsURI="http://www.yakindu.org/sct/sgraph/2.0.0" nsPrefix="sgraph">
+  <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Pseudostate" abstract="true" eSuperTypes="#//Vertex"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Vertex" abstract="true" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parentRegion" ordered="false"
+        lowerBound="1" eType="#//Region" eOpposite="#//Region/vertices"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingTransitions" ordered="false"
+        upperBound="-1" eType="#//Transition" eOpposite="#//Transition/target"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingTransitions" ordered="false"
+        upperBound="-1" eType="#//Transition" containment="true" eOpposite="#//Transition/source"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Region" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="vertices" ordered="false"
+        upperBound="-1" eType="#//Vertex" containment="true" eOpposite="#//Vertex/parentRegion"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="composite" lowerBound="1"
+        eType="#//CompositeElement" eOpposite="#//CompositeElement/regions"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Transition" eSuperTypes="#//SpecificationElement #//Reaction ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" ordered="false"
+        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/incomingTransitions"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+        lowerBound="1" eType="#//Vertex" eOpposite="#//Vertex/outgoingTransitions"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="priority" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FinalState" eSuperTypes="#//RegularState"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//Declaration"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Event" abstract="true" eSuperTypes="#//Declaration"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Choice" eSuperTypes="#//Pseudostate">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChoiceKind"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Statechart" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//NamedElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Entry" eSuperTypes="#//Pseudostate">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//EntryKind"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="EntryKind">
+    <eLiterals name="initial" literal="INITIAL"/>
+    <eLiterals name="shallowHistory" value="1" literal="SHALLOW_HISTORY"/>
+    <eLiterals name="deepHistory" value="2" literal="DEEP_HISTORY"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Exit" eSuperTypes="#//Pseudostate"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ReactiveElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="reactions" upperBound="-1"
+        eType="#//Reaction" changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="localReactions" upperBound="-1"
+        eType="#//Reaction" changeable="false" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Reaction" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="trigger" eType="#//Trigger"
+        transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="effect" eType="#//Effect"
+        transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
+        eType="#//ReactionProperty" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Trigger" abstract="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Effect" abstract="true"/>
+  <eClassifiers xsi:type="ecore:EClass" name="ReactionProperty"/>
+  <eClassifiers xsi:type="ecore:EClass" name="SpecificationElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="specification" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="../../../org.yakindu.base.types/model/base.ecore#//NamedElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Scope">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="declarations" upperBound="-1"
+        eType="#//Declaration" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="events" upperBound="-1"
+        eType="#//Event" changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="variables" unique="false"
+        upperBound="-1" eType="#//Variable" changeable="false" volatile="true" transient="true"
+        derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ScopedElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="scopes" upperBound="-1"
+        eType="#//Scope" transient="true" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="namespace" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Synchronization" eSuperTypes="#//Pseudostate"/>
+  <eClassifiers xsi:type="ecore:EClass" name="State" eSuperTypes="#//SpecificationElement #//ReactiveElement #//ScopedElement #//RegularState #//CompositeElement ../../../org.yakindu.base.types/model/base.ecore#//DocumentedElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="orthogonal" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="substatechart" eType="#//Statechart"
+        transient="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="substatechartId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="subchart" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="simple" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="composite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="leaf" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
+        changeable="false" volatile="true" transient="true" derived="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Statement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="RegularState" eSuperTypes="#//Vertex"/>
+  <eClassifiers xsi:type="ecore:EEnum" name="ChoiceKind">
+    <eLiterals name="dynamic"/>
+    <eLiterals name="static" value="1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CompositeElement" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="regions" upperBound="-1"
+        eType="#//Region" containment="true" eOpposite="#//Region/composite"/>
+  </eClassifiers>
+</ecore:EPackage>

+ 31 - 130
plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.ecorediag

@@ -32,26 +32,6 @@
     <element xmi:type="ecore:EClass" href="sgraph.ecore#//Vertex"/>
     <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uS0EYhnREeGudMwC1qhCZg" x="860" y="400"/>
   </children>
-  <children xmi:type="notation:Node" xmi:id="_uS0reRnREeGudMwC1qhCZg" type="1001">
-    <children xmi:type="notation:Node" xmi:id="_uS1SgBnREeGudMwC1qhCZg" type="4001"/>
-    <children xmi:type="notation:Node" xmi:id="_uS1SgRnREeGudMwC1qhCZg" type="5001">
-      <children xmi:type="notation:Node" xmi:id="_uS15kBnREeGudMwC1qhCZg" type="2001">
-        <element xmi:type="ecore:EAttribute" href="sgraph.ecore#//NamedElement/name"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_uS15kRnREeGudMwC1qhCZg"/>
-      </children>
-      <styles xmi:type="notation:DrawerStyle" xmi:id="_uS1SghnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:SortingStyle" xmi:id="_uS1SgxnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:FilteringStyle" xmi:id="_uS1ShBnREeGudMwC1qhCZg"/>
-    </children>
-    <children xmi:type="notation:Node" xmi:id="_uS1ShRnREeGudMwC1qhCZg" type="5002">
-      <styles xmi:type="notation:DrawerStyle" xmi:id="_uS1ShhnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:SortingStyle" xmi:id="_uS1ShxnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:FilteringStyle" xmi:id="_uS1SiBnREeGudMwC1qhCZg"/>
-    </children>
-    <styles xmi:type="notation:ShapeStyle" xmi:id="_uS0rehnREeGudMwC1qhCZg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
-    <element xmi:type="ecore:EClass" href="sgraph.ecore#//NamedElement"/>
-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uS0rexnREeGudMwC1qhCZg" x="412" y="28"/>
-  </children>
   <children xmi:type="notation:Node" xmi:id="_uS15khnREeGudMwC1qhCZg" type="1001">
     <children xmi:type="notation:Node" xmi:id="_uS2goRnREeGudMwC1qhCZg" type="4001"/>
     <children xmi:type="notation:Node" xmi:id="_uS3HsBnREeGudMwC1qhCZg" type="5001">
@@ -226,27 +206,7 @@
     </children>
     <styles xmi:type="notation:ShapeStyle" xmi:id="_uS91ZxnREeGudMwC1qhCZg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
     <element xmi:type="ecore:EClass" href="sgraph.ecore#//Effect"/>
-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uS91aBnREeGudMwC1qhCZg" x="1056" y="212"/>
-  </children>
-  <children xmi:type="notation:Node" xmi:id="_uS-ceBnREeGudMwC1qhCZg" type="1001">
-    <children xmi:type="notation:Node" xmi:id="_uS_DgBnREeGudMwC1qhCZg" type="4001"/>
-    <children xmi:type="notation:Node" xmi:id="_uS_DgRnREeGudMwC1qhCZg" type="5001">
-      <children xmi:type="notation:Node" xmi:id="_uS_DiRnREeGudMwC1qhCZg" type="2001">
-        <element xmi:type="ecore:EAttribute" href="sgraph.ecore#//ExpressionElement/expression"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_uS_DihnREeGudMwC1qhCZg"/>
-      </children>
-      <styles xmi:type="notation:DrawerStyle" xmi:id="_uS_DghnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:SortingStyle" xmi:id="_uS_DgxnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:FilteringStyle" xmi:id="_uS_DhBnREeGudMwC1qhCZg"/>
-    </children>
-    <children xmi:type="notation:Node" xmi:id="_uS_DhRnREeGudMwC1qhCZg" type="5002">
-      <styles xmi:type="notation:DrawerStyle" xmi:id="_uS_DhhnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:SortingStyle" xmi:id="_uS_DhxnREeGudMwC1qhCZg"/>
-      <styles xmi:type="notation:FilteringStyle" xmi:id="_uS_DiBnREeGudMwC1qhCZg"/>
-    </children>
-    <styles xmi:type="notation:ShapeStyle" xmi:id="_uS-ceRnREeGudMwC1qhCZg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
-    <element xmi:type="ecore:EClass" href="sgraph.ecore#//ExpressionElement"/>
-    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uS-cehnREeGudMwC1qhCZg" x="544" y="28"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uS91aBnREeGudMwC1qhCZg" x="1056" y="180"/>
   </children>
   <children xmi:type="notation:Node" xmi:id="_uS_qkBnREeGudMwC1qhCZg" type="1001">
     <children xmi:type="notation:Node" xmi:id="_uS_qkxnREeGudMwC1qhCZg" type="4001"/>
@@ -398,10 +358,6 @@
         <element xmi:type="ecore:EAttribute" href="sgraph.ecore#//State/substatechartId"/>
         <layoutConstraint xmi:type="notation:Location" xmi:id="_uTVBwRnREeGudMwC1qhCZg"/>
       </children>
-      <children xmi:type="notation:Node" xmi:id="_uTVBwhnREeGudMwC1qhCZg" type="2001">
-        <element xmi:type="ecore:EAttribute" href="sgraph.ecore#//State/submachine"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_uTVBwxnREeGudMwC1qhCZg"/>
-      </children>
       <children xmi:type="notation:Node" xmi:id="_uTVBxBnREeGudMwC1qhCZg" type="2001">
         <element xmi:type="ecore:EAttribute" href="sgraph.ecore#//State/simple"/>
         <layoutConstraint xmi:type="notation:Location" xmi:id="_uTVBxRnREeGudMwC1qhCZg"/>
@@ -462,6 +418,22 @@
     <element xmi:type="ecore:EEnum" href="sgraph.ecore#//ChoiceKind"/>
     <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TdpgEhqSEeGIWuhy_7gRFw" x="824" y="676"/>
   </children>
+  <children xmi:type="notation:Node" xmi:id="_9u9PgGccEeK9TMjVd3nhkg" type="1001">
+    <children xmi:type="notation:Node" xmi:id="_9u_EsGccEeK9TMjVd3nhkg" type="4001"/>
+    <children xmi:type="notation:Node" xmi:id="_9u_rwGccEeK9TMjVd3nhkg" type="5001">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_9u_rwWccEeK9TMjVd3nhkg"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_9u_rwmccEeK9TMjVd3nhkg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_9u_rw2ccEeK9TMjVd3nhkg"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_9vAS0GccEeK9TMjVd3nhkg" type="5002">
+      <styles xmi:type="notation:DrawerStyle" xmi:id="_9vAS0WccEeK9TMjVd3nhkg"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_9vAS0mccEeK9TMjVd3nhkg"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_9vAS02ccEeK9TMjVd3nhkg"/>
+    </children>
+    <styles xmi:type="notation:ShapeStyle" xmi:id="_9u9PgWccEeK9TMjVd3nhkg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10" fillColor="13761016" lineColor="8421504"/>
+    <element xmi:type="ecore:EClass" href="sgraph.ecore#//ReactionProperty"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9u9PgmccEeK9TMjVd3nhkg" x="1056" y="236"/>
+  </children>
   <styles xmi:type="notation:DiagramStyle" xmi:id="_uRNh4RnREeGudMwC1qhCZg"/>
   <element xmi:type="ecore:EPackage" href="sgraph.ecore#/"/>
   <edges xmi:type="notation:Edge" xmi:id="_uTbvcBnREeGudMwC1qhCZg" type="3003" source="_uSvy8BnREeGudMwC1qhCZg" target="_uS0EYBnREeGudMwC1qhCZg">
@@ -514,14 +486,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iLWXwBnbEeGudMwC1qhCZg" id="(0.13725490196078433,0.2857142857142857)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iLWXwRnbEeGudMwC1qhCZg" id="(0.18627450980392157,0.8979591836734694)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uTeyxBnREeGudMwC1qhCZg" type="3003" source="_uS0EYBnREeGudMwC1qhCZg" target="_uS0reRnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uTeyxRnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uTeyxhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uTeyxxnREeGudMwC1qhCZg" points="[0, 0, 433, 121]$[-433, -121, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug2gYBnREeGudMwC1qhCZg" id="(0.19607843137254902,0.6666666666666666)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug2gYRnREeGudMwC1qhCZg" id="(0.803921568627451,1.0)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uTfZ0BnREeGudMwC1qhCZg" type="3002" source="_uS15khnREeGudMwC1qhCZg" target="_uS0EYBnREeGudMwC1qhCZg">
     <children xmi:type="notation:Node" xmi:id="_uTfZ1BnREeGudMwC1qhCZg" type="4011">
       <layoutConstraint xmi:type="notation:Location" xmi:id="_uTfZ1RnREeGudMwC1qhCZg" x="-10" y="-10"/>
@@ -536,14 +500,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2c4bcBnUEeGudMwC1qhCZg" id="(0.9411764705882353,0.40816326530612246)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2c4bcRnUEeGudMwC1qhCZg" id="(0.06862745098039216,0.6190476190476191)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uTfZ2BnREeGudMwC1qhCZg" type="3003" source="_uS15khnREeGudMwC1qhCZg" target="_uS0reRnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uTfZ2RnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uTfZ2hnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uTfZ2xnREeGudMwC1qhCZg" points="[0, 0, 236, 185]$[-236, -185, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug2gYhnREeGudMwC1qhCZg" id="(0.5,0.0)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug3HcBnREeGudMwC1qhCZg" id="(0.5,1.0)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uTgA4BnREeGudMwC1qhCZg" type="3002" source="_uS3uwBnREeGudMwC1qhCZg" target="_uS0EYBnREeGudMwC1qhCZg">
     <children xmi:type="notation:Node" xmi:id="_uTmHgBnREeGudMwC1qhCZg" type="4011">
       <layoutConstraint xmi:type="notation:Location" xmi:id="_uTmHgRnREeGudMwC1qhCZg" x="4" y="-19"/>
@@ -572,14 +528,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug0rMBnREeGudMwC1qhCZg" id="(0.18627450980392157,0.8979591836734694)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug0rMRnREeGudMwC1qhCZg" id="(0.13725490196078433,0.2857142857142857)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uTmumBnREeGudMwC1qhCZg" type="3003" source="_uS3uwBnREeGudMwC1qhCZg" target="_uS-ceBnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uTmumRnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uTmumhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uTmumxnREeGudMwC1qhCZg" points="[0, 0, 475, 413]$[-475, -413, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug1SQBnREeGudMwC1qhCZg" id="(0.17647058823529413,0.7551020408163265)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug1SQRnREeGudMwC1qhCZg" id="(0.75,1.0)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uTnVoBnREeGudMwC1qhCZg" type="3003" source="_uS3uwBnREeGudMwC1qhCZg" target="_uTARoBnREeGudMwC1qhCZg">
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_uTnVoRnREeGudMwC1qhCZg" lineColor="4210752"/>
     <styles xmi:type="notation:FontStyle" xmi:id="_uTnVohnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
@@ -619,36 +567,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugvLohnREeGudMwC1qhCZg" id="(0.5,0.0)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugvLoxnREeGudMwC1qhCZg" id="(0.19607843137254902,1.0)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uUKvQBnREeGudMwC1qhCZg" type="3002" source="_uS7ZJBnREeGudMwC1qhCZg" target="_uS15khnREeGudMwC1qhCZg">
-    <children xmi:type="notation:Node" xmi:id="_uULWUBnREeGudMwC1qhCZg" type="4011">
-      <layoutConstraint xmi:type="notation:Location" xmi:id="_uULWURnREeGudMwC1qhCZg" x="-10" y="-10"/>
-    </children>
-    <children xmi:type="notation:Node" xmi:id="_uULWUhnREeGudMwC1qhCZg" type="4012">
-      <layoutConstraint xmi:type="notation:Location" xmi:id="_uULWUxnREeGudMwC1qhCZg" x="10" y="10"/>
-    </children>
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUKvQRnREeGudMwC1qhCZg" lineColor="4210752"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uUKvQhnREeGudMwC1qhCZg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10"/>
-    <element xmi:type="ecore:EReference" href="sgraph.ecore#//Statechart/regions"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUKvQxnREeGudMwC1qhCZg" points="[34, 2, -104, -10]$[122, 2, -16, -10]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug3ugBnREeGudMwC1qhCZg" id="(0.9705882352941176,0.40476190476190477)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug3ugRnREeGudMwC1qhCZg" id="(0.16666666666666666,0.42857142857142855)"/>
-  </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uULWVBnREeGudMwC1qhCZg" type="3003" source="_uS7ZJBnREeGudMwC1qhCZg" target="_uS0reRnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uULWVRnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uULWVhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uULWVxnREeGudMwC1qhCZg" points="[0, 0, 12, 509]$[-12, -509, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug3HcRnREeGudMwC1qhCZg" id="(0.4019607843137255,0.23809523809523808)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug3HchnREeGudMwC1qhCZg" id="(0.3431372549019608,0.9795918367346939)"/>
-  </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uUL9YBnREeGudMwC1qhCZg" type="3003" source="_uS7ZJBnREeGudMwC1qhCZg" target="_uS-ceBnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUL9YRnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uUL9YhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUL9YxnREeGudMwC1qhCZg" points="[0, 0, -250, 409]$[250, -409, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug48oBnREeGudMwC1qhCZg" id="(0.5392156862745098,0.047619047619047616)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug48oRnREeGudMwC1qhCZg" id="(0.3046875,0.8979591836734694)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uUL9ZBnREeGudMwC1qhCZg" type="3003" source="_uS7ZJBnREeGudMwC1qhCZg" target="_uTKpshnREeGudMwC1qhCZg">
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUL9ZRnREeGudMwC1qhCZg" lineColor="8421504"/>
     <styles xmi:type="notation:FontStyle" xmi:id="_uUL9ZhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
@@ -673,14 +591,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugy2AhnREeGudMwC1qhCZg" id="(0.4954128440366973,0.0)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugy2AxnREeGudMwC1qhCZg" id="(0.7058823529411765,0.9523809523809523)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uUMkdBnREeGudMwC1qhCZg" type="3003" source="_uS_qkBnREeGudMwC1qhCZg" target="_uS0reRnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUMkdRnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uUMkdhnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUMkdxnREeGudMwC1qhCZg" points="[0, 0, -283, 313]$[283, -313, 0, 0]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugvLoBnREeGudMwC1qhCZg" id="(0.9607843137254902,0.47619047619047616)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugvLoRnREeGudMwC1qhCZg" id="(0.18627450980392157,0.9795918367346939)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uUNLgBnREeGudMwC1qhCZg" type="3002" source="_uTARoBnREeGudMwC1qhCZg" target="_uS9OUhnREeGudMwC1qhCZg">
     <children xmi:type="notation:Node" xmi:id="_uUNLhBnREeGudMwC1qhCZg" type="4011">
       <layoutConstraint xmi:type="notation:Location" xmi:id="_uUNLhRnREeGudMwC1qhCZg" x="1" y="-15"/>
@@ -707,7 +617,7 @@
     <element xmi:type="ecore:EReference" href="sgraph.ecore#//Reaction/effect"/>
     <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUNLixnREeGudMwC1qhCZg" points="[0, 0, -64, 60]$[64, -60, 0, 0]"/>
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugwZwhnREeGudMwC1qhCZg" id="(0.9901960784313726,0.6428571428571429)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugxA0BnREeGudMwC1qhCZg" id="(0.5,1.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugxA0BnREeGudMwC1qhCZg" id="(0.09803921568627451,0.42857142857142855)"/>
   </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uUNylBnREeGudMwC1qhCZg" type="3002" source="_uTKpshnREeGudMwC1qhCZg" target="_uTARoBnREeGudMwC1qhCZg">
     <children xmi:type="notation:Node" xmi:id="_uUNymBnREeGudMwC1qhCZg" type="4011">
@@ -809,20 +719,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugyO8RnREeGudMwC1qhCZg" id="(0.5,0.0)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugyO8hnREeGudMwC1qhCZg" id="(0.38235294117647056,0.8095238095238095)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uUSEABnREeGudMwC1qhCZg" type="3002" source="_uTTzqBnREeGudMwC1qhCZg" target="_uS15khnREeGudMwC1qhCZg">
-    <children xmi:type="notation:Node" xmi:id="_uUVuYBnREeGudMwC1qhCZg" type="4011">
-      <layoutConstraint xmi:type="notation:Location" xmi:id="_uUVuYRnREeGudMwC1qhCZg" x="29" y="26"/>
-    </children>
-    <children xmi:type="notation:Node" xmi:id="_uUWVcBnREeGudMwC1qhCZg" type="4012">
-      <layoutConstraint xmi:type="notation:Location" xmi:id="_uUWVcRnREeGudMwC1qhCZg" x="36" y="15"/>
-    </children>
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUSEARnREeGudMwC1qhCZg" lineColor="4210752"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uUSEAhnREeGudMwC1qhCZg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10"/>
-    <element xmi:type="ecore:EReference" href="sgraph.ecore#//State/subRegions"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUSEAxnREeGudMwC1qhCZg" points="[6, -6, -164, 199]$[165, -199, -5, 6]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug4VkBnREeGudMwC1qhCZg" id="(0.7333333333333333,0.05426356589147287)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug4VkRnREeGudMwC1qhCZg" id="(0.3431372549019608,0.8775510204081632)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uUZYwBnREeGudMwC1qhCZg" type="3002" source="_uTTzqBnREeGudMwC1qhCZg" target="_uS7ZJBnREeGudMwC1qhCZg">
     <children xmi:type="notation:Node" xmi:id="_uUZ_0BnREeGudMwC1qhCZg" type="4011">
       <layoutConstraint xmi:type="notation:Location" xmi:id="_uUZ_0RnREeGudMwC1qhCZg" x="11" y="-36"/>
@@ -837,14 +733,6 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VLT60BnZEeGudMwC1qhCZg" id="(0.26666666666666666,0.015503875968992248)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugt9gRnREeGudMwC1qhCZg" id="(0.5784313725490197,0.8571428571428571)"/>
   </edges>
-  <edges xmi:type="notation:Edge" xmi:id="_uUam4hnREeGudMwC1qhCZg" type="3003" source="_uTTzqBnREeGudMwC1qhCZg" target="_uS-ceBnREeGudMwC1qhCZg">
-    <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUam4xnREeGudMwC1qhCZg" lineColor="12632256"/>
-    <styles xmi:type="notation:FontStyle" xmi:id="_uUam5BnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
-    <element xsi:nil="true"/>
-    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uUam5RnREeGudMwC1qhCZg" points="[-24, 1, 245, -10]$[-174, 1, 95, -10]"/>
-    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug48ohnREeGudMwC1qhCZg" id="(0.4866666666666667,0.03875968992248062)"/>
-    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ug48oxnREeGudMwC1qhCZg" id="(0.5546875,0.8163265306122449)"/>
-  </edges>
   <edges xmi:type="notation:Edge" xmi:id="_uUam5hnREeGudMwC1qhCZg" type="3003" source="_uTTzqBnREeGudMwC1qhCZg" target="_uTKpshnREeGudMwC1qhCZg">
     <styles xmi:type="notation:ConnectorStyle" xmi:id="_uUam5xnREeGudMwC1qhCZg" lineColor="8421504"/>
     <styles xmi:type="notation:FontStyle" xmi:id="_uUam6BnREeGudMwC1qhCZg" fontName="Lucida Grande"/>
@@ -876,4 +764,17 @@
     <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugq6MhnREeGudMwC1qhCZg" id="(0.5098039215686274,0.14285714285714285)"/>
     <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugrhQBnREeGudMwC1qhCZg" id="(0.27450980392156865,0.9523809523809523)"/>
   </edges>
+  <edges xmi:type="notation:Edge" xmi:id="_C78RwGcdEeK9TMjVd3nhkg" type="3002" source="_uTARoBnREeGudMwC1qhCZg" target="_9u9PgGccEeK9TMjVd3nhkg">
+    <children xmi:type="notation:Node" xmi:id="_C79f4GcdEeK9TMjVd3nhkg" type="4011">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_C79f4WcdEeK9TMjVd3nhkg" x="-25" y="14"/>
+    </children>
+    <children xmi:type="notation:Node" xmi:id="_C7-G8GcdEeK9TMjVd3nhkg" type="4012">
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_C7-G8WcdEeK9TMjVd3nhkg" x="10" y="10"/>
+    </children>
+    <styles xmi:type="notation:ConnectorStyle" xmi:id="_C78RwWcdEeK9TMjVd3nhkg" lineColor="4210752"/>
+    <styles xmi:type="notation:FontStyle" xmi:id="_C78RwmcdEeK9TMjVd3nhkg" fontColor="4210752" fontName="Lucida Grande" fontHeight="10"/>
+    <element xmi:type="ecore:EReference" href="sgraph.ecore#//Reaction/properties"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C78Rw2cdEeK9TMjVd3nhkg" points="[25, 11, -147, -52]$[132, 83, -40, 20]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C8AjMGcdEeK9TMjVd3nhkg" id="(0.7549019607843137,0.42857142857142855)"/>
+  </edges>
 </notation:Diagram>

+ 87 - 85
plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel

@@ -1,85 +1,87 @@
-<?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" copyrightText="Copyright (c) 2011 committers of YAKINDU and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;Contributors:&#xD;&#xA;committers of YAKINDU - initial API and implementation&#xD;&#xA;"
-    modelDirectory="/org.yakindu.sct.model.sgraph/src" modelPluginID="org.yakindu.sct.model.sgraph"
-    modelName="SGraph" importerID="org.eclipse.emf.importer.ecore" containmentProxies="true"
-    complianceLevel="6.0" usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base">
-  <foreignModel>sgraph.ecore</foreignModel>
-  <genPackages prefix="SGraph" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
-      ecorePackage="sgraph.ecore#/">
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//EntryKind">
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/initial"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/shallowHistory"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/deepHistory"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//ChoiceKind">
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/dynamic"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/static"/>
-    </genEnums>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Pseudostate"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Vertex">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/parentRegion"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/incomingTransitions"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/outgoingTransitions"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Region">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Region/vertices"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Region/priority"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Region/composite"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Transition">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/target"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/source"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Transition/priority"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//FinalState"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Variable"/>
-    <genClasses ecoreClass="sgraph.ecore#//Event"/>
-    <genClasses ecoreClass="sgraph.ecore#//Choice">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Choice/kind"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Statechart"/>
-    <genClasses ecoreClass="sgraph.ecore#//Entry">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Entry/kind"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Trigger"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Effect"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//SpecificationElement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//SpecificationElement/specification"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Declaration"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Reaction">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/trigger"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/effect"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//ReactiveElement">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/reactions"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/localReactions"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Exit"/>
-    <genClasses ecoreClass="sgraph.ecore#//Scope">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/declarations"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/events"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/variables"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//ScopedElement">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ScopedElement/scopes"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//ScopedElement/namespace"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Synchronization"/>
-    <genClasses ecoreClass="sgraph.ecore#//State">
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/orthogonal"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//State/substatechart"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/substatechartId"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/subchart"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/simple"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/composite"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/leaf"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Statement"/>
-    <genClasses ecoreClass="sgraph.ecore#//RegularState"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//CompositeElement">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//CompositeElement/regions"/>
-    </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" copyrightText="Copyright (c) 2011 committers of YAKINDU and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;Contributors:&#xD;&#xA;committers of YAKINDU - initial API and implementation&#xD;&#xA;"
+    modelDirectory="/org.yakindu.sct.model.sgraph/src" modelPluginID="org.yakindu.sct.model.sgraph"
+    modelName="SGraph" importerID="org.eclipse.emf.importer.ecore" containmentProxies="true"
+    complianceLevel="6.0" usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base">
+  <foreignModel>sgraph.ecore</foreignModel>
+  <genPackages prefix="SGraph" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
+      ecorePackage="sgraph.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//EntryKind">
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/initial"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/shallowHistory"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/deepHistory"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//ChoiceKind">
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/dynamic"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/static"/>
+    </genEnums>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Pseudostate"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Vertex">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/parentRegion"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/incomingTransitions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/outgoingTransitions"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Region">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Region/vertices"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Region/priority"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Region/composite"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Transition">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/target"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/source"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Transition/priority"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//FinalState"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Variable"/>
+    <genClasses ecoreClass="sgraph.ecore#//Event"/>
+    <genClasses ecoreClass="sgraph.ecore#//Choice">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Choice/kind"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Statechart"/>
+    <genClasses ecoreClass="sgraph.ecore#//Entry">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Entry/kind"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Exit"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//ReactiveElement">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/reactions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/localReactions"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Reaction">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/trigger"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/effect"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/properties"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Trigger"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Effect"/>
+    <genClasses ecoreClass="sgraph.ecore#//ReactionProperty"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//SpecificationElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//SpecificationElement/specification"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Declaration"/>
+    <genClasses ecoreClass="sgraph.ecore#//Scope">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/declarations"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/events"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/variables"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//ScopedElement">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ScopedElement/scopes"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//ScopedElement/namespace"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Synchronization"/>
+    <genClasses ecoreClass="sgraph.ecore#//State">
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/orthogonal"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//State/substatechart"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/substatechartId"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/subchart"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/simple"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/composite"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/leaf"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Statement"/>
+    <genClasses ecoreClass="sgraph.ecore#//RegularState"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//CompositeElement">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//CompositeElement/regions"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>

+ 18 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Reaction.java

@@ -10,6 +10,7 @@
  */
 package org.yakindu.sct.model.sgraph;
 
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 
 /**
@@ -22,6 +23,7 @@ import org.eclipse.emf.ecore.EObject;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgraph.Reaction#getTrigger <em>Trigger</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.Reaction#getEffect <em>Effect</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.Reaction#getProperties <em>Properties</em>}</li>
  * </ul>
  * </p>
  *
@@ -89,4 +91,20 @@ public interface Reaction extends EObject {
 	 */
 	void setEffect(Effect value);
 
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.sct.model.sgraph.ReactionProperty}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Properties</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Properties</em>' containment reference list.
+	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getReaction_Properties()
+	 * @model containment="true" resolveProxies="true"
+	 * @generated
+	 */
+	EList<ReactionProperty> getProperties();
+
 } // Reaction

+ 33 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/ReactionProperty.java

@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reaction Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.sct.model.sgraph.SGraphPackage#getReactionProperty()
+ * @model
+ * @generated
+ */
+public interface ReactionProperty extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+} // ReactionProperty

+ 9 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphFactory.java

@@ -99,6 +99,15 @@ public interface SGraphFactory extends EFactory {
 	 */
 	Exit createExit();
 
+	/**
+	 * Returns a new object of class '<em>Reaction Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Reaction Property</em>'.
+	 * @generated
+	 */
+	ReactionProperty createReactionProperty();
+
 	/**
 	 * Returns a new object of class '<em>Scope</em>'.
 	 * <!-- begin-user-doc -->

+ 131 - 55
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java

@@ -245,7 +245,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getSpecificationElement()
 	 * @generated
 	 */
-	int SPECIFICATION_ELEMENT = 12;
+	int SPECIFICATION_ELEMENT = 16;
 
 	/**
 	 * The feature id for the '<em><b>Specification</b></em>' attribute.
@@ -302,6 +302,15 @@ public interface SGraphPackage extends EPackage {
 	 */
 	int TRANSITION__EFFECT = SPECIFICATION_ELEMENT_FEATURE_COUNT + 1;
 
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSITION__PROPERTIES = SPECIFICATION_ELEMENT_FEATURE_COUNT + 2;
+
 	/**
 	 * The feature id for the '<em><b>Documentation</b></em>' attribute.
 	 * <!-- begin-user-doc -->
@@ -309,7 +318,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TRANSITION__DOCUMENTATION = SPECIFICATION_ELEMENT_FEATURE_COUNT + 2;
+	int TRANSITION__DOCUMENTATION = SPECIFICATION_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Target</b></em>' reference.
@@ -318,7 +327,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TRANSITION__TARGET = SPECIFICATION_ELEMENT_FEATURE_COUNT + 3;
+	int TRANSITION__TARGET = SPECIFICATION_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Source</b></em>' container reference.
@@ -327,7 +336,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TRANSITION__SOURCE = SPECIFICATION_ELEMENT_FEATURE_COUNT + 4;
+	int TRANSITION__SOURCE = SPECIFICATION_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Priority</b></em>' attribute.
@@ -336,7 +345,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TRANSITION__PRIORITY = SPECIFICATION_ELEMENT_FEATURE_COUNT + 5;
+	int TRANSITION__PRIORITY = SPECIFICATION_ELEMENT_FEATURE_COUNT + 6;
 
 	/**
 	 * The number of structural features of the '<em>Transition</em>' class.
@@ -345,7 +354,7 @@ public interface SGraphPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TRANSITION_FEATURE_COUNT = SPECIFICATION_ELEMENT_FEATURE_COUNT + 6;
+	int TRANSITION_FEATURE_COUNT = SPECIFICATION_ELEMENT_FEATURE_COUNT + 7;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.RegularStateImpl <em>Regular State</em>}' class.
@@ -355,7 +364,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getRegularState()
 	 * @generated
 	 */
-	int REGULAR_STATE = 22;
+	int REGULAR_STATE = 23;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -410,7 +419,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getState()
 	 * @generated
 	 */
-	int STATE = 20;
+	int STATE = 21;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.FinalStateImpl <em>Final State</em>}' class.
@@ -475,7 +484,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getDeclaration()
 	 * @generated
 	 */
-	int DECLARATION = 13;
+	int DECLARATION = 17;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -778,16 +787,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getTrigger()
 	 * @generated
 	 */
-	int TRIGGER = 10;
-
-	/**
-	 * The number of structural features of the '<em>Trigger</em>' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int TRIGGER_FEATURE_COUNT = 0;
+	int TRIGGER = 13;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.EffectImpl <em>Effect</em>}' class.
@@ -797,16 +797,17 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEffect()
 	 * @generated
 	 */
-	int EFFECT = 11;
+	int EFFECT = 14;
 
 	/**
-	 * The number of structural features of the '<em>Effect</em>' class.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl <em>Reaction Property</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReactionProperty()
 	 * @generated
-	 * @ordered
 	 */
-	int EFFECT_FEATURE_COUNT = 0;
+	int REACTION_PROPERTY = 15;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ReactionImpl <em>Reaction</em>}' class.
@@ -816,44 +817,72 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReaction()
 	 * @generated
 	 */
-	int REACTION = 14;
+	int REACTION = 12;
 
 	/**
-	 * The feature id for the '<em><b>Trigger</b></em>' containment reference.
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ReactiveElementImpl <em>Reactive Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgraph.impl.ReactiveElementImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReactiveElement()
+	 * @generated
+	 */
+	int REACTIVE_ELEMENT = 11;
+
+	/**
+	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ExitImpl <em>Exit</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.yakindu.sct.model.sgraph.impl.ExitImpl
+	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getExit()
+	 * @generated
+	 */
+	int EXIT = 10;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION__TRIGGER = 0;
+	int EXIT__NAME = PSEUDOSTATE__NAME;
 
 	/**
-	 * The feature id for the '<em><b>Effect</b></em>' containment reference.
+	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION__EFFECT = 1;
+	int EXIT__PARENT_REGION = PSEUDOSTATE__PARENT_REGION;
 
 	/**
-	 * The number of structural features of the '<em>Reaction</em>' class.
+	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int REACTION_FEATURE_COUNT = 2;
+	int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ReactiveElementImpl <em>Reactive Element</em>}' class.
+	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
+
+	/**
+	 * The number of structural features of the '<em>Exit</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgraph.impl.ReactiveElementImpl
-	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReactiveElement()
 	 * @generated
+	 * @ordered
 	 */
-	int REACTIVE_ELEMENT = 15;
+	int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Reactions</b></em>' reference list.
@@ -883,59 +912,67 @@ public interface SGraphPackage extends EPackage {
 	int REACTIVE_ELEMENT_FEATURE_COUNT = 2;
 
 	/**
-	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ExitImpl <em>Exit</em>}' class.
+	 * The feature id for the '<em><b>Trigger</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @see org.yakindu.sct.model.sgraph.impl.ExitImpl
-	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getExit()
 	 * @generated
+	 * @ordered
 	 */
-	int EXIT = 16;
+	int REACTION__TRIGGER = 0;
 
 	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * The feature id for the '<em><b>Effect</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EXIT__NAME = PSEUDOSTATE__NAME;
+	int REACTION__EFFECT = 1;
 
 	/**
-	 * The feature id for the '<em><b>Parent Region</b></em>' container reference.
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EXIT__PARENT_REGION = PSEUDOSTATE__PARENT_REGION;
+	int REACTION__PROPERTIES = 2;
 
 	/**
-	 * The feature id for the '<em><b>Incoming Transitions</b></em>' reference list.
+	 * The number of structural features of the '<em>Reaction</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EXIT__INCOMING_TRANSITIONS = PSEUDOSTATE__INCOMING_TRANSITIONS;
+	int REACTION_FEATURE_COUNT = 3;
 
 	/**
-	 * The feature id for the '<em><b>Outgoing Transitions</b></em>' containment reference list.
+	 * The number of structural features of the '<em>Trigger</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EXIT__OUTGOING_TRANSITIONS = PSEUDOSTATE__OUTGOING_TRANSITIONS;
+	int TRIGGER_FEATURE_COUNT = 0;
 
 	/**
-	 * The number of structural features of the '<em>Exit</em>' class.
+	 * The number of structural features of the '<em>Effect</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int EXIT_FEATURE_COUNT = PSEUDOSTATE_FEATURE_COUNT + 0;
+	int EFFECT_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Reaction Property</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REACTION_PROPERTY_FEATURE_COUNT = 0;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.sct.model.sgraph.impl.ScopeImpl <em>Scope</em>}' class.
@@ -945,7 +982,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getScope()
 	 * @generated
 	 */
-	int SCOPE = 17;
+	int SCOPE = 18;
 
 	/**
 	 * The feature id for the '<em><b>Declarations</b></em>' containment reference list.
@@ -991,7 +1028,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getScopedElement()
 	 * @generated
 	 */
-	int SCOPED_ELEMENT = 18;
+	int SCOPED_ELEMENT = 19;
 
 	/**
 	 * The feature id for the '<em><b>Scopes</b></em>' containment reference list.
@@ -1028,7 +1065,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getSynchronization()
 	 * @generated
 	 */
-	int SYNCHRONIZATION = 19;
+	int SYNCHRONIZATION = 20;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -1254,7 +1291,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getStatement()
 	 * @generated
 	 */
-	int STATEMENT = 21;
+	int STATEMENT = 22;
 
 	/**
 	 * The number of structural features of the '<em>Statement</em>' class.
@@ -1273,7 +1310,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getCompositeElement()
 	 * @generated
 	 */
-	int COMPOSITE_ELEMENT = 23;
+	int COMPOSITE_ELEMENT = 24;
 
 	/**
 	 * The feature id for the '<em><b>Regions</b></em>' containment reference list.
@@ -1301,7 +1338,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getEntryKind()
 	 * @generated
 	 */
-	int ENTRY_KIND = 24;
+	int ENTRY_KIND = 25;
 
 
 	/**
@@ -1312,7 +1349,7 @@ public interface SGraphPackage extends EPackage {
 	 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getChoiceKind()
 	 * @generated
 	 */
-	int CHOICE_KIND = 25;
+	int CHOICE_KIND = 26;
 
 
 	/**
@@ -1684,6 +1721,16 @@ public interface SGraphPackage extends EPackage {
 	 */
 	EClass getEffect();
 
+	/**
+	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.ReactionProperty <em>Reaction Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Reaction Property</em>'.
+	 * @see org.yakindu.sct.model.sgraph.ReactionProperty
+	 * @generated
+	 */
+	EClass getReactionProperty();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.SpecificationElement <em>Specification Element</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1747,6 +1794,17 @@ public interface SGraphPackage extends EPackage {
 	 */
 	EReference getReaction_Effect();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.sct.model.sgraph.Reaction#getProperties <em>Properties</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Properties</em>'.
+	 * @see org.yakindu.sct.model.sgraph.Reaction#getProperties()
+	 * @see #getReaction()
+	 * @generated
+	 */
+	EReference getReaction_Properties();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.sct.model.sgraph.ReactiveElement <em>Reactive Element</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2228,6 +2286,16 @@ public interface SGraphPackage extends EPackage {
 		 */
 		EClass EFFECT = eINSTANCE.getEffect();
 
+		/**
+		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl <em>Reaction Property</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl
+		 * @see org.yakindu.sct.model.sgraph.impl.SGraphPackageImpl#getReactionProperty()
+		 * @generated
+		 */
+		EClass REACTION_PROPERTY = eINSTANCE.getReactionProperty();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.SpecificationElementImpl <em>Specification Element</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2282,6 +2350,14 @@ public interface SGraphPackage extends EPackage {
 		 */
 		EReference REACTION__EFFECT = eINSTANCE.getReaction_Effect();
 
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference REACTION__PROPERTIES = eINSTANCE.getReaction_Properties();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.sct.model.sgraph.impl.ReactiveElementImpl <em>Reactive Element</em>}' class.
 		 * <!-- begin-user-doc -->

+ 42 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionImpl.java

@@ -10,14 +10,19 @@
  */
 package org.yakindu.sct.model.sgraph.impl;
 
+import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Trigger;
 
@@ -30,6 +35,7 @@ import org.yakindu.sct.model.sgraph.Trigger;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.ReactionImpl#getTrigger <em>Trigger</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.ReactionImpl#getEffect <em>Effect</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.ReactionImpl#getProperties <em>Properties</em>}</li>
  * </ul>
  * </p>
  *
@@ -63,6 +69,16 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 	 */
 	protected Effect effect;
 
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ReactionProperty> properties;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -214,6 +230,18 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 			eNotify(new ENotificationImpl(this, Notification.SET, SGraphPackage.REACTION__EFFECT, newEffect, newEffect));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ReactionProperty> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList.Resolving<ReactionProperty>(ReactionProperty.class, this, SGraphPackage.REACTION__PROPERTIES);
+		}
+		return properties;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -226,6 +254,8 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 				return basicSetTrigger(null, msgs);
 			case SGraphPackage.REACTION__EFFECT:
 				return basicSetEffect(null, msgs);
+			case SGraphPackage.REACTION__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -244,6 +274,8 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 			case SGraphPackage.REACTION__EFFECT:
 				if (resolve) return getEffect();
 				return basicGetEffect();
+			case SGraphPackage.REACTION__PROPERTIES:
+				return getProperties();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -253,6 +285,7 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -262,6 +295,10 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 			case SGraphPackage.REACTION__EFFECT:
 				setEffect((Effect)newValue);
 				return;
+			case SGraphPackage.REACTION__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends ReactionProperty>)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -280,6 +317,9 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 			case SGraphPackage.REACTION__EFFECT:
 				setEffect((Effect)null);
 				return;
+			case SGraphPackage.REACTION__PROPERTIES:
+				getProperties().clear();
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -296,6 +336,8 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 				return trigger != null;
 			case SGraphPackage.REACTION__EFFECT:
 				return effect != null;
+			case SGraphPackage.REACTION__PROPERTIES:
+				return properties != null && !properties.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}

+ 56 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionPropertyImpl.java

@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.model.sgraph.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.yakindu.sct.model.sgraph.ReactionProperty;
+import org.yakindu.sct.model.sgraph.SGraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reaction Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ReactionPropertyImpl extends EObjectImpl implements ReactionProperty {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2011 committers of YAKINDU and others.\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v1.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v10.html\r\nContributors:\r\ncommitters of YAKINDU - initial API and implementation\r\n";
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReactionPropertyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SGraphPackage.Literals.REACTION_PROPERTY;
+	}
+
+} //ReactionPropertyImpl

+ 12 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java

@@ -16,6 +16,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.impl.EFactoryImpl;
 import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.ChoiceKind;
 import org.yakindu.sct.model.sgraph.Entry;
@@ -91,6 +92,7 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 			case SGraphPackage.STATECHART: return createStatechart();
 			case SGraphPackage.ENTRY: return createEntry();
 			case SGraphPackage.EXIT: return createExit();
+			case SGraphPackage.REACTION_PROPERTY: return createReactionProperty();
 			case SGraphPackage.SCOPE: return createScope();
 			case SGraphPackage.SYNCHRONIZATION: return createSynchronization();
 			case SGraphPackage.STATE: return createState();
@@ -205,6 +207,16 @@ public class SGraphFactoryImpl extends EFactoryImpl implements SGraphFactory {
 		return exit;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ReactionProperty createReactionProperty() {
+		ReactionPropertyImpl reactionProperty = new ReactionPropertyImpl();
+		return reactionProperty;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 53 - 21
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java

@@ -29,6 +29,7 @@ import org.yakindu.sct.model.sgraph.Exit;
 import org.yakindu.sct.model.sgraph.FinalState;
 import org.yakindu.sct.model.sgraph.Pseudostate;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.ReactiveElement;
 import org.yakindu.sct.model.sgraph.Region;
 import org.yakindu.sct.model.sgraph.RegularState;
@@ -172,6 +173,13 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 	 */
 	private EClass effectEClass = null;
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reactionPropertyEClass = null;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -621,6 +629,15 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		return effectEClass;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getReactionProperty() {
+		return reactionPropertyEClass;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -675,6 +692,15 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		return (EReference)reactionEClass.getEStructuralFeatures().get(1);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getReaction_Properties() {
+		return (EReference)reactionEClass.getEStructuralFeatures().get(2);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -860,25 +886,28 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		entryEClass = createEClass(ENTRY);
 		createEAttribute(entryEClass, ENTRY__KIND);
 
+		exitEClass = createEClass(EXIT);
+
+		reactiveElementEClass = createEClass(REACTIVE_ELEMENT);
+		createEReference(reactiveElementEClass, REACTIVE_ELEMENT__REACTIONS);
+		createEReference(reactiveElementEClass, REACTIVE_ELEMENT__LOCAL_REACTIONS);
+
+		reactionEClass = createEClass(REACTION);
+		createEReference(reactionEClass, REACTION__TRIGGER);
+		createEReference(reactionEClass, REACTION__EFFECT);
+		createEReference(reactionEClass, REACTION__PROPERTIES);
+
 		triggerEClass = createEClass(TRIGGER);
 
 		effectEClass = createEClass(EFFECT);
 
+		reactionPropertyEClass = createEClass(REACTION_PROPERTY);
+
 		specificationElementEClass = createEClass(SPECIFICATION_ELEMENT);
 		createEAttribute(specificationElementEClass, SPECIFICATION_ELEMENT__SPECIFICATION);
 
 		declarationEClass = createEClass(DECLARATION);
 
-		reactionEClass = createEClass(REACTION);
-		createEReference(reactionEClass, REACTION__TRIGGER);
-		createEReference(reactionEClass, REACTION__EFFECT);
-
-		reactiveElementEClass = createEClass(REACTIVE_ELEMENT);
-		createEReference(reactiveElementEClass, REACTIVE_ELEMENT__REACTIONS);
-		createEReference(reactiveElementEClass, REACTIVE_ELEMENT__LOCAL_REACTIONS);
-
-		exitEClass = createEClass(EXIT);
-
 		scopeEClass = createEClass(SCOPE);
 		createEReference(scopeEClass, SCOPE__DECLARATIONS);
 		createEReference(scopeEClass, SCOPE__EVENTS);
@@ -959,8 +988,8 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		statechartEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		statechartEClass.getESuperTypes().add(theBasePackage.getDocumentedElement());
 		entryEClass.getESuperTypes().add(this.getPseudostate());
-		declarationEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		exitEClass.getESuperTypes().add(this.getPseudostate());
+		declarationEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		synchronizationEClass.getESuperTypes().add(this.getPseudostate());
 		stateEClass.getESuperTypes().add(this.getSpecificationElement());
 		stateEClass.getESuperTypes().add(this.getReactiveElement());
@@ -1002,25 +1031,28 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		initEClass(entryEClass, Entry.class, "Entry", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getEntry_Kind(), this.getEntryKind(), "kind", null, 0, 1, Entry.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
+		initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(reactiveElementEClass, ReactiveElement.class, "ReactiveElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getReactiveElement_Reactions(), this.getReaction(), null, "reactions", null, 0, -1, ReactiveElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getReactiveElement_LocalReactions(), this.getReaction(), null, "localReactions", null, 0, -1, ReactiveElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(reactionEClass, Reaction.class, "Reaction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getReaction_Trigger(), this.getTrigger(), null, "trigger", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getReaction_Effect(), this.getEffect(), null, "effect", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getReaction_Properties(), this.getReactionProperty(), null, "properties", null, 0, -1, Reaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
 		initEClass(triggerEClass, Trigger.class, "Trigger", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(effectEClass, Effect.class, "Effect", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+		initEClass(reactionPropertyEClass, ReactionProperty.class, "ReactionProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
 		initEClass(specificationElementEClass, SpecificationElement.class, "SpecificationElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getSpecificationElement_Specification(), ecorePackage.getEString(), "specification", null, 0, 1, SpecificationElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(declarationEClass, Declaration.class, "Declaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
-		initEClass(reactionEClass, Reaction.class, "Reaction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getReaction_Trigger(), this.getTrigger(), null, "trigger", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getReaction_Effect(), this.getEffect(), null, "effect", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-
-		initEClass(reactiveElementEClass, ReactiveElement.class, "ReactiveElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getReactiveElement_Reactions(), this.getReaction(), null, "reactions", null, 0, -1, ReactiveElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-		initEReference(getReactiveElement_LocalReactions(), this.getReaction(), null, "localReactions", null, 0, -1, ReactiveElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
-
-		initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-
 		initEClass(scopeEClass, Scope.class, "Scope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getScope_Declarations(), this.getDeclaration(), null, "declarations", null, 0, -1, Scope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getScope_Events(), this.getEvent(), null, "events", null, 0, -1, Scope.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

+ 44 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/TransitionImpl.java

@@ -10,16 +10,21 @@
  */
 package org.yakindu.sct.model.sgraph.impl;
 
+import java.util.Collection;
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.base.DocumentedElement;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Transition;
 import org.yakindu.sct.model.sgraph.Trigger;
@@ -34,6 +39,7 @@ import org.yakindu.sct.model.sgraph.Vertex;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getTrigger <em>Trigger</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getEffect <em>Effect</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getProperties <em>Properties</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getDocumentation <em>Documentation</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getTarget <em>Target</em>}</li>
  *   <li>{@link org.yakindu.sct.model.sgraph.impl.TransitionImpl#getSource <em>Source</em>}</li>
@@ -71,6 +77,16 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 	 */
 	protected Effect effect;
 
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ReactionProperty> properties;
+
 	/**
 	 * The default value of the '{@link #getDocumentation() <em>Documentation</em>}' attribute.
 	 * <!-- begin-user-doc -->
@@ -272,6 +288,18 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			eNotify(new ENotificationImpl(this, Notification.SET, SGraphPackage.TRANSITION__EFFECT, newEffect, newEffect));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ReactionProperty> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList.Resolving<ReactionProperty>(ReactionProperty.class, this, SGraphPackage.TRANSITION__PROPERTIES);
+		}
+		return properties;
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -457,6 +485,8 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 				return basicSetTrigger(null, msgs);
 			case SGraphPackage.TRANSITION__EFFECT:
 				return basicSetEffect(null, msgs);
+			case SGraphPackage.TRANSITION__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
 			case SGraphPackage.TRANSITION__TARGET:
 				return basicSetTarget(null, msgs);
 			case SGraphPackage.TRANSITION__SOURCE:
@@ -493,6 +523,8 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			case SGraphPackage.TRANSITION__EFFECT:
 				if (resolve) return getEffect();
 				return basicGetEffect();
+			case SGraphPackage.TRANSITION__PROPERTIES:
+				return getProperties();
 			case SGraphPackage.TRANSITION__DOCUMENTATION:
 				return getDocumentation();
 			case SGraphPackage.TRANSITION__TARGET:
@@ -512,6 +544,7 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -521,6 +554,10 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			case SGraphPackage.TRANSITION__EFFECT:
 				setEffect((Effect)newValue);
 				return;
+			case SGraphPackage.TRANSITION__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends ReactionProperty>)newValue);
+				return;
 			case SGraphPackage.TRANSITION__DOCUMENTATION:
 				setDocumentation((String)newValue);
 				return;
@@ -551,6 +588,9 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			case SGraphPackage.TRANSITION__EFFECT:
 				setEffect((Effect)null);
 				return;
+			case SGraphPackage.TRANSITION__PROPERTIES:
+				getProperties().clear();
+				return;
 			case SGraphPackage.TRANSITION__DOCUMENTATION:
 				setDocumentation(DOCUMENTATION_EDEFAULT);
 				return;
@@ -579,6 +619,8 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 				return trigger != null;
 			case SGraphPackage.TRANSITION__EFFECT:
 				return effect != null;
+			case SGraphPackage.TRANSITION__PROPERTIES:
+				return properties != null && !properties.isEmpty();
 			case SGraphPackage.TRANSITION__DOCUMENTATION:
 				return DOCUMENTATION_EDEFAULT == null ? documentation != null : !DOCUMENTATION_EDEFAULT.equals(documentation);
 			case SGraphPackage.TRANSITION__TARGET:
@@ -602,6 +644,7 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			switch (derivedFeatureID) {
 				case SGraphPackage.TRANSITION__TRIGGER: return SGraphPackage.REACTION__TRIGGER;
 				case SGraphPackage.TRANSITION__EFFECT: return SGraphPackage.REACTION__EFFECT;
+				case SGraphPackage.TRANSITION__PROPERTIES: return SGraphPackage.REACTION__PROPERTIES;
 				default: return -1;
 			}
 		}
@@ -625,6 +668,7 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			switch (baseFeatureID) {
 				case SGraphPackage.REACTION__TRIGGER: return SGraphPackage.TRANSITION__TRIGGER;
 				case SGraphPackage.REACTION__EFFECT: return SGraphPackage.TRANSITION__EFFECT;
+				case SGraphPackage.REACTION__PROPERTIES: return SGraphPackage.TRANSITION__PROPERTIES;
 				default: return -1;
 			}
 		}

+ 31 - 12
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java

@@ -16,6 +16,7 @@ import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.base.base.DocumentedElement;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.CompositeElement;
 import org.yakindu.sct.model.sgraph.Declaration;
@@ -146,6 +147,18 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 				return createEntryAdapter();
 			}
 			@Override
+			public Adapter caseExit(Exit object) {
+				return createExitAdapter();
+			}
+			@Override
+			public Adapter caseReactiveElement(ReactiveElement object) {
+				return createReactiveElementAdapter();
+			}
+			@Override
+			public Adapter caseReaction(Reaction object) {
+				return createReactionAdapter();
+			}
+			@Override
 			public Adapter caseTrigger(Trigger object) {
 				return createTriggerAdapter();
 			}
@@ -154,6 +167,10 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 				return createEffectAdapter();
 			}
 			@Override
+			public Adapter caseReactionProperty(ReactionProperty object) {
+				return createReactionPropertyAdapter();
+			}
+			@Override
 			public Adapter caseSpecificationElement(SpecificationElement object) {
 				return createSpecificationElementAdapter();
 			}
@@ -162,18 +179,6 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 				return createDeclarationAdapter();
 			}
 			@Override
-			public Adapter caseReaction(Reaction object) {
-				return createReactionAdapter();
-			}
-			@Override
-			public Adapter caseReactiveElement(ReactiveElement object) {
-				return createReactiveElementAdapter();
-			}
-			@Override
-			public Adapter caseExit(Exit object) {
-				return createExitAdapter();
-			}
-			@Override
 			public Adapter caseScope(Scope object) {
 				return createScopeAdapter();
 			}
@@ -481,6 +486,20 @@ public class SGraphAdapterFactory extends AdapterFactoryImpl {
 		return null;
 	}
 
+	/**
+	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.ReactionProperty <em>Reaction Property</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.yakindu.sct.model.sgraph.ReactionProperty
+	 * @generated
+	 */
+	public Adapter createReactionPropertyAdapter() {
+		return null;
+	}
+
 	/**
 	 * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.SpecificationElement <em>Specification Element</em>}'.
 	 * <!-- begin-user-doc -->

+ 43 - 21
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java

@@ -15,6 +15,7 @@ import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
 import org.yakindu.base.base.DocumentedElement;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.CompositeElement;
 import org.yakindu.sct.model.sgraph.Declaration;
@@ -191,6 +192,27 @@ public class SGraphSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SGraphPackage.EXIT: {
+				Exit exit = (Exit)theEObject;
+				T result = caseExit(exit);
+				if (result == null) result = casePseudostate(exit);
+				if (result == null) result = caseVertex(exit);
+				if (result == null) result = caseNamedElement(exit);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SGraphPackage.REACTIVE_ELEMENT: {
+				ReactiveElement reactiveElement = (ReactiveElement)theEObject;
+				T result = caseReactiveElement(reactiveElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SGraphPackage.REACTION: {
+				Reaction reaction = (Reaction)theEObject;
+				T result = caseReaction(reaction);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SGraphPackage.TRIGGER: {
 				Trigger trigger = (Trigger)theEObject;
 				T result = caseTrigger(trigger);
@@ -203,6 +225,12 @@ public class SGraphSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
+			case SGraphPackage.REACTION_PROPERTY: {
+				ReactionProperty reactionProperty = (ReactionProperty)theEObject;
+				T result = caseReactionProperty(reactionProperty);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
 			case SGraphPackage.SPECIFICATION_ELEMENT: {
 				SpecificationElement specificationElement = (SpecificationElement)theEObject;
 				T result = caseSpecificationElement(specificationElement);
@@ -216,27 +244,6 @@ public class SGraphSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case SGraphPackage.REACTION: {
-				Reaction reaction = (Reaction)theEObject;
-				T result = caseReaction(reaction);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGraphPackage.REACTIVE_ELEMENT: {
-				ReactiveElement reactiveElement = (ReactiveElement)theEObject;
-				T result = caseReactiveElement(reactiveElement);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
-			case SGraphPackage.EXIT: {
-				Exit exit = (Exit)theEObject;
-				T result = caseExit(exit);
-				if (result == null) result = casePseudostate(exit);
-				if (result == null) result = caseVertex(exit);
-				if (result == null) result = caseNamedElement(exit);
-				if (result == null) result = defaultCase(theEObject);
-				return result;
-			}
 			case SGraphPackage.SCOPE: {
 				Scope scope = (Scope)theEObject;
 				T result = caseScope(scope);
@@ -566,6 +573,21 @@ public class SGraphSwitch<T> extends Switch<T> {
 		return null;
 	}
 
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reaction Property</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reaction Property</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReactionProperty(ReactionProperty object) {
+		return null;
+	}
+
 	/**
 	 * Returns the result of interpreting the object as an instance of '<em>Specification Element</em>'.
 	 * <!-- begin-user-doc -->

+ 169 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/EntryPointSpecItemProvider.java

@@ -0,0 +1,169 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.yakindu.sct.model.sgraph.provider.ReactionPropertyItemProvider;
+
+import org.yakindu.sct.model.stext.stext.EntryPointSpec;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.stext.stext.EntryPointSpec} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class EntryPointSpecItemProvider
+  extends ReactionPropertyItemProvider
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EntryPointSpecItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addEntrypointPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Entrypoint feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addEntrypointPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_EntryPointSpec_entrypoint_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_EntryPointSpec_entrypoint_feature", "_UI_EntryPointSpec_type"),
+         StextPackage.Literals.ENTRY_POINT_SPEC__ENTRYPOINT,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns EntryPointSpec.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/EntryPointSpec"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((EntryPointSpec)object).getEntrypoint();
+    return label == null || label.length() == 0 ?
+      getString("_UI_EntryPointSpec_type") :
+      getString("_UI_EntryPointSpec_type") + " " + label;
+  }
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(EntryPointSpec.class))
+    {
+      case StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return STextEditPlugin.INSTANCE;
+  }
+
+}

+ 169 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/ExitPointSpecItemProvider.java

@@ -0,0 +1,169 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.yakindu.sct.model.sgraph.provider.ReactionPropertyItemProvider;
+
+import org.yakindu.sct.model.stext.stext.ExitPointSpec;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.sct.model.stext.stext.ExitPointSpec} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ExitPointSpecItemProvider
+  extends ReactionPropertyItemProvider
+  implements
+    IEditingDomainItemProvider,
+    IStructuredItemContentProvider,
+    ITreeItemContentProvider,
+    IItemLabelProvider,
+    IItemPropertySource
+{
+  /**
+   * This constructs an instance from a factory and a notifier.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ExitPointSpecItemProvider(AdapterFactory adapterFactory)
+  {
+    super(adapterFactory);
+  }
+
+  /**
+   * This returns the property descriptors for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object)
+  {
+    if (itemPropertyDescriptors == null)
+    {
+      super.getPropertyDescriptors(object);
+
+      addExitpointPropertyDescriptor(object);
+    }
+    return itemPropertyDescriptors;
+  }
+
+  /**
+   * This adds a property descriptor for the Exitpoint feature.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected void addExitpointPropertyDescriptor(Object object)
+  {
+    itemPropertyDescriptors.add
+      (createItemPropertyDescriptor
+        (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+         getResourceLocator(),
+         getString("_UI_ExitPointSpec_exitpoint_feature"),
+         getString("_UI_PropertyDescriptor_description", "_UI_ExitPointSpec_exitpoint_feature", "_UI_ExitPointSpec_type"),
+         StextPackage.Literals.EXIT_POINT_SPEC__EXITPOINT,
+         true,
+         false,
+         false,
+         ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+         null,
+         null));
+  }
+
+  /**
+   * This returns ExitPointSpec.gif.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object getImage(Object object)
+  {
+    return overlayImage(object, getResourceLocator().getImage("full/obj16/ExitPointSpec"));
+  }
+
+  /**
+   * This returns the label text for the adapted class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getText(Object object)
+  {
+    String label = ((ExitPointSpec)object).getExitpoint();
+    return label == null || label.length() == 0 ?
+      getString("_UI_ExitPointSpec_type") :
+      getString("_UI_ExitPointSpec_type") + " " + label;
+  }
+
+  /**
+   * This handles model notifications by calling {@link #updateChildren} to update any cached
+   * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void notifyChanged(Notification notification)
+  {
+    updateChildren(notification);
+
+    switch (notification.getFeatureID(ExitPointSpec.class))
+    {
+      case StextPackage.EXIT_POINT_SPEC__EXITPOINT:
+        fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+        return;
+    }
+    super.notifyChanged(notification);
+  }
+
+  /**
+   * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+   * that can be created under this object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object)
+  {
+    super.collectNewChildDescriptors(newChildDescriptors, object);
+  }
+
+  /**
+   * Return the resource locator for this item provider's resources.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ResourceLocator getResourceLocator()
+  {
+    return STextEditPlugin.INSTANCE;
+  }
+
+}

+ 18 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/LocalReactionItemProvider.java

@@ -21,6 +21,7 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
+import org.yakindu.sct.model.sgraph.SGraphFactory;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 
 import org.yakindu.sct.model.sgraph.provider.DeclarationItemProvider;
@@ -88,6 +89,7 @@ public class LocalReactionItemProvider
       super.getChildrenFeatures(object);
       childrenFeatures.add(SGraphPackage.Literals.REACTION__TRIGGER);
       childrenFeatures.add(SGraphPackage.Literals.REACTION__EFFECT);
+      childrenFeatures.add(SGraphPackage.Literals.REACTION__PROPERTIES);
     }
     return childrenFeatures;
   }
@@ -149,6 +151,7 @@ public class LocalReactionItemProvider
     {
       case StextPackage.LOCAL_REACTION__TRIGGER:
       case StextPackage.LOCAL_REACTION__EFFECT:
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
         fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
         return;
     }
@@ -181,6 +184,21 @@ public class LocalReactionItemProvider
       (createChildParameter
         (SGraphPackage.Literals.REACTION__EFFECT,
          StextFactory.eINSTANCE.createReactionEffect()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__PROPERTIES,
+         StextFactory.eINSTANCE.createEntryPointSpec()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__PROPERTIES,
+         StextFactory.eINSTANCE.createExitPointSpec()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__PROPERTIES,
+         SGraphFactory.eINSTANCE.createReactionProperty()));
   }
 
   /**

+ 52 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/StextItemProviderAdapterFactory.java

@@ -473,6 +473,56 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     return transitionReactionItemProvider;
   }
 
+  /**
+   * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.EntryPointSpec} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EntryPointSpecItemProvider entryPointSpecItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.yakindu.sct.model.stext.stext.EntryPointSpec}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createEntryPointSpecAdapter()
+  {
+    if (entryPointSpecItemProvider == null)
+    {
+      entryPointSpecItemProvider = new EntryPointSpecItemProvider(this);
+    }
+
+    return entryPointSpecItemProvider;
+  }
+
+  /**
+   * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.ExitPointSpec} instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ExitPointSpecItemProvider exitPointSpecItemProvider;
+
+  /**
+   * This creates an adapter for a {@link org.yakindu.sct.model.stext.stext.ExitPointSpec}.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Adapter createExitPointSpecAdapter()
+  {
+    if (exitPointSpecItemProvider == null)
+    {
+      exitPointSpecItemProvider = new ExitPointSpecItemProvider(this);
+    }
+
+    return exitPointSpecItemProvider;
+  }
+
   /**
    * This keeps track of the one adapter used for all {@link org.yakindu.sct.model.stext.stext.EventSpec} instances.
    * <!-- begin-user-doc -->
@@ -1550,6 +1600,8 @@ public class StextItemProviderAdapterFactory extends StextAdapterFactory impleme
     if (operationDefinitionItemProvider != null) operationDefinitionItemProvider.dispose();
     if (localReactionItemProvider != null) localReactionItemProvider.dispose();
     if (transitionReactionItemProvider != null) transitionReactionItemProvider.dispose();
+    if (entryPointSpecItemProvider != null) entryPointSpecItemProvider.dispose();
+    if (exitPointSpecItemProvider != null) exitPointSpecItemProvider.dispose();
     if (eventSpecItemProvider != null) eventSpecItemProvider.dispose();
     if (regularEventSpecItemProvider != null) regularEventSpecItemProvider.dispose();
     if (timeEventSpecItemProvider != null) timeEventSpecItemProvider.dispose();

+ 10 - 0
plugins/org.yakindu.sct.model.stext.edit/src/org/yakindu/sct/model/stext/stext/provider/TransitionReactionItemProvider.java

@@ -131,6 +131,16 @@ public class TransitionReactionItemProvider
       (createChildParameter
         (SGraphPackage.Literals.REACTION__EFFECT,
          StextFactory.eINSTANCE.createReactionEffect()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__PROPERTIES,
+         StextFactory.eINSTANCE.createEntryPointSpec()));
+
+    newChildDescriptors.add
+      (createChildParameter
+        (SGraphPackage.Literals.REACTION__PROPERTIES,
+         StextFactory.eINSTANCE.createExitPointSpec()));
   }
 
   /**

+ 18 - 0
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/AbstractSTextProposalProvider.java

@@ -109,6 +109,9 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void completeTransitionReaction_Effect(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeTransitionReaction_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeReactionTrigger_Triggers(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -119,6 +122,12 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(0)), context, acceptor);
 		completeRuleCall(((RuleCall)((Alternatives)assignment.getTerminal()).getElements().get(1)), context, acceptor);
 	}
+	public void completeEntryPointSpec_Entrypoint(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeExitPointSpec_Exitpoint(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeRegularEventSpec_Event(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -351,6 +360,15 @@ public class AbstractSTextProposalProvider extends TerminalsProposalProvider {
 	public void complete_ReactionEffect(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
+	public void complete_TransitionProperty(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EntryPointSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ExitPointSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void complete_EventSpec(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}

+ 7 - 0
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/STextParser.java

@@ -50,6 +50,7 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getDefaultTriggerAccess().getAlternatives_1(), "rule__DefaultTrigger__Alternatives_1");
 					put(grammarAccess.getReactionEffectAccess().getActionsAlternatives_1_0(), "rule__ReactionEffect__ActionsAlternatives_1_0");
 					put(grammarAccess.getReactionEffectAccess().getActionsAlternatives_2_1_0(), "rule__ReactionEffect__ActionsAlternatives_2_1_0");
+					put(grammarAccess.getTransitionPropertyAccess().getAlternatives(), "rule__TransitionProperty__Alternatives");
 					put(grammarAccess.getEventSpecAccess().getAlternatives(), "rule__EventSpec__Alternatives");
 					put(grammarAccess.getBuiltinEventSpecAccess().getAlternatives(), "rule__BuiltinEventSpec__Alternatives");
 					put(grammarAccess.getAlwaysEventAccess().getAlternatives_1(), "rule__AlwaysEvent__Alternatives_1");
@@ -90,6 +91,7 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getLocalReactionAccess().getGroup_1_0(), "rule__LocalReaction__Group_1_0__0");
 					put(grammarAccess.getTransitionReactionAccess().getGroup(), "rule__TransitionReaction__Group__0");
 					put(grammarAccess.getTransitionReactionAccess().getGroup_2(), "rule__TransitionReaction__Group_2__0");
+					put(grammarAccess.getTransitionReactionAccess().getGroup_3(), "rule__TransitionReaction__Group_3__0");
 					put(grammarAccess.getReactionTriggerAccess().getGroup(), "rule__ReactionTrigger__Group__0");
 					put(grammarAccess.getReactionTriggerAccess().getGroup_1_0(), "rule__ReactionTrigger__Group_1_0__0");
 					put(grammarAccess.getReactionTriggerAccess().getGroup_1_0_1(), "rule__ReactionTrigger__Group_1_0_1__0");
@@ -98,6 +100,8 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getDefaultTriggerAccess().getGroup(), "rule__DefaultTrigger__Group__0");
 					put(grammarAccess.getReactionEffectAccess().getGroup(), "rule__ReactionEffect__Group__0");
 					put(grammarAccess.getReactionEffectAccess().getGroup_2(), "rule__ReactionEffect__Group_2__0");
+					put(grammarAccess.getEntryPointSpecAccess().getGroup(), "rule__EntryPointSpec__Group__0");
+					put(grammarAccess.getExitPointSpecAccess().getGroup(), "rule__ExitPointSpec__Group__0");
 					put(grammarAccess.getTimeEventSpecAccess().getGroup(), "rule__TimeEventSpec__Group__0");
 					put(grammarAccess.getEntryEventAccess().getGroup(), "rule__EntryEvent__Group__0");
 					put(grammarAccess.getExitEventAccess().getGroup(), "rule__ExitEvent__Group__0");
@@ -176,12 +180,15 @@ public class STextParser extends AbstractContentAssistParser {
 					put(grammarAccess.getLocalReactionAccess().getEffectAssignment_1_0_1(), "rule__LocalReaction__EffectAssignment_1_0_1");
 					put(grammarAccess.getTransitionReactionAccess().getTriggerAssignment_1(), "rule__TransitionReaction__TriggerAssignment_1");
 					put(grammarAccess.getTransitionReactionAccess().getEffectAssignment_2_1(), "rule__TransitionReaction__EffectAssignment_2_1");
+					put(grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1(), "rule__TransitionReaction__PropertiesAssignment_3_1");
 					put(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_0(), "rule__ReactionTrigger__TriggersAssignment_1_0_0");
 					put(grammarAccess.getReactionTriggerAccess().getTriggersAssignment_1_0_1_1(), "rule__ReactionTrigger__TriggersAssignment_1_0_1_1");
 					put(grammarAccess.getReactionTriggerAccess().getGuardExpressionAssignment_1_0_2_1(), "rule__ReactionTrigger__GuardExpressionAssignment_1_0_2_1");
 					put(grammarAccess.getReactionTriggerAccess().getGuardExpressionAssignment_1_1_1(), "rule__ReactionTrigger__GuardExpressionAssignment_1_1_1");
 					put(grammarAccess.getReactionEffectAccess().getActionsAssignment_1(), "rule__ReactionEffect__ActionsAssignment_1");
 					put(grammarAccess.getReactionEffectAccess().getActionsAssignment_2_1(), "rule__ReactionEffect__ActionsAssignment_2_1");
+					put(grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1(), "rule__EntryPointSpec__EntrypointAssignment_1");
+					put(grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0(), "rule__ExitPointSpec__ExitpointAssignment_0");
 					put(grammarAccess.getRegularEventSpecAccess().getEventAssignment(), "rule__RegularEventSpec__EventAssignment");
 					put(grammarAccess.getTimeEventSpecAccess().getTypeAssignment_0(), "rule__TimeEventSpec__TypeAssignment_0");
 					put(grammarAccess.getTimeEventSpecAccess().getValueAssignment_1(), "rule__TimeEventSpec__ValueAssignment_1");

+ 371 - 0
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.g

@@ -829,6 +829,90 @@ finally {
 
 
 
+// Entry rule entryRuleTransitionProperty
+entryRuleTransitionProperty 
+:
+{ before(grammarAccess.getTransitionPropertyRule()); }
+	 ruleTransitionProperty
+{ after(grammarAccess.getTransitionPropertyRule()); } 
+	 EOF 
+;
+
+// Rule TransitionProperty
+ruleTransitionProperty
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTransitionPropertyAccess().getAlternatives()); }
+(rule__TransitionProperty__Alternatives)
+{ after(grammarAccess.getTransitionPropertyAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntryPointSpec
+entryRuleEntryPointSpec 
+:
+{ before(grammarAccess.getEntryPointSpecRule()); }
+	 ruleEntryPointSpec
+{ after(grammarAccess.getEntryPointSpecRule()); } 
+	 EOF 
+;
+
+// Rule EntryPointSpec
+ruleEntryPointSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntryPointSpecAccess().getGroup()); }
+(rule__EntryPointSpec__Group__0)
+{ after(grammarAccess.getEntryPointSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleExitPointSpec
+entryRuleExitPointSpec 
+:
+{ before(grammarAccess.getExitPointSpecRule()); }
+	 ruleExitPointSpec
+{ after(grammarAccess.getExitPointSpecRule()); } 
+	 EOF 
+;
+
+// Rule ExitPointSpec
+ruleExitPointSpec
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getExitPointSpecAccess().getGroup()); }
+(rule__ExitPointSpec__Group__0)
+{ after(grammarAccess.getExitPointSpecAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
 // Entry rule entryRuleEventSpec
 entryRuleEventSpec 
 :
@@ -2388,6 +2472,28 @@ finally {
 	restoreStackSize(stackSize);
 }
 
+rule__TransitionProperty__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0()); }
+	ruleEntryPointSpec
+{ after(grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1()); }
+	ruleExitPointSpec
+{ after(grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__EventSpec__Alternatives
     @init {
 		int stackSize = keepStackSize();
@@ -4958,6 +5064,7 @@ rule__TransitionReaction__Group__2
     }
 :
 	rule__TransitionReaction__Group__2__Impl
+	rule__TransitionReaction__Group__3
 ;
 finally {
 	restoreStackSize(stackSize);
@@ -4980,6 +5087,36 @@ finally {
 }
 
 
+rule__TransitionReaction__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransitionReaction__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransitionReaction__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransitionReactionAccess().getGroup_3()); }
+(rule__TransitionReaction__Group_3__0)?
+{ after(grammarAccess.getTransitionReactionAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
 
 
 
@@ -5049,6 +5186,69 @@ finally {
 
 
 
+rule__TransitionReaction__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransitionReaction__Group_3__0__Impl
+	rule__TransitionReaction__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransitionReaction__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0()); }
+
+	'#' 
+
+{ after(grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TransitionReaction__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TransitionReaction__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TransitionReaction__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1()); }
+(rule__TransitionReaction__PropertiesAssignment_3_1)*
+{ after(grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
 rule__ReactionTrigger__Group__0
     @init {
 		int stackSize = keepStackSize();
@@ -5679,6 +5879,132 @@ finally {
 
 
 
+rule__EntryPointSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntryPointSpec__Group__0__Impl
+	rule__EntryPointSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntryPointSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0()); }
+
+	'>' 
+
+{ after(grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntryPointSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntryPointSpec__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntryPointSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1()); }
+(rule__EntryPointSpec__EntrypointAssignment_1)
+{ after(grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ExitPointSpec__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExitPointSpec__Group__0__Impl
+	rule__ExitPointSpec__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExitPointSpec__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0()); }
+(rule__ExitPointSpec__ExitpointAssignment_0)
+{ after(grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ExitPointSpec__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ExitPointSpec__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExitPointSpec__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1()); }
+
+	'>' 
+
+{ after(grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
 rule__TimeEventSpec__Group__0
     @init {
 		int stackSize = keepStackSize();
@@ -10255,6 +10581,21 @@ finally {
 	restoreStackSize(stackSize);
 }
 
+rule__TransitionReaction__PropertiesAssignment_3_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0()); }
+	ruleTransitionProperty{ after(grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__ReactionTrigger__TriggersAssignment_1_0_0
     @init {
 		int stackSize = keepStackSize();
@@ -10347,6 +10688,36 @@ finally {
 	restoreStackSize(stackSize);
 }
 
+rule__EntryPointSpec__EntrypointAssignment_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0()); }
+	RULE_ID{ after(grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ExitPointSpec__ExitpointAssignment_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0()); }
+	RULE_ID{ after(grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
 rule__RegularEventSpec__EventAssignment
     @init {
 		int stackSize = keepStackSize();

+ 13 - 11
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSText.tokens

@@ -31,8 +31,8 @@ T__16=16
 T__51=51
 T__15=15
 T__52=52
-T__53=53
 T__18=18
+T__53=53
 T__54=54
 T__17=17
 T__14=14
@@ -49,6 +49,7 @@ T__81=81
 T__47=47
 T__82=82
 T__44=44
+T__83=83
 T__45=45
 T__48=48
 T__49=49
@@ -77,6 +78,7 @@ T__73=73
 T__79=79
 T__78=78
 T__77=77
+'#'=73
 'internal'=16
 'out'=20
 '>='=58
@@ -87,21 +89,21 @@ T__77=77
 '%='=39
 'event'=17
 '>'=57
-'||'=77
-'&&'=78
-';'=75
+'||'=78
+'&&'=79
+';'=76
 'raise'=31
 '+'=49
 '.'=72
 'active'=33
-'^'=80
+'^'=81
 '>>'=48
 'else'=26
 '^='=45
 '+='=40
 'readonly'=22
 '>>='=43
-'?'=76
+'?'=77
 'var'=21
 '&='=44
 's'=61
@@ -113,11 +115,11 @@ T__77=77
 'in'=19
 'default'=25
 '-='=41
-']'=74
+']'=75
 '<<='=42
 'ns'=64
-'!'=79
-'|'=81
+'!'=80
+'|'=82
 'ms'=62
 'every'=35
 '|='=46
@@ -141,8 +143,8 @@ T__77=77
 '!='=60
 'external'=23
 '<'=55
-'['=73
+'['=74
 '*'=51
 'local'=18
-'&'=82
+'&'=83
 'interface'=15

Diferenças do arquivo suprimidas por serem muito extensas
+ 294 - 262
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextLexer.java


Diferenças do arquivo suprimidas por serem muito extensas
+ 6766 - 5656
plugins/org.yakindu.sct.model.stext.ui/src-gen/org/yakindu/sct/model/stext/ui/contentassist/antlr/internal/InternalSTextParser.java


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

@@ -47,6 +47,12 @@
   <eClassifiers xsi:type="ecore:EClass" name="OperationDefinition" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration ../../org.yakindu.base.types/model/types.ecore#//Operation"/>
   <eClassifiers xsi:type="ecore:EClass" name="LocalReaction" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Declaration ../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
   <eClassifiers xsi:type="ecore:EClass" name="TransitionReaction" eSuperTypes="../../org.yakindu.sct.model.sgraph/model/emf/sgraph.ecore#//Reaction"/>
+  <eClassifiers xsi:type="ecore:EClass" name="EntryPointSpec" eSuperTypes="../../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="../../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="#//Expression"

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

@@ -95,6 +95,12 @@
     <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#//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"/>

+ 110 - 73
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/SText.xmi

@@ -308,7 +308,7 @@
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value="="/>
           <elements xsi:type="xtext:Assignment" feature="initialValue" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
           </elements>
         </elements>
       </alternatives>
@@ -470,6 +470,12 @@
             <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.35"/>
           </elements>
         </elements>
+        <elements xsi:type="xtext:Group" cardinality="?">
+          <elements xsi:type="xtext:Keyword" value="#"/>
+          <elements xsi:type="xtext:Assignment" cardinality="*" feature="properties" operator="+=">
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+          </elements>
+        </elements>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="StextTrigger">
@@ -494,18 +500,18 @@
         <elements xsi:type="xtext:Alternatives">
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="*">
               <elements xsi:type="xtext:Keyword" value=","/>
               <elements xsi:type="xtext:Assignment" feature="triggers" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.36"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
               </elements>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="?">
               <elements xsi:type="xtext:Keyword" predicated="true" value="["/>
               <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
               </elements>
               <elements xsi:type="xtext:Keyword" value="]"/>
             </elements>
@@ -513,7 +519,7 @@
           <elements xsi:type="xtext:Group">
             <elements xsi:type="xtext:Keyword" value="["/>
             <elements xsi:type="xtext:Assignment" feature="guardExpression" operator="=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
             </elements>
             <elements xsi:type="xtext:Keyword" value="]"/>
           </elements>
@@ -548,29 +554,60 @@
         </elements>
         <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
           <terminal xsi:type="xtext:Alternatives">
-            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
-            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
           </terminal>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Keyword" predicated="true" value=";"/>
           <elements xsi:type="xtext:Assignment" feature="actions" operator="+=">
             <terminal xsi:type="xtext:Alternatives">
-              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
-              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+              <elements xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
             </terminal>
           </elements>
         </elements>
       </alternatives>
     </rules>
+    <rules xsi:type="xtext:ParserRule" name="TransitionProperty">
+      <type metamodel="/0/@metamodelDeclarations.2">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//ReactionProperty"/>
+      </type>
+      <alternatives xsi:type="xtext:Alternatives">
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="EntryPointSpec">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//EntryPointSpec"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Keyword" value=">"/>
+        <elements xsi:type="xtext:Assignment" feature="entrypoint" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+        </elements>
+      </alternatives>
+    </rules>
+    <rules xsi:type="xtext:ParserRule" name="ExitPointSpec">
+      <type metamodel="/0/@metamodelDeclarations.0">
+        <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//ExitPointSpec"/>
+      </type>
+      <alternatives xsi:type="xtext:Group">
+        <elements xsi:type="xtext:Assignment" feature="exitpoint" operator="=">
+          <terminal xsi:type="xtext:RuleCall" rule="/1/@rules.0"/>
+        </elements>
+        <elements xsi:type="xtext:Keyword" value=">"/>
+      </alternatives>
+    </rules>
     <rules xsi:type="xtext:ParserRule" name="EventSpec">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//EventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.37"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.38"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.40"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="RegularEventSpec">
@@ -578,7 +615,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//RegularEventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Assignment" feature="event" operator="=">
-        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+        <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="TimeEventSpec">
@@ -587,13 +624,13 @@
       </type>
       <alternatives xsi:type="xtext:Group">
         <elements xsi:type="xtext:Assignment" feature="type" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.39"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="unit" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
         </elements>
       </alternatives>
     </rules>
@@ -617,9 +654,9 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//BuiltinEventSpec"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.41"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.42"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.43"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.44"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.45"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="EntryEvent">
@@ -676,12 +713,12 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="raise"/>
         <elements xsi:type="xtext:Assignment" feature="event" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
         </elements>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
           </elements>
         </elements>
       </alternatives>
@@ -690,20 +727,20 @@
       <type metamodel="/0/@metamodelDeclarations.2">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/sgraph/2.0.0#//Statement"/>
       </type>
-      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="Expression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
-      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.47"/>
+      <alternatives xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="AssignmentExpression">
       <type metamodel="/0/@metamodelDeclarations.0">
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="varRef" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -711,10 +748,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.48"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
           </elements>
         </elements>
       </alternatives>
@@ -724,7 +761,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
         <elements xsi:type="xtext:Group" cardinality="?">
           <elements xsi:type="xtext:Action" feature="condition" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -733,11 +770,11 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="?"/>
           <elements xsi:type="xtext:Assignment" feature="trueCase" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
           </elements>
           <elements xsi:type="xtext:Keyword" value=":"/>
           <elements xsi:type="xtext:Assignment" feature="falseCase" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
           </elements>
         </elements>
       </alternatives>
@@ -747,7 +784,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -756,7 +793,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="||"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.50"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
           </elements>
         </elements>
       </alternatives>
@@ -766,7 +803,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -775,7 +812,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="&amp;&amp;"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.51"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
           </elements>
         </elements>
       </alternatives>
@@ -785,7 +822,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -794,7 +831,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="!"/>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.52"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
           </elements>
         </elements>
       </alternatives>
@@ -804,7 +841,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -813,7 +850,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="^"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.53"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
           </elements>
         </elements>
       </alternatives>
@@ -823,7 +860,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -832,7 +869,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="|"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.54"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
           </elements>
         </elements>
       </alternatives>
@@ -842,7 +879,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -851,7 +888,7 @@
           </elements>
           <elements xsi:type="xtext:Keyword" value="&amp;"/>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.55"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
           </elements>
         </elements>
       </alternatives>
@@ -861,7 +898,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -869,10 +906,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.56"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
           </elements>
         </elements>
       </alternatives>
@@ -882,7 +919,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -890,10 +927,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.57"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
           </elements>
         </elements>
       </alternatives>
@@ -903,7 +940,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -911,10 +948,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.78"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.58"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
           </elements>
         </elements>
       </alternatives>
@@ -924,7 +961,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="leftOperand" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -932,10 +969,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.76"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.79"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="rightOperand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.59"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
           </elements>
         </elements>
       </alternatives>
@@ -945,7 +982,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
         <elements xsi:type="xtext:Group">
           <elements xsi:type="xtext:Action">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -953,10 +990,10 @@
             </type>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operator" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.77"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
           </elements>
           <elements xsi:type="xtext:Assignment" feature="operand" operator="=">
-            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.60"/>
+            <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
           </elements>
         </elements>
       </alternatives>
@@ -966,11 +1003,11 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.61"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.64"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="PrimitiveValueExpression">
@@ -984,7 +1021,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.67"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
         </elements>
       </alternatives>
     </rules>
@@ -993,7 +1030,7 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Expression"/>
       </type>
       <alternatives xsi:type="xtext:Group">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.63"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.66"/>
         <elements xsi:type="xtext:Group" cardinality="*">
           <elements xsi:type="xtext:Action" feature="owner" operator="=">
             <type metamodel="/0/@metamodelDeclarations.0">
@@ -1015,12 +1052,12 @@
             </elements>
             <elements xsi:type="xtext:Group" cardinality="?">
               <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
               </elements>
               <elements xsi:type="xtext:Group" cardinality="*">
                 <elements xsi:type="xtext:Keyword" value=","/>
                 <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                  <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+                  <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
                 </elements>
               </elements>
             </elements>
@@ -1053,12 +1090,12 @@
           </elements>
           <elements xsi:type="xtext:Group" cardinality="?">
             <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+              <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
             </elements>
             <elements xsi:type="xtext:Group" cardinality="*">
               <elements xsi:type="xtext:Keyword" value=","/>
               <elements xsi:type="xtext:Assignment" feature="args" operator="+=">
-                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+                <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
               </elements>
             </elements>
           </elements>
@@ -1079,7 +1116,7 @@
         <elements xsi:type="xtext:Keyword" value="valueof"/>
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.62"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.65"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=")"/>
       </alternatives>
@@ -1119,7 +1156,7 @@
         </elements>
         <elements xsi:type="xtext:Keyword" value="("/>
         <elements xsi:type="xtext:Assignment" feature="expression" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.46"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.49"/>
         </elements>
         <elements xsi:type="xtext:Keyword" value=")"/>
       </alternatives>
@@ -1129,11 +1166,11 @@
         <classifier xsi:type="ecore:EClass" href="http://www.yakindu.org/sct/statechart/SText#//Literal"/>
       </type>
       <alternatives xsi:type="xtext:Alternatives">
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.68"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.69"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.71"/>
-        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.70"/>
         <elements xsi:type="xtext:RuleCall" rule="/0/@rules.72"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.74"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.73"/>
+        <elements xsi:type="xtext:RuleCall" rule="/0/@rules.75"/>
       </alternatives>
     </rules>
     <rules xsi:type="xtext:ParserRule" name="BoolLiteral">
@@ -1147,7 +1184,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.80"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.83"/>
         </elements>
       </alternatives>
     </rules>
@@ -1177,7 +1214,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.82"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.85"/>
         </elements>
       </alternatives>
     </rules>
@@ -1192,7 +1229,7 @@
           </type>
         </elements>
         <elements xsi:type="xtext:Assignment" feature="value" operator="=">
-          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.81"/>
+          <terminal xsi:type="xtext:RuleCall" rule="/0/@rules.84"/>
         </elements>
       </alternatives>
     </rules>

+ 443 - 62
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parseTreeConstruction/STextParsetreeConstructor.java

@@ -64,42 +64,45 @@ protected class ThisRootNode extends RootToken {
 			case 30: return new ReactionTrigger_Group(this, this, 30, inst);
 			case 31: return new DefaultTrigger_Group(this, this, 31, inst);
 			case 32: return new ReactionEffect_Group(this, this, 32, inst);
-			case 33: return new EventSpec_Alternatives(this, this, 33, inst);
-			case 34: return new RegularEventSpec_EventAssignment(this, this, 34, inst);
-			case 35: return new TimeEventSpec_Group(this, this, 35, inst);
-			case 36: return new BuiltinEventSpec_Alternatives(this, this, 36, inst);
-			case 37: return new EntryEvent_Group(this, this, 37, inst);
-			case 38: return new ExitEvent_Group(this, this, 38, inst);
-			case 39: return new AlwaysEvent_Group(this, this, 39, inst);
-			case 40: return new EventRaisingExpression_Group(this, this, 40, inst);
-			case 41: return new StatementExpression_ExpressionParserRuleCall(this, this, 41, inst);
-			case 42: return new Expression_AssignmentExpressionParserRuleCall(this, this, 42, inst);
-			case 43: return new AssignmentExpression_Group(this, this, 43, inst);
-			case 44: return new ConditionalExpression_Group(this, this, 44, inst);
-			case 45: return new LogicalOrExpression_Group(this, this, 45, inst);
-			case 46: return new LogicalAndExpression_Group(this, this, 46, inst);
-			case 47: return new LogicalNotExpression_Alternatives(this, this, 47, inst);
-			case 48: return new BitwiseXorExpression_Group(this, this, 48, inst);
-			case 49: return new BitwiseOrExpression_Group(this, this, 49, inst);
-			case 50: return new BitwiseAndExpression_Group(this, this, 50, inst);
-			case 51: return new LogicalRelationExpression_Group(this, this, 51, inst);
-			case 52: return new ShiftExpression_Group(this, this, 52, inst);
-			case 53: return new NumericalAddSubtractExpression_Group(this, this, 53, inst);
-			case 54: return new NumericalMultiplyDivideExpression_Group(this, this, 54, inst);
-			case 55: return new NumericalUnaryExpression_Alternatives(this, this, 55, inst);
-			case 56: return new PrimaryExpression_Alternatives(this, this, 56, inst);
-			case 57: return new PrimitiveValueExpression_Group(this, this, 57, inst);
-			case 58: return new FeatureCall_Group(this, this, 58, inst);
-			case 59: return new ElementReferenceExpression_Group(this, this, 59, inst);
-			case 60: return new EventValueReferenceExpression_Group(this, this, 60, inst);
-			case 61: return new ActiveStateReferenceExpression_Group(this, this, 61, inst);
-			case 62: return new ParenthesizedExpression_Group(this, this, 62, inst);
-			case 63: return new Literal_Alternatives(this, this, 63, inst);
-			case 64: return new BoolLiteral_Group(this, this, 64, inst);
-			case 65: return new IntLiteral_Group(this, this, 65, inst);
-			case 66: return new RealLiteral_Group(this, this, 66, inst);
-			case 67: return new HexLiteral_Group(this, this, 67, inst);
-			case 68: return new StringLiteral_Group(this, this, 68, inst);
+			case 33: return new TransitionProperty_Alternatives(this, this, 33, inst);
+			case 34: return new EntryPointSpec_Group(this, this, 34, inst);
+			case 35: return new ExitPointSpec_Group(this, this, 35, inst);
+			case 36: return new EventSpec_Alternatives(this, this, 36, inst);
+			case 37: return new RegularEventSpec_EventAssignment(this, this, 37, inst);
+			case 38: return new TimeEventSpec_Group(this, this, 38, inst);
+			case 39: return new BuiltinEventSpec_Alternatives(this, this, 39, inst);
+			case 40: return new EntryEvent_Group(this, this, 40, inst);
+			case 41: return new ExitEvent_Group(this, this, 41, inst);
+			case 42: return new AlwaysEvent_Group(this, this, 42, inst);
+			case 43: return new EventRaisingExpression_Group(this, this, 43, inst);
+			case 44: return new StatementExpression_ExpressionParserRuleCall(this, this, 44, inst);
+			case 45: return new Expression_AssignmentExpressionParserRuleCall(this, this, 45, inst);
+			case 46: return new AssignmentExpression_Group(this, this, 46, inst);
+			case 47: return new ConditionalExpression_Group(this, this, 47, inst);
+			case 48: return new LogicalOrExpression_Group(this, this, 48, inst);
+			case 49: return new LogicalAndExpression_Group(this, this, 49, inst);
+			case 50: return new LogicalNotExpression_Alternatives(this, this, 50, inst);
+			case 51: return new BitwiseXorExpression_Group(this, this, 51, inst);
+			case 52: return new BitwiseOrExpression_Group(this, this, 52, inst);
+			case 53: return new BitwiseAndExpression_Group(this, this, 53, inst);
+			case 54: return new LogicalRelationExpression_Group(this, this, 54, inst);
+			case 55: return new ShiftExpression_Group(this, this, 55, inst);
+			case 56: return new NumericalAddSubtractExpression_Group(this, this, 56, inst);
+			case 57: return new NumericalMultiplyDivideExpression_Group(this, this, 57, inst);
+			case 58: return new NumericalUnaryExpression_Alternatives(this, this, 58, inst);
+			case 59: return new PrimaryExpression_Alternatives(this, this, 59, inst);
+			case 60: return new PrimitiveValueExpression_Group(this, this, 60, inst);
+			case 61: return new FeatureCall_Group(this, this, 61, inst);
+			case 62: return new ElementReferenceExpression_Group(this, this, 62, inst);
+			case 63: return new EventValueReferenceExpression_Group(this, this, 63, inst);
+			case 64: return new ActiveStateReferenceExpression_Group(this, this, 64, inst);
+			case 65: return new ParenthesizedExpression_Group(this, this, 65, inst);
+			case 66: return new Literal_Alternatives(this, this, 66, inst);
+			case 67: return new BoolLiteral_Group(this, this, 67, inst);
+			case 68: return new IntLiteral_Group(this, this, 68, inst);
+			case 69: return new RealLiteral_Group(this, this, 69, inst);
+			case 70: return new HexLiteral_Group(this, this, 70, inst);
+			case 71: return new StringLiteral_Group(this, this, 71, inst);
 			default: return null;
 		}	
 	}	
@@ -3515,7 +3518,6 @@ protected class Reaction_TransitionReactionParserRuleCall_1 extends RuleCallToke
 
 /************ begin Rule LocalReaction ****************
  *
- * //('#' properties=ReactionProperties)?;
  * LocalReaction:
  * 	trigger=ReactionTrigger => ("/" effect=ReactionEffect);
  *
@@ -3715,13 +3717,12 @@ protected class LocalReaction_EffectAssignment_1_0_1 extends AssignmentToken  {
 
 /************ begin Rule TransitionReaction ****************
  *
- * // ('#' properties=ReactionProperties)?;
  * TransitionReaction:
- * 	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
+ * 	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)? ("#" properties+=TransitionProperty*)?;
  *
  **/
 
-// {TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?
+// {TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)? ("#" properties+=TransitionProperty*)?
 protected class TransitionReaction_Group extends GroupToken {
 	
 	public TransitionReaction_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
@@ -3736,9 +3737,10 @@ protected class TransitionReaction_Group extends GroupToken {
     @Override
 	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
 		switch(index) {
-			case 0: return new TransitionReaction_Group_2(lastRuleCallOrigin, this, 0, inst);
-			case 1: return new TransitionReaction_TriggerAssignment_1(lastRuleCallOrigin, this, 1, inst);
-			case 2: return new TransitionReaction_TransitionReactionAction_0(lastRuleCallOrigin, this, 2, inst);
+			case 0: return new TransitionReaction_Group_3(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new TransitionReaction_Group_2(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new TransitionReaction_TriggerAssignment_1(lastRuleCallOrigin, this, 2, inst);
+			case 3: return new TransitionReaction_TransitionReactionAction_0(lastRuleCallOrigin, this, 3, inst);
 			default: return null;
 		}	
 	}
@@ -3916,6 +3918,100 @@ protected class TransitionReaction_EffectAssignment_2_1 extends AssignmentToken
 }
 
 
+// ("#" properties+=TransitionProperty*)?
+protected class TransitionReaction_Group_3 extends GroupToken {
+	
+	public TransitionReaction_Group_3(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getTransitionReactionAccess().getGroup_3();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TransitionReaction_PropertiesAssignment_3_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// "#"
+protected class TransitionReaction_NumberSignKeyword_3_0 extends KeywordToken  {
+	
+	public TransitionReaction_NumberSignKeyword_3_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TransitionReaction_Group_2(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new TransitionReaction_TriggerAssignment_1(lastRuleCallOrigin, this, 1, inst);
+			case 2: return new TransitionReaction_TransitionReactionAction_0(lastRuleCallOrigin, this, 2, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+// properties+=TransitionProperty*
+protected class TransitionReaction_PropertiesAssignment_3_1 extends AssignmentToken  {
+	
+	public TransitionReaction_PropertiesAssignment_3_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getTransitionReactionAccess().getPropertiesAssignment_3_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TransitionProperty_Alternatives(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("properties",false)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("properties");
+		if(value instanceof EObject) { // org::eclipse::xtext::impl::RuleCallImpl
+			IEObjectConsumer param = createEObjectConsumer((EObject)value);
+			if(param.isInstanceOf(grammarAccess.getTransitionPropertyRule().getType().getClassifier())) {
+				type = AssignmentType.PARSER_RULE_CALL;
+				element = grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0(); 
+				consumed = obj;
+				return param;
+			}
+		}
+		return null;
+	}
+
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		if(value == inst.getEObject() && !inst.isConsumed()) return null;
+		switch(index) {
+			case 0: return new TransitionReaction_PropertiesAssignment_3_1(lastRuleCallOrigin, next, actIndex, consumed);
+			case 1: return new TransitionReaction_NumberSignKeyword_3_0(lastRuleCallOrigin, next, actIndex, consumed);
+			default: return null;
+		}	
+	}	
+}
+
+
 
 /************ end Rule TransitionReaction ****************/
 
@@ -4630,7 +4726,6 @@ protected class DefaultTrigger_DefaultKeyword_1_0 extends KeywordToken  {
 
 /************ begin Rule ReactionEffect ****************
  *
- * // (';')?;
  * ReactionEffect returns sgraph::Effect:
  * 	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (";" actions+=(Expression | EventRaisingExpression))*;
  *
@@ -4854,19 +4949,312 @@ protected class ReactionEffect_ActionsAssignment_2_1 extends AssignmentToken  {
 /************ end Rule ReactionEffect ****************/
 
 
+/************ begin Rule TransitionProperty ****************
+ *
+ * TransitionProperty returns sgraph::ReactionProperty:
+ * 	EntryPointSpec | ExitPointSpec;
+ *
+ **/
+
+// EntryPointSpec | ExitPointSpec
+protected class TransitionProperty_Alternatives extends AlternativesToken {
+
+	public TransitionProperty_Alternatives(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Alternatives getGrammarElement() {
+		return grammarAccess.getTransitionPropertyAccess().getAlternatives();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new TransitionProperty_EntryPointSpecParserRuleCall_0(lastRuleCallOrigin, this, 0, inst);
+			case 1: return new TransitionProperty_ExitPointSpecParserRuleCall_1(lastRuleCallOrigin, this, 1, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getEntryPointSpecRule().getType().getClassifier() && 
+		   getEObject().eClass() != grammarAccess.getExitPointSpecRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// EntryPointSpec
+protected class TransitionProperty_EntryPointSpecParserRuleCall_0 extends RuleCallToken {
+	
+	public TransitionProperty_EntryPointSpecParserRuleCall_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EntryPointSpec_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getEntryPointSpecRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(EntryPointSpec_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+// ExitPointSpec
+protected class TransitionProperty_ExitPointSpecParserRuleCall_1 extends RuleCallToken {
+	
+	public TransitionProperty_ExitPointSpecParserRuleCall_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public RuleCall getGrammarElement() {
+		return grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExitPointSpec_Group(this, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExitPointSpecRule().getType().getClassifier())
+			return null;
+		if(checkForRecursion(ExitPointSpec_Group.class, eObjectConsumer)) return null;
+		return eObjectConsumer;
+	}
+	
+    @Override
+	public AbstractToken createFollowerAfterReturn(AbstractToken next,	int actIndex, int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(next, actIndex , index, inst);
+		}	
+	}	
+}
+
+
+/************ end Rule TransitionProperty ****************/
+
+
+/************ begin Rule EntryPointSpec ****************
+ *
+ * EntryPointSpec:
+ * 	">" entrypoint=ID;
+ *
+ **/
+
+// ">" entrypoint=ID
+protected class EntryPointSpec_Group extends GroupToken {
+	
+	public EntryPointSpec_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getEntryPointSpecAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EntryPointSpec_EntrypointAssignment_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getEntryPointSpecRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// ">"
+protected class EntryPointSpec_GreaterThanSignKeyword_0 extends KeywordToken  {
+	
+	public EntryPointSpec_GreaterThanSignKeyword_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+}
+
+// entrypoint=ID
+protected class EntryPointSpec_EntrypointAssignment_1 extends AssignmentToken  {
+	
+	public EntryPointSpec_EntrypointAssignment_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getEntryPointSpecAccess().getEntrypointAssignment_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new EntryPointSpec_GreaterThanSignKeyword_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("entrypoint",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("entrypoint");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0(), value, null)) {
+			type = AssignmentType.TERMINAL_RULE_CALL;
+			element = grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+
+/************ end Rule EntryPointSpec ****************/
+
+
+/************ begin Rule ExitPointSpec ****************
+ *
+ * ExitPointSpec:
+ * 	exitpoint=ID ">";
+ *
+ **/
+
+// exitpoint=ID ">"
+protected class ExitPointSpec_Group extends GroupToken {
+	
+	public ExitPointSpec_Group(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Group getGrammarElement() {
+		return grammarAccess.getExitPointSpecAccess().getGroup();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExitPointSpec_GreaterThanSignKeyword_1(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+    @Override
+	public IEObjectConsumer tryConsume() {
+		if(getEObject().eClass() != grammarAccess.getExitPointSpecRule().getType().getClassifier())
+			return null;
+		return eObjectConsumer;
+	}
+
+}
+
+// exitpoint=ID
+protected class ExitPointSpec_ExitpointAssignment_0 extends AssignmentToken  {
+	
+	public ExitPointSpec_ExitpointAssignment_0(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Assignment getGrammarElement() {
+		return grammarAccess.getExitPointSpecAccess().getExitpointAssignment_0();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			default: return lastRuleCallOrigin.createFollowerAfterReturn(this, index, index, inst);
+		}	
+	}
+
+    @Override	
+	public IEObjectConsumer tryConsume() {
+		if((value = eObjectConsumer.getConsumable("exitpoint",true)) == null) return null;
+		IEObjectConsumer obj = eObjectConsumer.cloneAndConsume("exitpoint");
+		if(valueSerializer.isValid(obj.getEObject(), grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0(), value, null)) {
+			type = AssignmentType.TERMINAL_RULE_CALL;
+			element = grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0();
+			return obj;
+		}
+		return null;
+	}
+
+}
+
+// ">"
+protected class ExitPointSpec_GreaterThanSignKeyword_1 extends KeywordToken  {
+	
+	public ExitPointSpec_GreaterThanSignKeyword_1(AbstractToken lastRuleCallOrigin, AbstractToken next, int transitionIndex, IEObjectConsumer eObjectConsumer) {
+		super(lastRuleCallOrigin, next, transitionIndex, eObjectConsumer);
+	}
+	
+	@Override
+	public Keyword getGrammarElement() {
+		return grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1();
+	}
+
+    @Override
+	public AbstractToken createFollower(int index, IEObjectConsumer inst) {
+		switch(index) {
+			case 0: return new ExitPointSpec_ExitpointAssignment_0(lastRuleCallOrigin, this, 0, inst);
+			default: return null;
+		}	
+	}
+
+}
+
+
+/************ end Rule ExitPointSpec ****************/
+
+
 /************ begin Rule EventSpec ****************
  *
- * //ReactionProperties:
- * //	{ReactionProperties} (properties+=ReactionProperty)*;
- * //
- * //ReactionProperty:
- * //	EntryPointSpec | ExitPointSpec;
- * //
- * //EntryPointSpec:
- * //	'>' entrypoint=[Entrypoint|FQN];
- * //
- * //ExitPointSpec:
- * //	exitpoint=[Exitpoint|FQN] '>';
  * EventSpec:
  * 	RegularEventSpec | TimeEventSpec | BuiltinEventSpec;
  *
@@ -5234,8 +5622,6 @@ protected class TimeEventSpec_UnitAssignment_2 extends AssignmentToken  {
 
 /************ begin Rule BuiltinEventSpec ****************
  *
- * //TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
- * // | DefaultEvent | OnCycleEvent ;
  * BuiltinEventSpec:
  * 	EntryEvent | ExitEvent | AlwaysEvent;
  *
@@ -5564,8 +5950,6 @@ protected class ExitEvent_ExitKeyword_1 extends KeywordToken  {
 
 /************ begin Rule AlwaysEvent ****************
  *
- * //OnCycleEvent:
- * //	{OnCycleEvent} 'oncycle'; 
  * AlwaysEvent:
  * 	{AlwaysEvent} ("always" | "oncycle");
  *
@@ -5677,9 +6061,6 @@ protected class AlwaysEvent_AlwaysKeyword_1_0 extends KeywordToken  {
 
 /************ begin Rule EventRaisingExpression ****************
  *
- * //DefaultEvent:
- * //	{DefaultEvent} ('default' | 'else')
- * //;
  * // ****************
  * // Expression Grammar
  * // ****************

+ 149 - 1
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.g

@@ -1580,7 +1580,29 @@ ruleTransitionReaction returns [EObject current=null]
 	    }
 
 )
-))?)
+))?(	otherlv_4='#' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTransitionReactionAccess().getNumberSignKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTransitionReactionAccess().getPropertiesTransitionPropertyParserRuleCall_3_1_0()); 
+	    }
+		lv_properties_5_0=ruleTransitionProperty		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTransitionReactionRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_5_0, 
+        		"TransitionProperty");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)?)
 ;
 
 
@@ -1888,6 +1910,132 @@ ruleReactionEffect returns [EObject current=null]
 
 
 
+// Entry rule entryRuleTransitionProperty
+entryRuleTransitionProperty returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTransitionPropertyRule()); }
+	 iv_ruleTransitionProperty=ruleTransitionProperty 
+	 { $current=$iv_ruleTransitionProperty.current; } 
+	 EOF 
+;
+
+// Rule TransitionProperty
+ruleTransitionProperty returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTransitionPropertyAccess().getEntryPointSpecParserRuleCall_0()); 
+    }
+    this_EntryPointSpec_0=ruleEntryPointSpec
+    { 
+        $current = $this_EntryPointSpec_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTransitionPropertyAccess().getExitPointSpecParserRuleCall_1()); 
+    }
+    this_ExitPointSpec_1=ruleExitPointSpec
+    { 
+        $current = $this_ExitPointSpec_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEntryPointSpec
+entryRuleEntryPointSpec returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEntryPointSpecRule()); }
+	 iv_ruleEntryPointSpec=ruleEntryPointSpec 
+	 { $current=$iv_ruleEntryPointSpec.current; } 
+	 EOF 
+;
+
+// Rule EntryPointSpec
+ruleEntryPointSpec returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='>' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEntryPointSpecAccess().getGreaterThanSignKeyword_0());
+    }
+(
+(
+		lv_entrypoint_1_0=RULE_ID
+		{
+			newLeafNode(lv_entrypoint_1_0, grammarAccess.getEntryPointSpecAccess().getEntrypointIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntryPointSpecRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"entrypoint",
+        		lv_entrypoint_1_0, 
+        		"ID");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleExitPointSpec
+entryRuleExitPointSpec returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getExitPointSpecRule()); }
+	 iv_ruleExitPointSpec=ruleExitPointSpec 
+	 { $current=$iv_ruleExitPointSpec.current; } 
+	 EOF 
+;
+
+// Rule ExitPointSpec
+ruleExitPointSpec returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_exitpoint_0_0=RULE_ID
+		{
+			newLeafNode(lv_exitpoint_0_0, grammarAccess.getExitPointSpecAccess().getExitpointIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getExitPointSpecRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"exitpoint",
+        		lv_exitpoint_0_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_1='>' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getExitPointSpecAccess().getGreaterThanSignKeyword_1());
+    }
+)
+;
+
+
+
+
+
 // Entry rule entryRuleEventSpec
 entryRuleEventSpec returns [EObject current=null] 
 	:

+ 43 - 41
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSText.tokens

@@ -31,8 +31,8 @@ T__16=16
 T__51=51
 T__15=15
 T__52=52
-T__53=53
 T__18=18
+T__53=53
 T__54=54
 T__17=17
 T__14=14
@@ -49,6 +49,7 @@ T__81=81
 T__47=47
 T__82=82
 T__44=44
+T__83=83
 T__45=45
 T__48=48
 T__49=49
@@ -77,72 +78,73 @@ T__73=73
 T__79=79
 T__78=78
 T__77=77
-'>='=76
+'>='=77
 'out'=32
 'internal'=20
-'~'=72
-'=='=77
+'#'=44
+'~'=74
+'=='=78
 '/'=43
-'/='=57
-'%='=58
-'>'=75
+'/='=59
+'%='=60
 'event'=21
-'||'=48
-'&&'=49
-';'=46
+'>'=48
+'||'=50
+'&&'=51
+';'=47
 'raise'=39
-'+'=68
+'+'=70
 'active'=41
 '.'=42
-'^'=51
-'>>'=67
+'^'=53
+'>>'=69
 'else'=34
-'^='=64
-'+='=59
+'^='=66
+'+='=61
 'readonly'=23
-'>>='=62
-'?'=47
+'>>='=64
+'?'=49
 'var'=22
-'s'=79
-'&='=63
+'s'=80
+'&='=65
 '('=27
 ':'=19
-'-'=69
+'-'=71
 'exit'=36
 ','=28
 'default'=33
 'in'=31
-'-='=60
-']'=45
-'<<='=61
-'ns'=82
-'!'=50
-'|'=52
-'ms'=80
-'every'=55
-'|='=65
+'-='=62
+'<<='=63
+']'=46
+'ns'=83
+'!'=52
+'|'=54
+'ms'=81
+'every'=57
+'|='=67
 '@@statechart@@'=14
 '@@state@@'=15
 '='=25
 'always'=37
-')'=29
 'oncycle'=38
-'*='=56
+')'=29
+'*='=58
 'entry'=35
-'%'=71
+'%'=73
 'operation'=26
-'after'=54
-'us'=81
+'after'=56
+'us'=82
 'namespace'=17
-'<<'=66
-'<='=74
-'!='=78
+'<<'=68
+'<='=76
+'!='=79
 '@@transition@@'=16
 'valueof'=40
 'external'=24
-'<'=73
-'*'=70
-'['=44
+'<'=75
+'*'=72
+'['=45
 'local'=30
-'&'=53
+'&'=55
 'interface'=18

Diferenças do arquivo suprimidas por serem muito extensas
+ 433 - 400
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextLexer.java


Diferenças do arquivo suprimidas por serem muito extensas
+ 2109 - 1645
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/parser/antlr/internal/InternalSTextParser.java


+ 120 - 45
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/services/STextGrammarAccess.java

@@ -933,7 +933,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Assignment cEffectAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
 		private final RuleCall cEffectReactionEffectParserRuleCall_1_0_1_0 = (RuleCall)cEffectAssignment_1_0_1.eContents().get(0);
 		
-		////('#' properties=ReactionProperties)?;
 		//LocalReaction:
 		//	trigger=ReactionTrigger => ("/" effect=ReactionEffect);
 		public ParserRule getRule() { return rule; }
@@ -973,13 +972,16 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Keyword cSolidusKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
 		private final Assignment cEffectAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
 		private final RuleCall cEffectReactionEffectParserRuleCall_2_1_0 = (RuleCall)cEffectAssignment_2_1.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cNumberSignKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cPropertiesTransitionPropertyParserRuleCall_3_1_0 = (RuleCall)cPropertiesAssignment_3_1.eContents().get(0);
 		
-		//// ('#' properties=ReactionProperties)?;
 		//TransitionReaction:
-		//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
+		//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)? ("#" properties+=TransitionProperty*)?;
 		public ParserRule getRule() { return rule; }
 
-		//{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?
+		//{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)? ("#" properties+=TransitionProperty*)?
 		public Group getGroup() { return cGroup; }
 
 		//{TransitionReaction}
@@ -1002,6 +1004,18 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 
 		//ReactionEffect
 		public RuleCall getEffectReactionEffectParserRuleCall_2_1_0() { return cEffectReactionEffectParserRuleCall_2_1_0; }
+
+		//("#" properties+=TransitionProperty*)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"#"
+		public Keyword getNumberSignKeyword_3_0() { return cNumberSignKeyword_3_0; }
+
+		//properties+=TransitionProperty*
+		public Assignment getPropertiesAssignment_3_1() { return cPropertiesAssignment_3_1; }
+
+		//TransitionProperty
+		public RuleCall getPropertiesTransitionPropertyParserRuleCall_3_1_0() { return cPropertiesTransitionPropertyParserRuleCall_3_1_0; }
 	}
 
 	public class StextTriggerElements extends AbstractParserRuleElementFinder {
@@ -1158,7 +1172,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cActionsExpressionParserRuleCall_2_1_0_0 = (RuleCall)cActionsAlternatives_2_1_0.eContents().get(0);
 		private final RuleCall cActionsEventRaisingExpressionParserRuleCall_2_1_0_1 = (RuleCall)cActionsAlternatives_2_1_0.eContents().get(1);
 		
-		//// (';')?;
 		//ReactionEffect returns sgraph::Effect:
 		//	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (";" actions+=(Expression | EventRaisingExpression))*;
 		public ParserRule getRule() { return rule; }
@@ -1200,6 +1213,74 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		public RuleCall getActionsEventRaisingExpressionParserRuleCall_2_1_0_1() { return cActionsEventRaisingExpressionParserRuleCall_2_1_0_1; }
 	}
 
+	public class TransitionPropertyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TransitionProperty");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cEntryPointSpecParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cExitPointSpecParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//TransitionProperty returns sgraph::ReactionProperty:
+		//	EntryPointSpec | ExitPointSpec;
+		public ParserRule getRule() { return rule; }
+
+		//EntryPointSpec | ExitPointSpec
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//EntryPointSpec
+		public RuleCall getEntryPointSpecParserRuleCall_0() { return cEntryPointSpecParserRuleCall_0; }
+
+		//ExitPointSpec
+		public RuleCall getExitPointSpecParserRuleCall_1() { return cExitPointSpecParserRuleCall_1; }
+	}
+
+	public class EntryPointSpecElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntryPointSpec");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cGreaterThanSignKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cEntrypointAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cEntrypointIDTerminalRuleCall_1_0 = (RuleCall)cEntrypointAssignment_1.eContents().get(0);
+		
+		//EntryPointSpec:
+		//	">" entrypoint=ID;
+		public ParserRule getRule() { return rule; }
+
+		//">" entrypoint=ID
+		public Group getGroup() { return cGroup; }
+
+		//">"
+		public Keyword getGreaterThanSignKeyword_0() { return cGreaterThanSignKeyword_0; }
+
+		//entrypoint=ID
+		public Assignment getEntrypointAssignment_1() { return cEntrypointAssignment_1; }
+
+		//ID
+		public RuleCall getEntrypointIDTerminalRuleCall_1_0() { return cEntrypointIDTerminalRuleCall_1_0; }
+	}
+
+	public class ExitPointSpecElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ExitPointSpec");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cExitpointAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cExitpointIDTerminalRuleCall_0_0 = (RuleCall)cExitpointAssignment_0.eContents().get(0);
+		private final Keyword cGreaterThanSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		
+		//ExitPointSpec:
+		//	exitpoint=ID ">";
+		public ParserRule getRule() { return rule; }
+
+		//exitpoint=ID ">"
+		public Group getGroup() { return cGroup; }
+
+		//exitpoint=ID
+		public Assignment getExitpointAssignment_0() { return cExitpointAssignment_0; }
+
+		//ID
+		public RuleCall getExitpointIDTerminalRuleCall_0_0() { return cExitpointIDTerminalRuleCall_0_0; }
+
+		//">"
+		public Keyword getGreaterThanSignKeyword_1() { return cGreaterThanSignKeyword_1; }
+	}
+
 	public class EventSpecElements extends AbstractParserRuleElementFinder {
 		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EventSpec");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
@@ -1207,17 +1288,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cTimeEventSpecParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cBuiltinEventSpecParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		////ReactionProperties:
-		////	{ReactionProperties} (properties+=ReactionProperty)*;
-		////
-		////ReactionProperty:
-		////	EntryPointSpec | ExitPointSpec;
-		////
-		////EntryPointSpec:
-		////	'>' entrypoint=[Entrypoint|FQN];
-		////
-		////ExitPointSpec:
-		////	exitpoint=[Exitpoint|FQN] '>';
 		//EventSpec:
 		//	RegularEventSpec | TimeEventSpec | BuiltinEventSpec;
 		public ParserRule getRule() { return rule; }
@@ -1295,8 +1365,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final RuleCall cExitEventParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
 		private final RuleCall cAlwaysEventParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
 		
-		////TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
-		//// | DefaultEvent | OnCycleEvent ;
 		//BuiltinEventSpec:
 		//	EntryEvent | ExitEvent | AlwaysEvent;
 		public ParserRule getRule() { return rule; }
@@ -1362,8 +1430,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Keyword cAlwaysKeyword_1_0 = (Keyword)cAlternatives_1.eContents().get(0);
 		private final Keyword cOncycleKeyword_1_1 = (Keyword)cAlternatives_1.eContents().get(1);
 		
-		////OnCycleEvent:
-		////	{OnCycleEvent} 'oncycle'; 
 		//AlwaysEvent:
 		//	{AlwaysEvent} ("always" | "oncycle");
 		public ParserRule getRule() { return rule; }
@@ -1396,9 +1462,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		private final Assignment cValueAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
 		private final RuleCall cValueExpressionParserRuleCall_3_1_0 = (RuleCall)cValueAssignment_3_1.eContents().get(0);
 		
-		////DefaultEvent:
-		////	{DefaultEvent} ('default' | 'else')
-		////;
 		//// ****************
 		//// Expression Grammar
 		//// ****************
@@ -2893,6 +2956,9 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 	private ReactionTriggerElements pReactionTrigger;
 	private DefaultTriggerElements pDefaultTrigger;
 	private ReactionEffectElements pReactionEffect;
+	private TransitionPropertyElements pTransitionProperty;
+	private EntryPointSpecElements pEntryPointSpec;
+	private ExitPointSpecElements pExitPointSpec;
 	private EventSpecElements pEventSpec;
 	private RegularEventSpecElements pRegularEventSpec;
 	private TimeEventSpecElements pTimeEventSpec;
@@ -3306,7 +3372,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getReactionAccess().getRule();
 	}
 
-	////('#' properties=ReactionProperties)?;
 	//LocalReaction:
 	//	trigger=ReactionTrigger => ("/" effect=ReactionEffect);
 	public LocalReactionElements getLocalReactionAccess() {
@@ -3317,9 +3382,8 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getLocalReactionAccess().getRule();
 	}
 
-	//// ('#' properties=ReactionProperties)?;
 	//TransitionReaction:
-	//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)?;
+	//	{TransitionReaction} trigger=StextTrigger? ("/" effect=ReactionEffect)? ("#" properties+=TransitionProperty*)?;
 	public TransitionReactionElements getTransitionReactionAccess() {
 		return (pTransitionReaction != null) ? pTransitionReaction : (pTransitionReaction = new TransitionReactionElements());
 	}
@@ -3359,7 +3423,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getDefaultTriggerAccess().getRule();
 	}
 
-	//// (';')?;
 	//ReactionEffect returns sgraph::Effect:
 	//	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (";" actions+=(Expression | EventRaisingExpression))*;
 	public ReactionEffectElements getReactionEffectAccess() {
@@ -3370,17 +3433,36 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getReactionEffectAccess().getRule();
 	}
 
-	////ReactionProperties:
-	////	{ReactionProperties} (properties+=ReactionProperty)*;
-	////
-	////ReactionProperty:
-	////	EntryPointSpec | ExitPointSpec;
-	////
-	////EntryPointSpec:
-	////	'>' entrypoint=[Entrypoint|FQN];
-	////
-	////ExitPointSpec:
-	////	exitpoint=[Exitpoint|FQN] '>';
+	//TransitionProperty returns sgraph::ReactionProperty:
+	//	EntryPointSpec | ExitPointSpec;
+	public TransitionPropertyElements getTransitionPropertyAccess() {
+		return (pTransitionProperty != null) ? pTransitionProperty : (pTransitionProperty = new TransitionPropertyElements());
+	}
+	
+	public ParserRule getTransitionPropertyRule() {
+		return getTransitionPropertyAccess().getRule();
+	}
+
+	//EntryPointSpec:
+	//	">" entrypoint=ID;
+	public EntryPointSpecElements getEntryPointSpecAccess() {
+		return (pEntryPointSpec != null) ? pEntryPointSpec : (pEntryPointSpec = new EntryPointSpecElements());
+	}
+	
+	public ParserRule getEntryPointSpecRule() {
+		return getEntryPointSpecAccess().getRule();
+	}
+
+	//ExitPointSpec:
+	//	exitpoint=ID ">";
+	public ExitPointSpecElements getExitPointSpecAccess() {
+		return (pExitPointSpec != null) ? pExitPointSpec : (pExitPointSpec = new ExitPointSpecElements());
+	}
+	
+	public ParserRule getExitPointSpecRule() {
+		return getExitPointSpecAccess().getRule();
+	}
+
 	//EventSpec:
 	//	RegularEventSpec | TimeEventSpec | BuiltinEventSpec;
 	public EventSpecElements getEventSpecAccess() {
@@ -3422,8 +3504,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getTimeEventTypeAccess().getRule();
 	}
 
-	////TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
-	//// | DefaultEvent | OnCycleEvent ;
 	//BuiltinEventSpec:
 	//	EntryEvent | ExitEvent | AlwaysEvent;
 	public BuiltinEventSpecElements getBuiltinEventSpecAccess() {
@@ -3454,8 +3534,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getExitEventAccess().getRule();
 	}
 
-	////OnCycleEvent:
-	////	{OnCycleEvent} 'oncycle'; 
 	//AlwaysEvent:
 	//	{AlwaysEvent} ("always" | "oncycle");
 	public AlwaysEventElements getAlwaysEventAccess() {
@@ -3466,9 +3544,6 @@ public class STextGrammarAccess extends AbstractGrammarElementFinder {
 		return getAlwaysEventAccess().getRule();
 	}
 
-	////DefaultEvent:
-	////	{DefaultEvent} ('default' | 'else')
-	////;
 	//// ****************
 	//// Expression Grammar
 	//// ****************

+ 51 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/EntryPointSpec.java

@@ -0,0 +1,51 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext;
+
+import org.yakindu.sct.model.sgraph.ReactionProperty;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Entry Point Spec</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.EntryPointSpec#getEntrypoint <em>Entrypoint</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getEntryPointSpec()
+ * @model
+ * @generated
+ */
+public interface EntryPointSpec extends ReactionProperty
+{
+  /**
+   * Returns the value of the '<em><b>Entrypoint</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Entrypoint</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Entrypoint</em>' attribute.
+   * @see #setEntrypoint(String)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getEntryPointSpec_Entrypoint()
+   * @model
+   * @generated
+   */
+  String getEntrypoint();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.EntryPointSpec#getEntrypoint <em>Entrypoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Entrypoint</em>' attribute.
+   * @see #getEntrypoint()
+   * @generated
+   */
+  void setEntrypoint(String value);
+
+} // EntryPointSpec

+ 51 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/ExitPointSpec.java

@@ -0,0 +1,51 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext;
+
+import org.yakindu.sct.model.sgraph.ReactionProperty;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Exit Point Spec</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.ExitPointSpec#getExitpoint <em>Exitpoint</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.yakindu.sct.model.stext.stext.StextPackage#getExitPointSpec()
+ * @model
+ * @generated
+ */
+public interface ExitPointSpec extends ReactionProperty
+{
+  /**
+   * Returns the value of the '<em><b>Exitpoint</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Exitpoint</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Exitpoint</em>' attribute.
+   * @see #setExitpoint(String)
+   * @see org.yakindu.sct.model.stext.stext.StextPackage#getExitPointSpec_Exitpoint()
+   * @model
+   * @generated
+   */
+  String getExitpoint();
+
+  /**
+   * Sets the value of the '{@link org.yakindu.sct.model.stext.stext.ExitPointSpec#getExitpoint <em>Exitpoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Exitpoint</em>' attribute.
+   * @see #getExitpoint()
+   * @generated
+   */
+  void setExitpoint(String value);
+
+} // ExitPointSpec

+ 18 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextFactory.java

@@ -166,6 +166,24 @@ public interface StextFactory extends EFactory
    */
   TransitionReaction createTransitionReaction();
 
+  /**
+   * Returns a new object of class '<em>Entry Point Spec</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Entry Point Spec</em>'.
+   * @generated
+   */
+  EntryPointSpec createEntryPointSpec();
+
+  /**
+   * Returns a new object of class '<em>Exit Point Spec</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Exit Point Spec</em>'.
+   * @generated
+   */
+  ExitPointSpec createExitPointSpec();
+
   /**
    * Returns a new object of class '<em>Event Spec</em>'.
    * <!-- begin-user-doc -->

+ 200 - 48
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/StextPackage.java

@@ -650,6 +650,15 @@ public interface StextPackage extends EPackage
    */
   int LOCAL_REACTION__EFFECT = SGraphPackage.DECLARATION_FEATURE_COUNT + 1;
 
+  /**
+   * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int LOCAL_REACTION__PROPERTIES = SGraphPackage.DECLARATION_FEATURE_COUNT + 2;
+
   /**
    * The number of structural features of the '<em>Local Reaction</em>' class.
    * <!-- begin-user-doc -->
@@ -657,7 +666,7 @@ public interface StextPackage extends EPackage
    * @generated
    * @ordered
    */
-  int LOCAL_REACTION_FEATURE_COUNT = SGraphPackage.DECLARATION_FEATURE_COUNT + 2;
+  int LOCAL_REACTION_FEATURE_COUNT = SGraphPackage.DECLARATION_FEATURE_COUNT + 3;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.TransitionReactionImpl <em>Transition Reaction</em>}' class.
@@ -687,6 +696,15 @@ public interface StextPackage extends EPackage
    */
   int TRANSITION_REACTION__EFFECT = SGraphPackage.REACTION__EFFECT;
 
+  /**
+   * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int TRANSITION_REACTION__PROPERTIES = SGraphPackage.REACTION__PROPERTIES;
+
   /**
    * The number of structural features of the '<em>Transition Reaction</em>' class.
    * <!-- begin-user-doc -->
@@ -696,6 +714,62 @@ public interface StextPackage extends EPackage
    */
   int TRANSITION_REACTION_FEATURE_COUNT = SGraphPackage.REACTION_FEATURE_COUNT + 0;
 
+  /**
+   * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.EntryPointSpecImpl <em>Entry Point Spec</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.yakindu.sct.model.stext.stext.impl.EntryPointSpecImpl
+   * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEntryPointSpec()
+   * @generated
+   */
+  int ENTRY_POINT_SPEC = 16;
+
+  /**
+   * The feature id for the '<em><b>Entrypoint</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int ENTRY_POINT_SPEC__ENTRYPOINT = SGraphPackage.REACTION_PROPERTY_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Entry Point Spec</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int ENTRY_POINT_SPEC_FEATURE_COUNT = SGraphPackage.REACTION_PROPERTY_FEATURE_COUNT + 1;
+
+  /**
+   * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.ExitPointSpecImpl <em>Exit Point Spec</em>}' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see org.yakindu.sct.model.stext.stext.impl.ExitPointSpecImpl
+   * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getExitPointSpec()
+   * @generated
+   */
+  int EXIT_POINT_SPEC = 17;
+
+  /**
+   * The feature id for the '<em><b>Exitpoint</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int EXIT_POINT_SPEC__EXITPOINT = SGraphPackage.REACTION_PROPERTY_FEATURE_COUNT + 0;
+
+  /**
+   * The number of structural features of the '<em>Exit Point Spec</em>' class.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   * @ordered
+   */
+  int EXIT_POINT_SPEC_FEATURE_COUNT = SGraphPackage.REACTION_PROPERTY_FEATURE_COUNT + 1;
+
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.impl.EventSpecImpl <em>Event Spec</em>}' class.
    * <!-- begin-user-doc -->
@@ -704,7 +778,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEventSpec()
    * @generated
    */
-  int EVENT_SPEC = 16;
+  int EVENT_SPEC = 18;
 
   /**
    * The number of structural features of the '<em>Event Spec</em>' class.
@@ -723,7 +797,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getRegularEventSpec()
    * @generated
    */
-  int REGULAR_EVENT_SPEC = 17;
+  int REGULAR_EVENT_SPEC = 19;
 
   /**
    * The feature id for the '<em><b>Event</b></em>' containment reference.
@@ -751,7 +825,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getTimeEventSpec()
    * @generated
    */
-  int TIME_EVENT_SPEC = 18;
+  int TIME_EVENT_SPEC = 20;
 
   /**
    * The feature id for the '<em><b>Type</b></em>' attribute.
@@ -797,7 +871,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBuiltinEventSpec()
    * @generated
    */
-  int BUILTIN_EVENT_SPEC = 19;
+  int BUILTIN_EVENT_SPEC = 21;
 
   /**
    * The number of structural features of the '<em>Builtin Event Spec</em>' class.
@@ -816,7 +890,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEntryEvent()
    * @generated
    */
-  int ENTRY_EVENT = 20;
+  int ENTRY_EVENT = 22;
 
   /**
    * The number of structural features of the '<em>Entry Event</em>' class.
@@ -835,7 +909,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getExitEvent()
    * @generated
    */
-  int EXIT_EVENT = 21;
+  int EXIT_EVENT = 23;
 
   /**
    * The number of structural features of the '<em>Exit Event</em>' class.
@@ -854,7 +928,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAlwaysEvent()
    * @generated
    */
-  int ALWAYS_EVENT = 22;
+  int ALWAYS_EVENT = 24;
 
   /**
    * The number of structural features of the '<em>Always Event</em>' class.
@@ -873,7 +947,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getExpression()
    * @generated
    */
-  int EXPRESSION = 23;
+  int EXPRESSION = 25;
 
   /**
    * The number of structural features of the '<em>Expression</em>' class.
@@ -892,7 +966,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLiteral()
    * @generated
    */
-  int LITERAL = 24;
+  int LITERAL = 26;
 
   /**
    * The number of structural features of the '<em>Literal</em>' class.
@@ -911,7 +985,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBoolLiteral()
    * @generated
    */
-  int BOOL_LITERAL = 25;
+  int BOOL_LITERAL = 27;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -939,7 +1013,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getIntLiteral()
    * @generated
    */
-  int INT_LITERAL = 26;
+  int INT_LITERAL = 28;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -967,7 +1041,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getRealLiteral()
    * @generated
    */
-  int REAL_LITERAL = 27;
+  int REAL_LITERAL = 29;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -995,7 +1069,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getHexLiteral()
    * @generated
    */
-  int HEX_LITERAL = 28;
+  int HEX_LITERAL = 30;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1023,7 +1097,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getStringLiteral()
    * @generated
    */
-  int STRING_LITERAL = 29;
+  int STRING_LITERAL = 31;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' attribute.
@@ -1051,7 +1125,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getSimpleScope()
    * @generated
    */
-  int SIMPLE_SCOPE = 30;
+  int SIMPLE_SCOPE = 32;
 
   /**
    * The feature id for the '<em><b>Declarations</b></em>' containment reference list.
@@ -1097,7 +1171,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getReactionTrigger()
    * @generated
    */
-  int REACTION_TRIGGER = 31;
+  int REACTION_TRIGGER = 33;
 
   /**
    * The feature id for the '<em><b>Triggers</b></em>' containment reference list.
@@ -1134,7 +1208,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDefaultTrigger()
    * @generated
    */
-  int DEFAULT_TRIGGER = 32;
+  int DEFAULT_TRIGGER = 34;
 
   /**
    * The number of structural features of the '<em>Default Trigger</em>' class.
@@ -1153,7 +1227,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getReactionEffect()
    * @generated
    */
-  int REACTION_EFFECT = 33;
+  int REACTION_EFFECT = 35;
 
   /**
    * The feature id for the '<em><b>Actions</b></em>' containment reference list.
@@ -1181,7 +1255,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEventRaisingExpression()
    * @generated
    */
-  int EVENT_RAISING_EXPRESSION = 34;
+  int EVENT_RAISING_EXPRESSION = 36;
 
   /**
    * The feature id for the '<em><b>Event</b></em>' containment reference.
@@ -1218,7 +1292,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAssignmentExpression()
    * @generated
    */
-  int ASSIGNMENT_EXPRESSION = 35;
+  int ASSIGNMENT_EXPRESSION = 37;
 
   /**
    * The feature id for the '<em><b>Var Ref</b></em>' containment reference.
@@ -1264,7 +1338,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getConditionalExpression()
    * @generated
    */
-  int CONDITIONAL_EXPRESSION = 36;
+  int CONDITIONAL_EXPRESSION = 38;
 
   /**
    * The feature id for the '<em><b>Condition</b></em>' containment reference.
@@ -1310,7 +1384,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalOrExpression()
    * @generated
    */
-  int LOGICAL_OR_EXPRESSION = 37;
+  int LOGICAL_OR_EXPRESSION = 39;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1347,7 +1421,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalAndExpression()
    * @generated
    */
-  int LOGICAL_AND_EXPRESSION = 38;
+  int LOGICAL_AND_EXPRESSION = 40;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1384,7 +1458,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalNotExpression()
    * @generated
    */
-  int LOGICAL_NOT_EXPRESSION = 39;
+  int LOGICAL_NOT_EXPRESSION = 41;
 
   /**
    * The feature id for the '<em><b>Operand</b></em>' containment reference.
@@ -1412,7 +1486,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseXorExpression()
    * @generated
    */
-  int BITWISE_XOR_EXPRESSION = 40;
+  int BITWISE_XOR_EXPRESSION = 42;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1449,7 +1523,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseOrExpression()
    * @generated
    */
-  int BITWISE_OR_EXPRESSION = 41;
+  int BITWISE_OR_EXPRESSION = 43;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1486,7 +1560,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getBitwiseAndExpression()
    * @generated
    */
-  int BITWISE_AND_EXPRESSION = 42;
+  int BITWISE_AND_EXPRESSION = 44;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1523,7 +1597,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getLogicalRelationExpression()
    * @generated
    */
-  int LOGICAL_RELATION_EXPRESSION = 43;
+  int LOGICAL_RELATION_EXPRESSION = 45;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1569,7 +1643,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getShiftExpression()
    * @generated
    */
-  int SHIFT_EXPRESSION = 44;
+  int SHIFT_EXPRESSION = 46;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1615,7 +1689,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalAddSubtractExpression()
    * @generated
    */
-  int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 45;
+  int NUMERICAL_ADD_SUBTRACT_EXPRESSION = 47;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1661,7 +1735,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalMultiplyDivideExpression()
    * @generated
    */
-  int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 46;
+  int NUMERICAL_MULTIPLY_DIVIDE_EXPRESSION = 48;
 
   /**
    * The feature id for the '<em><b>Left Operand</b></em>' containment reference.
@@ -1707,7 +1781,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getNumericalUnaryExpression()
    * @generated
    */
-  int NUMERICAL_UNARY_EXPRESSION = 47;
+  int NUMERICAL_UNARY_EXPRESSION = 49;
 
   /**
    * The feature id for the '<em><b>Operator</b></em>' attribute.
@@ -1744,7 +1818,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getPrimitiveValueExpression()
    * @generated
    */
-  int PRIMITIVE_VALUE_EXPRESSION = 48;
+  int PRIMITIVE_VALUE_EXPRESSION = 50;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' containment reference.
@@ -1772,7 +1846,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getFeatureCall()
    * @generated
    */
-  int FEATURE_CALL = 49;
+  int FEATURE_CALL = 51;
 
   /**
    * The feature id for the '<em><b>Owner</b></em>' containment reference.
@@ -1827,7 +1901,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getElementReferenceExpression()
    * @generated
    */
-  int ELEMENT_REFERENCE_EXPRESSION = 50;
+  int ELEMENT_REFERENCE_EXPRESSION = 52;
 
   /**
    * The feature id for the '<em><b>Reference</b></em>' reference.
@@ -1873,7 +1947,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEventValueReferenceExpression()
    * @generated
    */
-  int EVENT_VALUE_REFERENCE_EXPRESSION = 51;
+  int EVENT_VALUE_REFERENCE_EXPRESSION = 53;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' containment reference.
@@ -1901,7 +1975,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getActiveStateReferenceExpression()
    * @generated
    */
-  int ACTIVE_STATE_REFERENCE_EXPRESSION = 52;
+  int ACTIVE_STATE_REFERENCE_EXPRESSION = 54;
 
   /**
    * The feature id for the '<em><b>Value</b></em>' reference.
@@ -1929,7 +2003,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getParenthesizedExpression()
    * @generated
    */
-  int PARENTHESIZED_EXPRESSION = 53;
+  int PARENTHESIZED_EXPRESSION = 55;
 
   /**
    * The feature id for the '<em><b>Expression</b></em>' containment reference.
@@ -1957,7 +2031,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getDirection()
    * @generated
    */
-  int DIRECTION = 54;
+  int DIRECTION = 56;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.TimeEventType <em>Time Event Type</em>}' enum.
@@ -1967,7 +2041,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getTimeEventType()
    * @generated
    */
-  int TIME_EVENT_TYPE = 55;
+  int TIME_EVENT_TYPE = 57;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.AssignmentOperator <em>Assignment Operator</em>}' enum.
@@ -1977,7 +2051,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAssignmentOperator()
    * @generated
    */
-  int ASSIGNMENT_OPERATOR = 56;
+  int ASSIGNMENT_OPERATOR = 58;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.ShiftOperator <em>Shift Operator</em>}' enum.
@@ -1987,7 +2061,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getShiftOperator()
    * @generated
    */
-  int SHIFT_OPERATOR = 57;
+  int SHIFT_OPERATOR = 59;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.AdditiveOperator <em>Additive Operator</em>}' enum.
@@ -1997,7 +2071,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getAdditiveOperator()
    * @generated
    */
-  int ADDITIVE_OPERATOR = 58;
+  int ADDITIVE_OPERATOR = 60;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.MultiplicativeOperator <em>Multiplicative Operator</em>}' enum.
@@ -2007,7 +2081,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getMultiplicativeOperator()
    * @generated
    */
-  int MULTIPLICATIVE_OPERATOR = 59;
+  int MULTIPLICATIVE_OPERATOR = 61;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.UnaryOperator <em>Unary Operator</em>}' enum.
@@ -2017,7 +2091,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getUnaryOperator()
    * @generated
    */
-  int UNARY_OPERATOR = 60;
+  int UNARY_OPERATOR = 62;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.RelationalOperator <em>Relational Operator</em>}' enum.
@@ -2027,7 +2101,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getRelationalOperator()
    * @generated
    */
-  int RELATIONAL_OPERATOR = 61;
+  int RELATIONAL_OPERATOR = 63;
 
   /**
    * The meta object id for the '{@link org.yakindu.sct.model.stext.stext.TimeUnit <em>Time Unit</em>}' enum.
@@ -2037,7 +2111,7 @@ public interface StextPackage extends EPackage
    * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getTimeUnit()
    * @generated
    */
-  int TIME_UNIT = 62;
+  int TIME_UNIT = 64;
 
 
   /**
@@ -2310,6 +2384,48 @@ public interface StextPackage extends EPackage
    */
   EClass getTransitionReaction();
 
+  /**
+   * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.EntryPointSpec <em>Entry Point Spec</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Entry Point Spec</em>'.
+   * @see org.yakindu.sct.model.stext.stext.EntryPointSpec
+   * @generated
+   */
+  EClass getEntryPointSpec();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.yakindu.sct.model.stext.stext.EntryPointSpec#getEntrypoint <em>Entrypoint</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Entrypoint</em>'.
+   * @see org.yakindu.sct.model.stext.stext.EntryPointSpec#getEntrypoint()
+   * @see #getEntryPointSpec()
+   * @generated
+   */
+  EAttribute getEntryPointSpec_Entrypoint();
+
+  /**
+   * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.ExitPointSpec <em>Exit Point Spec</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for class '<em>Exit Point Spec</em>'.
+   * @see org.yakindu.sct.model.stext.stext.ExitPointSpec
+   * @generated
+   */
+  EClass getExitPointSpec();
+
+  /**
+   * Returns the meta object for the attribute '{@link org.yakindu.sct.model.stext.stext.ExitPointSpec#getExitpoint <em>Exitpoint</em>}'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return the meta object for the attribute '<em>Exitpoint</em>'.
+   * @see org.yakindu.sct.model.stext.stext.ExitPointSpec#getExitpoint()
+   * @see #getExitPointSpec()
+   * @generated
+   */
+  EAttribute getExitPointSpec_Exitpoint();
+
   /**
    * Returns the meta object for class '{@link org.yakindu.sct.model.stext.stext.EventSpec <em>Event Spec</em>}'.
    * <!-- begin-user-doc -->
@@ -3659,6 +3775,42 @@ public interface StextPackage extends EPackage
      */
     EClass TRANSITION_REACTION = eINSTANCE.getTransitionReaction();
 
+    /**
+     * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.EntryPointSpecImpl <em>Entry Point Spec</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.yakindu.sct.model.stext.stext.impl.EntryPointSpecImpl
+     * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getEntryPointSpec()
+     * @generated
+     */
+    EClass ENTRY_POINT_SPEC = eINSTANCE.getEntryPointSpec();
+
+    /**
+     * The meta object literal for the '<em><b>Entrypoint</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute ENTRY_POINT_SPEC__ENTRYPOINT = eINSTANCE.getEntryPointSpec_Entrypoint();
+
+    /**
+     * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.ExitPointSpecImpl <em>Exit Point Spec</em>}' class.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @see org.yakindu.sct.model.stext.stext.impl.ExitPointSpecImpl
+     * @see org.yakindu.sct.model.stext.stext.impl.StextPackageImpl#getExitPointSpec()
+     * @generated
+     */
+    EClass EXIT_POINT_SPEC = eINSTANCE.getExitPointSpec();
+
+    /**
+     * The meta object literal for the '<em><b>Exitpoint</b></em>' attribute feature.
+     * <!-- begin-user-doc -->
+     * <!-- end-user-doc -->
+     * @generated
+     */
+    EAttribute EXIT_POINT_SPEC__EXITPOINT = eINSTANCE.getExitPointSpec_Exitpoint();
+
     /**
      * The meta object literal for the '{@link org.yakindu.sct.model.stext.stext.impl.EventSpecImpl <em>Event Spec</em>}' class.
      * <!-- begin-user-doc -->

+ 178 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/EntryPointSpecImpl.java

@@ -0,0 +1,178 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl;
+
+import org.yakindu.sct.model.stext.stext.EntryPointSpec;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Entry Point Spec</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.EntryPointSpecImpl#getEntrypoint <em>Entrypoint</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class EntryPointSpecImpl extends ReactionPropertyImpl implements EntryPointSpec
+{
+  /**
+   * The default value of the '{@link #getEntrypoint() <em>Entrypoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntrypoint()
+   * @generated
+   * @ordered
+   */
+  protected static final String ENTRYPOINT_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getEntrypoint() <em>Entrypoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getEntrypoint()
+   * @generated
+   * @ordered
+   */
+  protected String entrypoint = ENTRYPOINT_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected EntryPointSpecImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.ENTRY_POINT_SPEC;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getEntrypoint()
+  {
+    return entrypoint;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setEntrypoint(String newEntrypoint)
+  {
+    String oldEntrypoint = entrypoint;
+    entrypoint = newEntrypoint;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT, oldEntrypoint, entrypoint));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT:
+        return getEntrypoint();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT:
+        setEntrypoint((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT:
+        setEntrypoint(ENTRYPOINT_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.ENTRY_POINT_SPEC__ENTRYPOINT:
+        return ENTRYPOINT_EDEFAULT == null ? entrypoint != null : !ENTRYPOINT_EDEFAULT.equals(entrypoint);
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (entrypoint: ");
+    result.append(entrypoint);
+    result.append(')');
+    return result.toString();
+  }
+
+} //EntryPointSpecImpl

+ 178 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/ExitPointSpecImpl.java

@@ -0,0 +1,178 @@
+/**
+ */
+package org.yakindu.sct.model.stext.stext.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.yakindu.sct.model.sgraph.impl.ReactionPropertyImpl;
+
+import org.yakindu.sct.model.stext.stext.ExitPointSpec;
+import org.yakindu.sct.model.stext.stext.StextPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Exit Point Spec</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.ExitPointSpecImpl#getExitpoint <em>Exitpoint</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExitPointSpecImpl extends ReactionPropertyImpl implements ExitPointSpec
+{
+  /**
+   * The default value of the '{@link #getExitpoint() <em>Exitpoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getExitpoint()
+   * @generated
+   * @ordered
+   */
+  protected static final String EXITPOINT_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getExitpoint() <em>Exitpoint</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getExitpoint()
+   * @generated
+   * @ordered
+   */
+  protected String exitpoint = EXITPOINT_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ExitPointSpecImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return StextPackage.Literals.EXIT_POINT_SPEC;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String getExitpoint()
+  {
+    return exitpoint;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public void setExitpoint(String newExitpoint)
+  {
+    String oldExitpoint = exitpoint;
+    exitpoint = newExitpoint;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.EXIT_POINT_SPEC__EXITPOINT, oldExitpoint, exitpoint));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case StextPackage.EXIT_POINT_SPEC__EXITPOINT:
+        return getExitpoint();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case StextPackage.EXIT_POINT_SPEC__EXITPOINT:
+        setExitpoint((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.EXIT_POINT_SPEC__EXITPOINT:
+        setExitpoint(EXITPOINT_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case StextPackage.EXIT_POINT_SPEC__EXITPOINT:
+        return EXITPOINT_EDEFAULT == null ? exitpoint != null : !EXITPOINT_EDEFAULT.equals(exitpoint);
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuffer result = new StringBuffer(super.toString());
+    result.append(" (exitpoint: ");
+    result.append(exitpoint);
+    result.append(')');
+    return result.toString();
+  }
+
+} //ExitPointSpecImpl

+ 49 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/LocalReactionImpl.java

@@ -2,16 +2,24 @@
  */
 package org.yakindu.sct.model.stext.stext.impl;
 
+import java.util.Collection;
+
 import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
+import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Trigger;
 
@@ -29,6 +37,7 @@ import org.yakindu.sct.model.stext.stext.StextPackage;
  * <ul>
  *   <li>{@link org.yakindu.sct.model.stext.stext.impl.LocalReactionImpl#getTrigger <em>Trigger</em>}</li>
  *   <li>{@link org.yakindu.sct.model.stext.stext.impl.LocalReactionImpl#getEffect <em>Effect</em>}</li>
+ *   <li>{@link org.yakindu.sct.model.stext.stext.impl.LocalReactionImpl#getProperties <em>Properties</em>}</li>
  * </ul>
  * </p>
  *
@@ -56,6 +65,16 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
    */
   protected Effect effect;
 
+  /**
+   * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getProperties()
+   * @generated
+   * @ordered
+   */
+  protected EList<ReactionProperty> properties;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -227,6 +246,20 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       eNotify(new ENotificationImpl(this, Notification.SET, StextPackage.LOCAL_REACTION__EFFECT, newEffect, newEffect));
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EList<ReactionProperty> getProperties()
+  {
+    if (properties == null)
+    {
+      properties = new EObjectContainmentEList.Resolving<ReactionProperty>(ReactionProperty.class, this, StextPackage.LOCAL_REACTION__PROPERTIES);
+    }
+    return properties;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -241,6 +274,8 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
         return basicSetTrigger(null, msgs);
       case StextPackage.LOCAL_REACTION__EFFECT:
         return basicSetEffect(null, msgs);
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
+        return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
   }
@@ -261,6 +296,8 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       case StextPackage.LOCAL_REACTION__EFFECT:
         if (resolve) return getEffect();
         return basicGetEffect();
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
+        return getProperties();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -270,6 +307,7 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
    * <!-- end-user-doc -->
    * @generated
    */
+  @SuppressWarnings("unchecked")
   @Override
   public void eSet(int featureID, Object newValue)
   {
@@ -281,6 +319,10 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       case StextPackage.LOCAL_REACTION__EFFECT:
         setEffect((Effect)newValue);
         return;
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
+        getProperties().clear();
+        getProperties().addAll((Collection<? extends ReactionProperty>)newValue);
+        return;
     }
     super.eSet(featureID, newValue);
   }
@@ -301,6 +343,9 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       case StextPackage.LOCAL_REACTION__EFFECT:
         setEffect((Effect)null);
         return;
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
+        getProperties().clear();
+        return;
     }
     super.eUnset(featureID);
   }
@@ -319,6 +364,8 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
         return trigger != null;
       case StextPackage.LOCAL_REACTION__EFFECT:
         return effect != null;
+      case StextPackage.LOCAL_REACTION__PROPERTIES:
+        return properties != null && !properties.isEmpty();
     }
     return super.eIsSet(featureID);
   }
@@ -337,6 +384,7 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       {
         case StextPackage.LOCAL_REACTION__TRIGGER: return SGraphPackage.REACTION__TRIGGER;
         case StextPackage.LOCAL_REACTION__EFFECT: return SGraphPackage.REACTION__EFFECT;
+        case StextPackage.LOCAL_REACTION__PROPERTIES: return SGraphPackage.REACTION__PROPERTIES;
         default: return -1;
       }
     }
@@ -357,6 +405,7 @@ public class LocalReactionImpl extends DeclarationImpl implements LocalReaction
       {
         case SGraphPackage.REACTION__TRIGGER: return StextPackage.LOCAL_REACTION__TRIGGER;
         case SGraphPackage.REACTION__EFFECT: return StextPackage.LOCAL_REACTION__EFFECT;
+        case SGraphPackage.REACTION__PROPERTIES: return StextPackage.LOCAL_REACTION__PROPERTIES;
         default: return -1;
       }
     }

+ 24 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextFactoryImpl.java

@@ -81,6 +81,8 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
       case StextPackage.OPERATION_DEFINITION: return createOperationDefinition();
       case StextPackage.LOCAL_REACTION: return createLocalReaction();
       case StextPackage.TRANSITION_REACTION: return createTransitionReaction();
+      case StextPackage.ENTRY_POINT_SPEC: return createEntryPointSpec();
+      case StextPackage.EXIT_POINT_SPEC: return createExitPointSpec();
       case StextPackage.EVENT_SPEC: return createEventSpec();
       case StextPackage.REGULAR_EVENT_SPEC: return createRegularEventSpec();
       case StextPackage.TIME_EVENT_SPEC: return createTimeEventSpec();
@@ -366,6 +368,28 @@ public class StextFactoryImpl extends EFactoryImpl implements StextFactory
     return transitionReaction;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EntryPointSpec createEntryPointSpec()
+  {
+    EntryPointSpecImpl entryPointSpec = new EntryPointSpecImpl();
+    return entryPointSpec;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public ExitPointSpec createExitPointSpec()
+  {
+    ExitPointSpecImpl exitPointSpec = new ExitPointSpecImpl();
+    return exitPointSpec;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->

+ 70 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/impl/StextPackageImpl.java

@@ -32,11 +32,13 @@ import org.yakindu.sct.model.stext.stext.DefaultTrigger;
 import org.yakindu.sct.model.stext.stext.Direction;
 import org.yakindu.sct.model.stext.stext.ElementReferenceExpression;
 import org.yakindu.sct.model.stext.stext.EntryEvent;
+import org.yakindu.sct.model.stext.stext.EntryPointSpec;
 import org.yakindu.sct.model.stext.stext.EventDefinition;
 import org.yakindu.sct.model.stext.stext.EventRaisingExpression;
 import org.yakindu.sct.model.stext.stext.EventSpec;
 import org.yakindu.sct.model.stext.stext.EventValueReferenceExpression;
 import org.yakindu.sct.model.stext.stext.ExitEvent;
+import org.yakindu.sct.model.stext.stext.ExitPointSpec;
 import org.yakindu.sct.model.stext.stext.Expression;
 import org.yakindu.sct.model.stext.stext.FeatureCall;
 import org.yakindu.sct.model.stext.stext.HexLiteral;
@@ -202,6 +204,20 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
    */
   private EClass transitionReactionEClass = null;
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass entryPointSpecEClass = null;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private EClass exitPointSpecEClass = null;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -858,6 +874,46 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     return transitionReactionEClass;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getEntryPointSpec()
+  {
+    return entryPointSpecEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getEntryPointSpec_Entrypoint()
+  {
+    return (EAttribute)entryPointSpecEClass.getEStructuralFeatures().get(0);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EClass getExitPointSpec()
+  {
+    return exitPointSpecEClass;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public EAttribute getExitPointSpec_Exitpoint()
+  {
+    return (EAttribute)exitPointSpecEClass.getEStructuralFeatures().get(0);
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1960,6 +2016,12 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     transitionReactionEClass = createEClass(TRANSITION_REACTION);
 
+    entryPointSpecEClass = createEClass(ENTRY_POINT_SPEC);
+    createEAttribute(entryPointSpecEClass, ENTRY_POINT_SPEC__ENTRYPOINT);
+
+    exitPointSpecEClass = createEClass(EXIT_POINT_SPEC);
+    createEAttribute(exitPointSpecEClass, EXIT_POINT_SPEC__EXITPOINT);
+
     eventSpecEClass = createEClass(EVENT_SPEC);
 
     regularEventSpecEClass = createEClass(REGULAR_EVENT_SPEC);
@@ -2155,6 +2217,8 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
     localReactionEClass.getESuperTypes().add(theSGraphPackage.getDeclaration());
     localReactionEClass.getESuperTypes().add(theSGraphPackage.getReaction());
     transitionReactionEClass.getESuperTypes().add(theSGraphPackage.getReaction());
+    entryPointSpecEClass.getESuperTypes().add(theSGraphPackage.getReactionProperty());
+    exitPointSpecEClass.getESuperTypes().add(theSGraphPackage.getReactionProperty());
     regularEventSpecEClass.getESuperTypes().add(this.getEventSpec());
     timeEventSpecEClass.getESuperTypes().add(this.getEventSpec());
     builtinEventSpecEClass.getESuperTypes().add(this.getEventSpec());
@@ -2235,6 +2299,12 @@ public class StextPackageImpl extends EPackageImpl implements StextPackage
 
     initEClass(transitionReactionEClass, TransitionReaction.class, "TransitionReaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
+    initEClass(entryPointSpecEClass, EntryPointSpec.class, "EntryPointSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getEntryPointSpec_Entrypoint(), ecorePackage.getEString(), "entrypoint", null, 0, 1, EntryPointSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+    initEClass(exitPointSpecEClass, ExitPointSpec.class, "ExitPointSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+    initEAttribute(getExitPointSpec_Exitpoint(), ecorePackage.getEString(), "exitpoint", null, 0, 1, ExitPointSpec.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
     initEClass(eventSpecEClass, EventSpec.class, "EventSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
     initEClass(regularEventSpecEClass, RegularEventSpec.class, "RegularEventSpec", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);

+ 61 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextAdapterFactory.java

@@ -20,6 +20,7 @@ import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Event;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Statement;
@@ -172,6 +173,16 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createTransitionReactionAdapter();
       }
       @Override
+      public Adapter caseEntryPointSpec(EntryPointSpec object)
+      {
+        return createEntryPointSpecAdapter();
+      }
+      @Override
+      public Adapter caseExitPointSpec(ExitPointSpec object)
+      {
+        return createExitPointSpecAdapter();
+      }
+      @Override
       public Adapter caseEventSpec(EventSpec object)
       {
         return createEventSpecAdapter();
@@ -422,6 +433,11 @@ public class StextAdapterFactory extends AdapterFactoryImpl
         return createReactionAdapter();
       }
       @Override
+      public Adapter caseReactionProperty(ReactionProperty object)
+      {
+        return createReactionPropertyAdapter();
+      }
+      @Override
       public Adapter caseStatement(Statement object)
       {
         return createStatementAdapter();
@@ -698,6 +714,36 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.EntryPointSpec <em>Entry Point Spec</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.EntryPointSpec
+   * @generated
+   */
+  public Adapter createEntryPointSpecAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.ExitPointSpec <em>Exit Point Spec</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.stext.stext.ExitPointSpec
+   * @generated
+   */
+  public Adapter createExitPointSpecAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.stext.stext.EventSpec <em>Event Spec</em>}'.
    * <!-- begin-user-doc -->
@@ -1448,6 +1494,21 @@ public class StextAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.ReactionProperty <em>Reaction Property</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see org.yakindu.sct.model.sgraph.ReactionProperty
+   * @generated
+   */
+  public Adapter createReactionPropertyAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link org.yakindu.sct.model.sgraph.Statement <em>Statement</em>}'.
    * <!-- begin-user-doc -->

+ 65 - 0
plugins/org.yakindu.sct.model.stext/src-gen/org/yakindu/sct/model/stext/stext/util/StextSwitch.java

@@ -18,6 +18,7 @@ import org.yakindu.sct.model.sgraph.Declaration;
 import org.yakindu.sct.model.sgraph.Effect;
 import org.yakindu.sct.model.sgraph.Event;
 import org.yakindu.sct.model.sgraph.Reaction;
+import org.yakindu.sct.model.sgraph.ReactionProperty;
 import org.yakindu.sct.model.sgraph.Scope;
 import org.yakindu.sct.model.sgraph.ScopedElement;
 import org.yakindu.sct.model.sgraph.Statement;
@@ -232,6 +233,22 @@ public class StextSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case StextPackage.ENTRY_POINT_SPEC:
+      {
+        EntryPointSpec entryPointSpec = (EntryPointSpec)theEObject;
+        T result = caseEntryPointSpec(entryPointSpec);
+        if (result == null) result = caseReactionProperty(entryPointSpec);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case StextPackage.EXIT_POINT_SPEC:
+      {
+        ExitPointSpec exitPointSpec = (ExitPointSpec)theEObject;
+        T result = caseExitPointSpec(exitPointSpec);
+        if (result == null) result = caseReactionProperty(exitPointSpec);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case StextPackage.EVENT_SPEC:
       {
         EventSpec eventSpec = (EventSpec)theEObject;
@@ -817,6 +834,38 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Entry Point Spec</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Entry Point Spec</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseEntryPointSpec(EntryPointSpec object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Exit Point Spec</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Exit Point Spec</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseExitPointSpec(ExitPointSpec object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Event Spec</em>'.
    * <!-- begin-user-doc -->
@@ -1617,6 +1666,22 @@ public class StextSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Reaction Property</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Reaction Property</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseReactionProperty(ReactionProperty object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Statement</em>'.
    * <!-- begin-user-doc -->

+ 14 - 21
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext

@@ -162,10 +162,10 @@ Reaction returns sgraph::Reaction:
 	LocalReaction | TransitionReaction;
 
 LocalReaction:
-	(trigger=ReactionTrigger) =>('/' effect=ReactionEffect); //('#' properties=ReactionProperties)?;
+	(trigger=ReactionTrigger) =>('/' effect=ReactionEffect);
 
 TransitionReaction:
-	{TransitionReaction} (trigger=StextTrigger)? ('/' effect=ReactionEffect)?; // ('#' properties=ReactionProperties)?;
+	{TransitionReaction} (trigger=StextTrigger)? ('/' effect=ReactionEffect)?  ('#' (properties+=TransitionProperty)*)?;
 
 
 StextTrigger returns sgraph::Trigger : ReactionTrigger | DefaultTrigger;
@@ -180,20 +180,19 @@ DefaultTrigger returns sgraph::Trigger:
 
 
 ReactionEffect returns sgraph::Effect:
-	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (=> ';' actions+=(Expression|EventRaisingExpression) )* ; // (';')?;
+	{ReactionEffect} actions+=(Expression | EventRaisingExpression) (=> ';' actions+=(Expression|EventRaisingExpression) )* ; 
 
 
-//ReactionProperties:
-//	{ReactionProperties} (properties+=ReactionProperty)*;
-//
-//ReactionProperty:
-//	EntryPointSpec | ExitPointSpec;
-//
-//EntryPointSpec:
-//	'>' entrypoint=[Entrypoint|FQN];
-//
-//ExitPointSpec:
-//	exitpoint=[Exitpoint|FQN] '>';
+TransitionProperty returns sgraph::ReactionProperty : 
+	EntryPointSpec | ExitPointSpec
+;
+
+
+EntryPointSpec:
+	'>' entrypoint=ID;
+
+ExitPointSpec:
+	exitpoint=ID '>';
 
 EventSpec:
 	RegularEventSpec | TimeEventSpec | BuiltinEventSpec;
@@ -208,9 +207,8 @@ TimeEventSpec:
 enum TimeEventType:
 	after | every;
 
-	//TODO: Group OnCycleEvent and AlwaysEvent, maybe replace it by a DoEvent
 BuiltinEventSpec:
-	EntryEvent | ExitEvent |  AlwaysEvent; // | DefaultEvent | OnCycleEvent ;
+	EntryEvent | ExitEvent |  AlwaysEvent; 
 
 EntryEvent:
 	{EntryEvent} 'entry';
@@ -218,15 +216,10 @@ EntryEvent:
 ExitEvent:
 	{ExitEvent} 'exit';
 
-//OnCycleEvent:
-//	{OnCycleEvent} 'oncycle'; 
 	
 AlwaysEvent:
 	{AlwaysEvent} ('always' | 'oncycle');
 
-//DefaultEvent:
-//	{DefaultEvent} ('default' | 'else')
-//;
 
 //****************
 // Expression Grammar